JRuby在哪里寻找脚本?

时间:2010-02-11 16:52:11

标签: ruby jruby gem

运行命令jruby -S spec会出现以下错误

No such file, directory, or command -- spec

规范的位置是/usr/bin,它位于路径中。已安装Rspec。 MRI Ruby可以找到脚本。 JRuby可以找到rspec gem。出了什么问题?

2 个答案:

答案 0 :(得分:2)

JRuby将尝试从类路径上的目录加载脚本。您可以通过运行来查看这些内容:

jruby -e "puts $:"

在命令行上,您可以使用-I选项修改$ LOAD_PATH。或者使用-r选项添加库。例如:

jruby -I/usr/bin spec

以下是有关loadpath和classpath的更多信息:

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

希望有所帮助

答案 1 :(得分:2)

使用最新版本的JRuby,当使用-S选项时,JRuby会在3个不同位置查找该文件:

  1. 在当前目录中
  2. $ JRUBY_HOME / bin
  3. 在PATH(不是LOAD_PATH)
  4. 这可以通过在test_it中添加一个脚本(此处称为hello仅打印/tmp)来验证:

    sebastien@greystones:~$ 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]
    sebastien@greystones:~$ jruby -S test_it
    jruby: No such file or directory -- test_it (LoadError)
    sebastien@greystones:~$ export PATH=/tmp:$PATH
    sebastien@greystones:~$ jruby -J-Djruby.debug.scriptResolution=true -S test_it
    Found: /tmp/test_it
    hello
    

    此处debug.scriptResolution选项用于告诉我们脚本的位置。