config.gem需要gem?

时间:2009-10-12 23:25:39

标签: ruby-on-rails rubygems

我的environment.rb文件中有一堆config.gem语句:

config.gem "fastercsv", :version => "~>1.5.0"
  config.gem "parseexcel", :version => "~>0.5.2"
  config.gem "geokit", :version => "~>1.4.1"
  config.gem "facebooker", :version => "~>1.0.50"

...

如果我“rake gems:install”,那么我会遇到这个问题: 耙子流产了! 没有这样的文件要加载 - fastercsv

嗯......我知道没有这样的文件要加载,因为我正在尝试安装它。我怀疑这可能是由于我的要求所在。我的lib目录中有一个模块:

module SmartContactsImporter

  require 'fastercsv'
  require 'parseexcel'
...

也许Rails不喜欢我需要宝石,但它似乎很愚蠢,因为你的模块依赖于宝石是没有错的。关于如何解决这个问题的任何想法?

更新 事实证明,这个问题也发生在机械化,geokit,并且列表仍在继续。有点奇怪的是,config.gem开箱即用并不容易。仅供我,我没有冻结我的宝石。

2 个答案:

答案 0 :(得分:2)

如果您在SmartContactsImporter中遗漏了要求,那么这应该可行(config.gem "fastercsv"将为您执行此要求)。

如果require需要environment.rb并且:

,则可以解决此问题
begin
  require "rack/cache"
rescue LoadError
  STDERR.puts "not loaded rack/cache: #{$!}"
end

这很难看,但确实可以解决问题。

答案 1 :(得分:0)

你不应该在你的模块内部,config.gem会要求你。

还有一个与config.gem相关的问题,它会在安装宝石时尝试要求尚未安装的依赖gem,但这似乎并非如此。