Ruby on Windows path for требует в dir не работает - PullRequest
4 голосов
/ 18 ноября 2011

У меня есть небольшая ruby-программа, которая require хранит файлы в одном каталоге.Программа отлично работает на моем Mac, и когда я запускаю тестовый скрипт ruby ​​без каких-либо требований, он тоже работает.Похоже, что программа ruby ​​не ищет файл в текущем каталоге по умолчанию.например, . реж.В Windows, где мне нужно обновить это, чтобы ruby ​​выглядел в текущем каталоге для require?

Ответы [ 3 ]

7 голосов
/ 18 ноября 2011

Скорее всего, ваш Mac работает под управлением Ruby 1.8, а Windows работает под управлением Ruby 1.9.Начиная с версии 1.9, путь загрузки по умолчанию больше не включает текущий каталог.Обычной практикой является добавление этого в верхнюю часть вашего файла ruby ​​до того, как вы потребуете инструкции

$LOAD_PATH.unshift File.dirname(__FILE__)
require 'my_file.rb'

Вы также можете использовать сокращение $: вместо $LOAD_PATH:

$:.unshift File.dirname(__FILE__)

Другой альтернативой является добавление пути загрузки в командной строке:

ruby -I. my_ruby_file.rb
3 голосов
/ 18 ноября 2011

Хорошо, теперь я понимаю, начиная с 1.9.2, по причинам «безопасности», которые они не позволяют, требуют, чтобы они так больше работали. Самый странный способ, который я нашел, чтобы решить это странным образом, это поставить «./» перед каждым требованием.

, например

require "./myfile.rb"
0 голосов
/ 18 ноября 2011

"." был удален из $: был удален из Ruby 1.9.2, если быть точным. Do

puts RUBY_VERSION
puts $:.inspect

на Ruby 1.8 (что установлено на вашем Mac) и Ruby 1.9.2 (что установлено на вашем компьютере с Windows), если вы мне не верите.

Почему Ruby 1.9.2 удаляет "." из LOAD_PATH, и какова альтернатива? обсуждает, почему "." был удален.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...