让我们说在Rails应用中你有一些你在你的应用中使用的宝石(我们称之为“ 主要宝石 ”并且你已经出售了它们的便携性。

让我们说那些“主要宝石”还需要他们自己的宝石 - 我们称之为“次要宝石”。

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

config.gem 'primary-gem'

您正在使用的任何宝石。

但是,你还需要说。 。 。

config.gem 'secondary-gem'

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

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

有帮助吗?

解决方案

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

rake gems:unpack:dependencies

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

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

其他提示

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

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

config.gem 'A'

当命令

gem install A
运行

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

rake gems

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top