2010-02-11 40 views
2

運行命令jruby -S spec提供了以下錯誤JRuby在哪裏查找腳本?

No such file, directory, or command -- spec 

規範的位置是/usr/bin,其在路徑中。 Rspec已安裝。 MRI Ruby可以找到腳本。 JRuby可以找到rspec寶石。那麼,哪裏出了問題?

+0

這個問題還沒有得到正確的答案,我仍然對一個問題感興趣。 – 2011-05-18 21:55:45

回答

2

隨着最新版本的JRuby,使用-S選項時,JRuby的在3個不同位置查找文件:

  1. 在當前目錄中,
  2. 在$ JRUBY_HOME/bin中
  3. 上的路徑(不LOAD_PATH)

這可以通過在/tmp添加腳本(這裏稱爲test_it,僅僅打印hello)進行驗證:

[email protected]:~$ jruby -v 
jruby 1.6.6.dev (ruby-1.8.7-p357) (2012-01-22 9099561) (Java HotSpot(TM) 64-Bit Server VM 1.6.0_30) [linux-amd64-java] 
[email protected]:~$ jruby -S test_it 
jruby: No such file or directory -- test_it (LoadError) 
[email protected]:~$ export PATH=/tmp:$PATH 
[email protected]:~$ jruby -J-Djruby.debug.scriptResolution=true -S test_it 
Found: /tmp/test_it 
hello 

這裏debug.scriptResolution選項用於告訴我們在哪裏找到腳本。

+0

只需添加此答案即可爲此問題提供最新答案,因爲最近我遇到了類似問題。不確定原始問題是否由使用舊版JRuby引起的? – 2012-03-04 09:21:03

2

JRuby將嘗試從類路徑上的目錄加載腳本。你可以通過運行來看看它們是什麼:

jruby -e "puts $:" 

在命令行中,你可以用-I選項修改$ LOAD_PATH。或者用-r選項添加一個庫。例如:

jruby -I/usr/bin spec 

這裏是loadpath和classpath一些更多的信息:

http://kenai.com/projects/jruby/pages/ClasspathAndLoadPath

希望幫助

+0

這不起作用,/ usr/bin不在加載路徑中,也不應該是。 - 我正在使用應該查看PATH環境變量的-S選項 - 但它沒有。 – 2010-02-11 17:40:10

+0

顯然,'jruby -S'只能在'$ JRUBY_HOME/bin'中查找,不在PATH中,儘管文檔說它看起來在PATH中。 – 2010-02-11 17:57:16

+0

'cp/usr/bin/spec〜/ git/jruby/bin',它可以工作,但這確實是一個創可貼解決方案。 – 2010-02-11 18:07:06