需要使用Ruby的RMagick gem的问题

时间:2011-03-26 18:48:11

标签: ruby rubygems rmagick

我在Windows系统上安装了RMagick而没有明显的问题,但我实际上在使用它时遇到了问题。特别是:

C:\Users\dancrumb> ruby -rubygems -rRMagick -e "puts Magick::Long_version"
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:900:in `report_activate_error':
RubyGem version error: rmagick(2.12.0 not >= 0) (Gem::LoadError)
        from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:248:in `activate'
        from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:212:in `rescue in try_activate'
        from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:209:in `try_activate'
        from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:57:in `rescue in require'
        from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'

主要粘贴块是看似不合逻辑的错误消息:RubyGem version error: rmagick(2.12.0 not >= 0)。除非我遗漏了什么,否则2.12.0肯定大于0。

一些有用的信息:

C:\Users\dancrumb>gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.6.2
  - RUBY VERSION: 1.9.2 (2010-12-25 patchlevel 136) [i386-mingw32]
  - INSTALLATION DIRECTORY: C:/Ruby192/lib/ruby/gems/1.9.1
  - RUBY EXECUTABLE: C:/Ruby192/bin/ruby.exe
  - EXECUTABLE DIRECTORY: C:/Ruby192/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mingw32
  - GEM PATHS:
     - C:/Ruby192/lib/ruby/gems/1.9.1
     - C:/Users/dancrumb/.gem/ruby/1.9.1
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://rubygems.org/

C:\Users\dancrumb>dir \Ruby192\lib\ruby\gems\1.9.1\gems
 Volume in drive C is TI106036W0F
 Volume Serial Number is 4432-A499

 Directory of C:\Ruby192\lib\ruby\gems\1.9.1\gems

...
03/26/2011  01:34 PM    <DIR>          rmagick-2.12.0-x86-mswin32
...
03/20/2011  08:06 PM    <DIR>          rubygems-update-1.6.2
...

提供的README文件和与RMagick相关的论坛无法提供任何见解。

它变得更奇怪了:

C:\Users\dancrumb>ruby -rubygems -e "gem 'rmagick', '2.12.0'; puts Magick::Long_
version"
C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:900:in `report_activate_error':
RubyGem version error: rmagick(2.12.0 not = 2.12.0) (Gem::LoadError)
        from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:248:in `activate'
        from C:/Ruby192/lib/ruby/site_ruby/1.9.1/rubygems.rb:1276:in `gem'
        from -e:1:in `<main>'

除了关于RMagick的具体问题,任何人都可以向我提供对版本错误的合理解释......这对我来说似乎很难解决,但也许它实际上传达了一些有用的东西......只是以坚果的方式。

3 个答案:

答案 0 :(得分:6)

我在Ruby 1.8.7中遇到了和1.9.1一样的问题。这是我解决它的一种方式:

  1. 卸载rmagick gem(gem uninstall rmagick)
  2. 下载http://rubyforge.org/frs/download.php/64917/RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zip
  3. 将zip解压缩到单独的文件夹(例如C:\ temp \ rmagick)
  4. 安装ImageMagick-6.5.6-8-Q8-windows-dll.exe
  5. 将rmagick-2.12.0-x86-mswin32.gem解压缩到单独的文件夹(例如C:\ temp \ rmagick \ gem)
  6. 将data.tar.gz解压缩到单独的文件夹(例如C:\ temp \ rmagick \ gem \ data)
  7. 打开rmagick.gemspec并使用s.platform =“mswin32”删除该行
  8. 使用“gem build rmagick.gemspec”再次构建gem(将生成“rmagick-2.12.0.gem”)
  9. 使用“gem install rmagick --local”进行安装。

答案 1 :(得分:2)

输入以下内容:

ruby --version

如果其输出类似于

ruby 1.9.2p180 (2011-02-18) [i386-mingw32]

这意味着Ruby是使用mingw32构建的,RMagick不支持。

虽然RMagick-2.12.0-ImageMagick-6.5.6-8-Q8包的README.html说

  

Ruby 1.8.6,通过One-Click安装程序安装。

在先决条件中,the latest One-Click Installer是使用mingw32构建的,这会导致问题。

答案 2 :(得分:1)

查看rubygems的源代码,看起来rmagick可能因为某些原因错误地回应了rubygems对其版本的查询;不确定是什么。

如果您未提供特定版本号,则rubygems将以>= 0version_requirements

请尝试使用此更明确的版本,因此版本完全匹配:

ruby -rubygems -e "gem 'rmagick', '2.12.0'; puts Magick::Long_version"