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

我被告知这样做:

config.gem 'tzinfo' 

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

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

config.gem

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

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

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

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

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

希望这可以帮助。