environment.rb中的config.gem

时间:2009-06-21 23:36:40

标签: ruby-on-rails configuration rubygems environment

让我们说在Rails应用程序中你有一些你在你的应用程序中使用的宝石(我们称之为“ 主要宝石 ”)你已经为它们出售了它们可移植性。

让我们说那些“主要宝石”也需要他们自己的宝石 - 我们称之为“次要宝石”。 < / p>

在设置environment.rb时,您必须说:

config.gem 'primary-gem'

您正在使用的任何宝石。

但是,你还需要说。 。 。

config.gem 'secondary-gem'

,即使您未在应用中明确使用该宝石?

或者仅仅将gem包含在 vendor/gems 目录中,以便它可以被您的应用选中?

2 个答案:

答案 0 :(得分:5)

在部署时,rails知道您的依赖关系,因此如果您想冻结您的宝石,那么您可以运行

rake gems:unpack:dependencies

将它们冻结到供应商目录中。

在运行时,加载它的依赖项是gems的工作,通常gems会这样做,所以config.gem“primary”应该可以工作。

答案 1 :(得分:2)

不,你没有,或者至少你不应该。每个GEM规范都应该包含它自己的依赖列表。安装主gem时,RubyGems会自动在级联上安装每个gem依赖项。

换句话说,如果A要求B需要C + D,你只需要写

config.gem 'A'

当命令

gem install A
运行

,RubyGems将解析所有依赖项并安装它们。 您可以查看所有运行的A依赖项(来自Rails项目)

rake gems

有时候,GEM作者可能会忘记在规范中包含一些GEM依赖项。在这种情况下,您应该在environment.rb中指定它们以强制应用程序安装它们。当然,与GEM维护人员联系也是一个好主意,以便解决问题。