在rails中我应该安装为gem还是插件

时间:2010-03-18 01:17:45

标签: ruby-on-rails plugins

我正在尝试使用acts_as_audited插件。我应该将它安装为gem(将其放在environment.rb中)还是插件?

一个优于另一个的优点是什么。后来我计划将这个应用程序放在客户端服务器上以进行永久托管。所以我最好把它作为宝石吗?如果它是作为一个宝石...当我把应用程序放在客户端服务器上..我不会再得到这个插件吗?

3 个答案:

答案 0 :(得分:1)

通常,gems是一种更强大且受支持的方式,可为您的应用添加功能。 Web上有一个完整的基础架构,并内置到Rails中,可以使用不适用于插件的宝石。

例如,如果您使用宝石,您将获得处理宝石的整套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或插件,除非你想将它升级到更新的版本。

答案 1 :(得分:0)

据我所知,这两者表现完全不同:

  • 该插件仅适用于您所在的应用程序。因此,如果您想在应用程序中冻结它,并希望简化交付,请使用该插件。
  • 为整个ruby安装安装了gem。因此,最好在应用程序之间共享gem。但是,您必须记住,在交付时,您必须在客户端计算机上另外安装gem。

所以在你的情况下,我宁愿使用插件,而不是宝石。

答案 2 :(得分:0)

您可能会发现调试插件与gem相比更容易。如果在您的IDE中您需要搜索应用树中的代码,那也很不错。

我发现安装插件以进行开发并在代码发布后转换为gems很不错。