2010-02-11 41 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