【发布时间】:2010-03-18 01:17:45
【问题描述】:
我正在尝试使用acts_as_audited 插件。我应该将它安装为 gem(放在 environment.rb 中)还是插件?
一个比另一个有什么优势。稍后我计划将此应用程序放在客户端服务器上以进行永久托管。所以我最好把它当作宝石吗?如果它是宝石……当我将应用程序放在客户端服务器上时……我不必再次获取此插件吗?
【问题讨论】:
标签: ruby-on-rails plugins
我正在尝试使用acts_as_audited 插件。我应该将它安装为 gem(放在 environment.rb 中)还是插件?
一个比另一个有什么优势。稍后我计划将此应用程序放在客户端服务器上以进行永久托管。所以我最好把它当作宝石吗?如果它是宝石……当我将应用程序放在客户端服务器上时……我不必再次获取此插件吗?
【问题讨论】:
标签: ruby-on-rails plugins
一般来说,gem 是一种更强大且受支持的向应用添加功能的方式。 Web 上有一个完整的基础架构并内置在 Rails 中,可以使用插件不存在的 gem。
例如,如果您使用 gem,您将获得用于处理 gem 的整套 Rake 任务。
在您的项目根目录中,运行...
$ rake -T gem
(in /Users/username/project/someproject)
rake gems # List the gems that this rails application depends on
rake gems:build # Build any native extensions for unpacked gems
rake gems:build:force # Force the build of all gems
rake gems:install # Installs all required gems.
rake gems:refresh_specs # Regenerate gem specifications in correct format.
rake gems:unpack # Unpacks all required gems into vendor/gems.
rake gems:unpack:dependencies # Unpacks all required gems and their dependencies into vendor/gems.
rake rails:freeze:gems # Lock this application to the current gems (by unpacking them into vendor/rails)
您还可以在 environment.rb 文件中指定 gem 依赖项。这使您能够自动安装它们...
$ rake gems install
gem 相对于插件的另一个优势是,在系统级别上,您可以使用 gem 实用程序来维护 gem,从而使事情变得更容易。
如果它是一颗宝石......当我把 客户端服务器上的应用程序..我不会 必须重新获得这个插件吗?
您可以将 gem“冻结”到您的应用中,并将它们作为应用的一部分进行部署,而无需在系统上安装它们。如果您这样做,除非您想将其升级到较新的版本,否则您不必再次获取 gem 或插件。
【讨论】:
据我了解,两者的行为完全不同:
所以在你的情况下,我更喜欢使用插件,而不是 gem。
【讨论】:
vendor/gems。
您可能会发现调试插件比调试 gem 更容易。如果您需要在 IDE 中搜索应用树中的代码,这也很好。
我发现在代码发布后安装用于开发和过渡到 gems 的插件很好。
【讨论】:
$ bundle open gem_name 即可打开它