【问题标题】:in rails should i be installing as a gem or a plugin在 Rails 中我应该安装为 gem 还是插件
【发布时间】:2010-03-18 01:17:45
【问题描述】:

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

一个比另一个有什么优势。稍后我计划将此应用程序放在客户端服务器上以进行永久托管。所以我最好把它当作宝石吗?如果它是宝石……当我将应用程序放在客户端服务器上时……我不必再次获取此插件吗?

【问题讨论】:

    标签: ruby-on-rails plugins


    【解决方案1】:

    一般来说,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 或插件。

    【讨论】:

      【解决方案2】:

      据我了解,两者的行为完全不同:

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

      所以在你的情况下,我更喜欢使用插件,而不是 gem。

      【讨论】:

      • 宝石很容易被冻结成vendor/gems
      【解决方案3】:

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

      我发现在代码发布后安装用于开发和过渡到 gems 的插件很好。

      【讨论】:

      • 有了 bundler,调试 gem 变得非常容易。只需输入$ bundle open gem_name 即可打开它
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-10
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      • 2017-11-26
      • 1970-01-01
      • 2016-11-01
      相关资源
      最近更新 更多