将文件加载到rails控制台,可以访问此文件中定义的变量

时间:2011-10-22 14:36:21

标签: ruby-on-rails ruby console irb

我使用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 个答案:

答案 0 :(得分:17)

加载文件时,文件加载后局部变量超出范围,这就是为什么a和b在加载文件的控制台中不可用的原因。

因为你把a和b视为常数,所以如何将它们大写如此

A = 1
B = 2
puts A+B

现在在您的控制台中,您应该可以执行以下操作

load 'myfile.rb'
A #=> 1

或者,您可以在myfile.rb中创建变量global($ a,$ b)

答案 1 :(得分:0)

首先,你应该使用irbrc。请阅读更多here,例如。

然后你可以在你的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