2010-09-21 2 views
6

Я пытаюсь включить файл исходного кода, когда запускаю irb, но irb не может его найти.Rails irb default directory

Например, сказать, что я нахожусь в следующем каталоге в терминале:

/dan/rubyapp/ 

Предположим, у меня есть файл с именем "firstapp.rb" в/дан/rubyapp/

I запуске IRB и из irb prompt I type

> require "firstapp.rb" 

но файл не найден. Если я типа «Dir.pwd» он показывает, как

/dan/rubyapp/ 

Единственный способ я могу получить «требовать», чтобы работать, если я включаю полный путь так

> require "/dan/rubyapp/firstapp.rb" 

Это единственный способ Я могу заставить это работать? Все обучающие программы, которые я вижу в Интернете, просто «требуют имя файла», поэтому я предположил, что это сработает.


здесь выход из $: в IRB

ruby-1.9.2-p0 > $: 
=> ["/Users/Daniel/.rvm/gems/ruby-1.9.2-p0/gems/wirble-0.1.3/bin", 
"/Users/Daniel/.rvm/gems/ruby-1.9.2-p0/gems/wirble-0.1.3/lib", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby/1.9.1", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby/1.9.1/x86_64-darwin10.4.0", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/site_ruby", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby/1.9.1", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby/1.9.1/x86_64-darwin10.4.0", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/vendor_ruby", 
"/Users/Daniel/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1",  
"/Users/Daniel/.rvm/rubies/ruby- 
1.9.2-p0/lib/ruby/1.9.1/x86_64-darwin10.4.0"] 

ответ

2

Пару вещей, чтобы попробовать:

1) Отбросьте .RB с конца вашего требуют, чтобы вы есть:

require 'firstapp' 

Вы обычно не добавить .RB к требуется (только для загрузки) - посмотрите здесь для получения более подробной информации: http://www.fromjavatoruby.com/2008/10/require-vs-load.html

2) В противном случае, убедитесь, что текущий каталог на вашем пути загрузки - в IRB выполнения:

p $: 

и распечатает ваш путь загрузки рубина - проверить запись для». " (моя последняя запись)

+1

делает «$ LOAD_PATH <<». 'в моем .irbrc лучший способ сделать это? – iljkj

+0

Так что, не там? Не могли бы вы показать свой результат из p $: – Ash

+0

Извините, пропустил этот комментарий, но да, этого не было. Мне пришлось вручную добавить его в мой файл .irbc через «$ LOAD_PATH <<». »Я опубликую, как выглядел мой $: перед добавлением его в редактирование на мой вопрос. – iljkj

7

Проблема в том, что текущий рабочий каталог больше не находится на вашем пути (начиная с Ruby 1.9.2). Существует несколько способов решения этой проблемы.

1) В самом рубиновом файле вы можете использовать метод require_relative вместо require. Это загрузит файл по отношению к локации файла, содержащего require_relative метод: http://extensions.rubyforge.org/rdoc/classes/Kernel.html

require_relative 'firstapp.rb' 

Это, однако, не будет работать в IRB.

2) Другой вариант - включить текущий путь в свой аргумент в метод require. Это будет работать в irb или в рубиновом файле. Например:

require './firstapp.rb' 

Причина этого было реализовано в рубине, чтобы избежать неосторожно требуя неправильный файл, если есть разные файлы с одинаковым именем в разных каталогах в пути (подобно тому, как * Никс не включает Текущий каталог ".«на своем пути»

+1

Это помогло мне! Для того, чтобы моя работа, однако, мне пришлось использовать косую черту, поэтому 'require './firstapp.rb'' было бы более уместным. –