Загрузить файл в консоль rails с доступом к переменным, определенным в этом файле - PullRequest
14 голосов
/ 22 октября 2011

Я работаю с консолью rails и часто мне нужно предварительно загрузить код ruby ​​для работы.

#file that i want to load in rails console
#my_file.rb
a = 1
b = 2
puts a + b 

Когда я запускаю консоль с ./script/console

rails-console :001 > load 'my_file.rb' 
3
 => []
rails-console :002 > a
NameError: undefined local variable or method 'a' for #<Object:123445>

Как я могу получить доступ к моим переменным 'a' и 'b' в консоли?

Ответы [ 2 ]

17 голосов
/ 22 октября 2011

Когда вы загружаете файл, локальные переменные выходят из области видимости после загрузки файла, поэтому a и b будут недоступны в консоли, которая его загружает.

Поскольку вы рассматриваете a и b как константы, как насчет того, чтобы просто использовать их как прописные?

A = 1
B = 2
puts A+B

Теперь в вашей консоли вы сможете сделать следующее

load 'myfile.rb'
A #=> 1

Вы также можете сделать переменные в myfile.rb глобальными ($ a, $ b)

0 голосов
/ 22 октября 2011

Прежде всего, вы должны использовать irbrc. Пожалуйста, прочитайте больше здесь например.

Тогда вы можете определить метод в вашем irbrc для проверки ваших переменных:

def a
 [1, 2, 4]
end

но я предпочитаю добавлять методы к определенным классам Ruby, таким как:

class Array
  def self.toy(n=10,&block)
    block_given? ? Array.new(n,&block) : Array.new(n) {|i| i+1}
  end
end 
...