2011-10-22 8 views
13

Trabajo con la consola de rieles y, a menudo, necesito precargar algún código de ruby ​​para trabajar.Cargar archivo a la consola de rieles con acceso a las variables definidas en este archivo

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

cuando corro mi consola con ./script/console

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

¿Cómo puedo acceder a mi variables 'b' en la consola 'a' y?

Respuesta

15

Al cargar un archivo local las variables salen del alcance después de que se carga el archivo; es por eso que a y b no estarán disponibles en la consola que lo carga.

Puesto que usted está tratando a y b como constantes ¿Qué tal capitalizando ellos al igual que

A = 1 
B = 2 
puts A+B 

Ahora en que consola que debería ser capaz de hacer lo siguiente

load 'myfile.rb' 
A #=> 1 

Alternativamente, usted podría hacer las variables en myfile.rb global ($ a, $ b)

+0

¡Gracias! Eso ayudo. –

+2

también puede acceder a vars como @a y @b en este archivo y usarlos en la consola irb :-) – FireDragon

0

Antes que nada, debe usar un irbrc. Por favor, lea más here por ejemplo.

Posteriormente, se podría definir un método en su irbrc para burlarse de sus variables:

def a 
[1, 2, 4] 
end 

pero prefiero añadir métodos a clases específicas de Ruby como:

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