2012-03-23 17 views
5

Mam problem z rubymine 4.0.1 na Windows 7. każdym razem biegnę ruby ​​skrypt z rubymine który zawiera tylko linięNie można uruchomić korzystając z rubymine

require 'rmagick' 

I odbieranie

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>' 

Ale kiedy uruchamiam ten sam skrypt z cmd, wszystko działa dobrze. Próbowałem zmienić konfiguracje uruchamiania, dostosowując zmienne środowiskowe, ale nic nie działało.

+0

Czy posiadasz biblioteki DLL ImageMagick w środowisku systemu 'PATH'? – CrazyCoder

+0

Tak. Wszystko działa dobrze, chyba że uruchamiam skrypt z RubyMine. – vladhid

+0

Spróbuj uruchomić skrypt z 'p ENV [" PATH "]' w linii poleceń i RubyMine, czy produkuje to samo wyjście? – CrazyCoder

Odpowiedz

5

Okazało się, że problem został spowodowany przez zaktualizowane środowisko systemu PATH, które nie zostało przekazane procesowi RubyMine. Nowa wartość PATH została przekazana dopiero po ponownym uruchomieniu komputera (wylogowanie również powinno pomóc).

Do debugowania tego rodzaju problemów w systemie Windows przydatne jest użycie takich narzędzi, jak Process Explorer (pozwala zweryfikować rzeczywiste środowisko procesu) i Rapid Environment Editor (pozwala łatwo edytować środowisko i wykrywa błędy w ścieżkach).

Zwykle wystarczy ponownie uruchomić proces, aby uwzględnić zmiany zmiennych środowiskowych, ale w przypadku użycia niestandardowego launchera (eksploratora) nowy proces może nadal dziedziczyć jego środowisko i wymagane jest ponowne uruchomienie procesu nadrzędnego, lub wyloguj/uruchom ponownie.


W tym konkretnym przypadku użytkownik aktualizowany system PATH środowisko obejmują ImageMagick katalog zawierający pliki DLL potrzebnych do RMagick2.so jednak proces rubymine nie dostał nową wartość PATH po restarcie i był IDE wciąż używają wartości bez bibliotek DLL ImageMagick. Po ponownym uruchomieniu systemu, RubyMine zaczęła używać nowej wartości PATH i klejnot był w stanie znaleźć wszystkie zależności.

+0

Przepraszamy za pisanie na tak stare pytanie, ale odkąd je znalazłem, pomyślałem, że inni też mogą, a poniższe mogą być pomocne. Problemem dla mnie była przestarzała 'PATH', ale zrestartowanie RubyMine naprawiło to, nie było potrzeby wylogowywania :) (yey, twoja muzyka może dalej grać;)) –