【问题标题】:config.gem requires gem?config.gem 需要 gem 吗?
【发布时间】:2009-10-12 23:25:39
【问题描述】:

我的 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”,则会出现以下问题: 耙中止! 没有要加载的文件——fastcsv

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

module SmartContactsImporter

  require 'fastercsv'
  require 'parseexcel'
...

也许 Rails 不喜欢我在那里需要 gem,但这似乎很愚蠢,因为让你的模块依赖于 gem 并没有错。有关如何解决此问题的任何想法?

更新 事实证明,这个问题也发生在 mechanize、geokit 上,而且这个列表还在继续。 config.gem 开箱即用并不容易,这有点奇怪。仅供参考,我不会冻结我的宝石。

【问题讨论】:

    标签: ruby-on-rails rubygems


    【解决方案1】:

    如果您在 SmartContactsImporter 中省略了要求,这应该可以工作(config.gem "fastercsv" 将为您完成要求)。

    environment.rb 中需要require 时,您可以通过以下方式解决它:

    begin
      require "rack/cache"
    rescue LoadError
      STDERR.puts "not loaded rack/cache: #{$!}"
    end
    

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

    【讨论】:

      【解决方案2】:

      你不应该在你的模块中使用它,config.gem 会为你需要它。

      还有一个与 config.gem 相关的问题,它会在安装 gems 时尝试要求一个尚未安装的依赖 gem,但现在似乎还不是这样。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-09-18
        • 1970-01-01
        • 2023-03-20
        • 2015-09-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-04
        相关资源
        最近更新 更多