Проблема, требующая гем RMagick с Ruby - PullRequest
3 голосов
/ 26 марта 2011

Я установил RMagick в системе Windows без видимых проблем, но у меня действительно проблемы с его использованием.В частности:

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 ]

6 голосов
/ 08 апреля 2011

У меня была та же проблема в Ruby 1.8.7, что и у вас с 1.9.1. Вот способ, которым я решил это:

  1. Удалите драгоценный камень rmagick, если он у вас есть (gem uninstall rmagick)
  2. Скачать http://rubyforge.org/frs/download.php/64917/RMagick-2.12.0-ImageMagick-6.5.6-8-Q8.zip
  3. Распакуйте архив в отдельную папку (например, 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" для повторного построения гема (будет сгенерирован "rmagick-2.12.0.gem")
  9. Используйте "gem install rmagick --local", чтобы установить его.
2 голосов
/ 03 мая 2011

Введите следующее:

ruby --version

Если его вывод похож на

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

это означает, что Ruby был собран с использованием mingw32, который не поддерживался RMagick.

Хотя README.html пакета RMagick-2.12.0-ImageMagick-6.5.6-8-Q8 сообщает

Ruby 1.8.6, установленный с помощью установщика в один клик.

в предварительных условиях, последний установщик в один клик построен с использованием mingw32, и это вызывает проблему.

1 голос
/ 26 марта 2011

Глядя на исходный код rubygems, похоже, что rmagick по какой-то причине некорректно отвечает на запросы rubygems о своей версии;не уверен, что.

Если вы не предоставите конкретный номер версии, rubygems будет использовать >= 0 в качестве version_requirements.

Попробуйте вместо этого, чтобы быть более явным,и так версии точно совпадают:

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