vla*_*hid 5 ruby rmagick rubymine
我在Windows 7上遇到RubyMine 4.0.1的问题.每次我从RubyMine运行包含唯一行的ruby脚本
require 'rmagick'
Run Code Online (Sandbox Code Playgroud)
我收到了
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>'
Run Code Online (Sandbox Code Playgroud)
但是当我从cmd运行相同的脚本时,一切正常.我试图改变运行配置,调整环境变量,但似乎没有任何工作.
事实证明,问题是由更新的系统PATH环境未传递给RubyMine进程引起的.PATH仅在机器重启后才传递新值(注销也应该有帮助).
要在Windows系统上调试此类问题,使用诸如Process Explorer(允许验证实际过程环境)和Rapid Environment Editor(允许轻松编辑环境和检测路径中的错误)等工具非常方便.
通常只需重新启动流程就可以考虑环境变量,但是如果使用某个自定义启动器(资源管理器),新进程可能仍会继承其环境,并且还需要重新启动父进程,或者注销/重启.
在这种特殊情况下,用户已更新系统PATH环境以包含包含所需DLL 的ImageMagick目录RMagick2.so,但是RubyMine进程PATH在IDE重新启动后没有获得新值,并且仍在使用没有ImageMagick DLL的值.系统重启后,RubyMine开始使用新PATH值,rmagickgem能够找到所有依赖项.