Не удается запустить с помощью RubyMine - PullRequest
5 голосов
/ 23 марта 2012

У меня проблема с RubyMine 4.0.1 в Windows 7. Каждый раз, когда я запускаю скрипт ruby ​​из RubyMine, который содержит единственную строку

require 'rmagick'

Я получаю

LoadError: 126: The specified module could not be found.   - C:/Ruby193/lib/ruby/gems/1.9.1/gems/rmagick-2.13.1/lib/RMagick2.so
    from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `require'
    from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require'
    from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from C:/Ruby193/lib/ruby/gems/1.9.1/gems/rmagick-2.13.1/lib/RMagick.rb:11:in `<top (required)>'
    from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `require'
    from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require'
    from C:/Ruby193/lib/ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from (irb):1
    from C:/Ruby193/bin/irb:12:in `<main>'

Но когда я запускаю тот же скрипт из cmd, все работает просто отлично. Я пытался изменить настройки запуска, настраивая переменные среды, но, похоже, ничего не получалось.

1 Ответ

5 голосов
/ 24 марта 2012

Оказалось, что проблема была вызвана обновленной системной PATH средой, не переданной процессу RubyMine. Новое значение PATH было передано только после перезагрузки компьютера (выход из системы также должен помочь).

Для устранения таких проблем в системе Windows удобно использовать такие инструменты, как Process Explorer (позволяет проверить фактическую среду процесса) и Rapid Environment Editor (позволяет легко редактировать среду и обнаруживает ошибки в путях).

Обычно достаточно перезапустить процесс, чтобы учесть изменения переменных среды, но в случае использования некоторого пользовательского средства запуска (проводника) новый процесс может все еще наследовать свою среду, и ему также необходимо перезапустить родительский процесс, или выход из системы / перезагрузки.


В этом конкретном случае пользователь обновил системную среду PATH, включив в нее каталог ImageMagick , содержащий библиотеки DLL, необходимые для RMagick2.so, однако процесс RubyMine не получил новое значение PATH после перезапуска IDE и все еще использовал значение без библиотек ImageMagick. После перезагрузки системы RubyMine начал использовать новое значение PATH, и гем rmagick смог найти все зависимости.

...