config.gem(在environment.rb中)做什么?

时间:2009-08-07 19:48:21

标签: ruby-on-rails

I've been told正在做:

config.gem 'tzinfo'

并不排除require 'tzinfo'的需要。所有宝石都是如此吗?如果是,添加config.gem WHATEVER究竟做了什么?

2 个答案:

答案 0 :(得分:12)

config.gem应该导致自动需要gem。您不需要进行手动“要求”呼叫。

config.gem

  1. 告诉Rails自动加载此gem
  2. 告诉Rails应用程序需要这个gem,以便rake gems:install将安装它
  3. :source选项可以告诉rails从非标准存储库中获取它
  4. :lib选项可以告诉rails从gem加载一个非标准文件(即没有以gem命名的东西)

答案 1 :(得分:4)

如果我是正确的,在环境初始化期间'config.gem'允许您的应用程序在应用程序中设置并要求GEM依赖项,而无需手动安装它们。 (正如我们之前所做的那样)通过像上面那样调用“config.gem tzinfo”,它会自动地要求应用程序中的gem。这有助于您部署到外部服务器并需要准备应用程序以及必要的宝石等。然后您可以运行RAKE GEMS:INSTALL并且rails将拉入您的所有宝石并需要它们。

值得注意的是,如果您不希望在整个应用中需要宝石。然后在config.gem之后添加“:lib => false”,即(config.gem'tzinfo':lib => false)。

在某些情况下,(我按照您的链接)如果您正在获得未初始化的宝石,并且您已手动安装它。确保config.gem“:lib”目录与gem的正确:lib目录匹配。 I.E宝石可以打包并安装为“nlewis-supergem”,但我可能需要将lib指向“supergem”。即“config.gem”nlewis-supergem“:lib =>”supergem“。这完全取决于一些人如何打包他们的宝石和相应的库。

快速提示不是手动安装,而是始终通过“config.gem”安装gem,然后在部署之前调用GEMS:INSTALL以捕获任何奇怪的错误。

希望这有帮助。