2011-10-22 11 views
13

Pracuję z konsolami szynowymi i często muszę wstępnie wczytać trochę kodu ruby ​​do pracy.Załaduj plik do konsoli szyn z dostępem do zmiennych zdefiniowanych w tym pliku

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

gdy uruchamiam moją konsolę ./script/console

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

Jak mogę uzyskać dostęp do mojego 'a' i 'b' zmiennych w konsoli?

Odpowiedz

15

Po wczytaniu pliku lokalnego zmienne wykraczają poza zakres po wczytaniu pliku, dlatego a i b będą niedostępne w konsoli, która je ładuje.

Skoro traktują aib jako stałe, jak o tylko czerpanie je jak tak

A = 1 
B = 2 
puts A+B 

Teraz w pocieszyłbyś powinieneś być w stanie wykonać następujące czynności

load 'myfile.rb' 
A #=> 1 

Alternatywnie można zrobić zmienne w pliku myfile.rb global ($ a, $ b)

+0

Dziękujemy! Pomogło. –

+2

możesz również uzyskać dostęp do varów takich jak @a i @b w tym pliku i używać ich w konsoli irb :-) – FireDragon

0

Przede wszystkim należy użyć irbrc. Przeczytaj na przykład numer here.

Następnie można zdefiniować metodę w swojej irbrc drwić zmienne:

def a 
[1, 2, 4] 
end 

ale wolę dodać metody do określonych klas Ruby jak:

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