2011-10-22 1 views
13

레일 콘솔로 작업하고 종종 루비 코드를 미리로드해야합니다.이 파일에 정의 된 변수에 액세스 할 수있는 레일 콘솔에 파일로드

#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'변수에 액세스 할 수 있습니다 내 콘솔을 실행?

답변

15

파일이로드 된 후에 변수가 범위를 벗어나므로로드하는 콘솔에서 a와 b를 사용할 수 없습니다. 당신이 상수로 a와 b를 치료하고 있기 때문에

방법 다음을

load 'myfile.rb' 
A #=> 1 

다른 방법으로 당신이 할 수있는 당신이 할 수 있어야 콘솔에 바로 지금 너무

A = 1 
B = 2 
puts A+B 

처럼 그들을 활용에 대한 myfile.rb의 변수 global ($ a, $ b)

+0

고마워요! 도움이되었습니다. –

+2

또한이 파일에서 @a 및 @b와 같은 vars에 액세스하여 irb 콘솔에서 사용할 수 있습니다 .-) – FireDragon

0

먼저 irbrc를 사용해야합니다. 예를 들어 here을 더 읽으십시오.

그런 다음 당신은 당신의 변수를 조롱하기 위해 irbrc의 방법을 정의 할 수 있습니다 :

def a 
[1, 2, 4] 
end 

을하지만 같은 특정 루비 클래스에 메소드를 추가하는 것을 선호 : 로컬 파일을로드 할 때

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