Witam wszystkich,
To mój pierwszy post na forum. Od jakiegoś miesiąca wziąłem się za naukę Rubiego , RoR. CZytam książkę Petera Coopera : “Programowanie w Ruby od podstaw”. Natknąłem dzisiaj na pewien problem, którego w żaden sposób nie umiem “pokonać” Przeglądałem różne fora , nie znalazłem jednak żadnych ciekawych rozwiązań. Chodzi o proste wydawałoby się polecenie exec :
gdy wpisuje polecenie, tak jak w książce :
exec (“pierdoly.rb”)
dostaje błąd :
Exec format error - pierdoly.rb (Errno::ENOEXEC)
Plik znajduje się w katalogu domyślnym , jest w nim zwykłe “hallo world” , nie ma mowy o literówce.
Stwierdziłem więc, że może być jakiś problem z plikami rb , więc spróbuje na pliku exe. Wpisałem :
Pierwszy błąd jest spowodowany tym, że plik nie jest wykonywalny, w windowsie pewnie będziesz musiał zrobić cos takiego
exec "ruby pierdoly.rb"
Drugi bład (No such file or directory) to już kwestia tego, że w ścieżce są spacje. Przy exists? nie ma takiego problemu, gdyż interpreter sprawdza całą ścieżkę. Przy exec to co podajesz jako argument wykona się w systemie, czyli to tak jakbyś wykonał:
C:/Program Files/QuickTime/QuickTimePlayer.exe
a powinno być:
"C:/Program Files/QuickTime/QuickTimePlayer.exe"
Dlatego w takim wypadku musiałbyś zrobić na przykład:
Dzięki za szybką odpowiedź.
Jeżeli chodzi o plik exe , zrobiłem jak napisałeś i faktycznie zadziałało.
Niestety zmiana kodu na :
exec “ruby pierdoly.rb”
zmieniła komunikat błędu na: No such file or directory
Problem rozwiązany.
Przydało sie podpowiedziane polecenie:
p ENV[‘PATH’]
Zobaczyłem , że jest tam ścieżka do dwóch różnych wersji Ruby. Odinstalowując tą starszą wszystko już działa jak należy.
Dzięki i pozdrawiam