6

ruby 1.9.2p320 rails 3.0.8 Fedora release 16 (Verne)

做过:

yum install imagemagick yum install ImageMagick-devel gem install RMagick 完全没有问题

我可以从独立的 Ruby 程序运行 RMagick,但是 Rails 中的 Ruby(使用相同的解释器)找不到 RMagick:

gremlin:eric car01 $ irb
irb(main):001:0> 需要“RMagick”
=> 真
irb(main):002:0> Magick::Version
=>“RMagick 2.13.1”
irb(main):003:0> $".grep(/Magick/)
=> ["/usr/local/lib/ruby/gems/1.9.1/gems/rmagick-2.13.1/lib/RMagick2.so", "/usr/local/lib/ruby/gems/1.9.1/ gems/rmagick-2.13.1/lib/RMagick.rb"]
irb(主):004:0>
gremlin:eric cars01 $ 导轨控制台
加载开发环境(Rails 3.0.8)
irb(main):001:0> 需要'rubygems'
=> 无
irb(main):002:0> 需要“RMagick”
LoadError:没有要加载的文件——RMagick
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.8/lib/active_support/dependencies.rb:239:in `require'
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.8/lib/active_support/dependencies.rb:239:in `block in require'
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.8/lib/active_support/dependencies.rb:225:in `block in load_dependency'
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.8/lib/active_support/dependencies.rb:596:in `new_constants_in'
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.8/lib/active_support/dependencies.rb:225:in `load_dependency'
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/activesupport-3.0.8/lib/active_support/dependencies.rb:239:in `require'
    来自 (irb):2
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.8/lib/rails/commands/console.rb:44:in `start'
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.8/lib/rails/commands/console.rb:8:in `start'
    来自 /usr/local/lib/ruby/gems/1.9.1/gems/railties-3.0.8/lib/rails/commands.rb:23:in `<top (required)>'
    来自脚本/rails:6:in `require'
    来自脚本/rails:6:in `'

如果我将 RMagick 放在 Gemfile 中,无论有没有它的版本,bundle 都会说它在机器上找不到 gem。但它适用于其他宝石。

任何人都知道为什么 Ruby 可以在 Rails 之外加载 RMagick 但不能在其中加载?

同时,在加载之前在 $: 上推送 RMagick 路径的超酷解决方法可以工作。

4

2 回答 2

3

在您的 Gemfile 中添加这一行

gem "rmagick"

然后bundle install

于 2012-07-09T07:56:12.260 回答
1

您的问题是您可能有 2+ ruby​​,请检查以下内容:

  • 哪个红宝石
  • 哪个irb
  • 哪个捆绑
  • 哪个宝石

他们肯定在不同的地方。您必须确保他们使用相同的环境。

于 2012-07-10T08:09:35.937 回答