Где JRuby ищет скрипты? - PullRequest
       15

Где JRuby ищет скрипты?

2 голосов
/ 11 февраля 2010

Выполнение команды jruby -S spec выдает следующую ошибку

No such file, directory, or command -- spec

Расположение спецификации /usr/bin, которая находится в пути. Rspec установлен. МРТ Руби может найти сценарий. JRuby может найти драгоценный камень rspec. Так что же не так?

Ответы [ 2 ]

2 голосов
/ 04 марта 2012

В последней версии JRuby при использовании опции -S JRuby ищет файл в 3 разных местах:

  1. В текущем каталоге
  2. В $ JRUBY_HOME / bin
  3. В ПУТИ (не LOAD_PATH)

Это можно проверить, добавив скрипт (здесь он называется 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 используется, чтобы сообщить нам, где был найден скрипт.

2 голосов
/ 11 февраля 2010

JRuby попытается загрузить скрипты из каталогов на пути к классам. Вы можете увидеть, что это, запустив:

jruby -e "puts $:"

В командной строке вы можете изменить $ LOAD_PATH с опцией -I. Или добавьте библиотеку с параметром -r. Например:

jruby -I/usr/bin spec

Вот еще немного информации о loadpath и classpath:

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

Надеюсь, это поможет

...