루비 스크립트가 IRB에서 실행중인 것을 어떻게 감지 할 수 있습니까?

StackOverflow https://stackoverflow.com/questions/2226979

  •  19-09-2019
  •  | 
  •  

문제

수업을 정의하는 루비 스크립트가 있습니다. 스크립트가 진술을 실행하고 싶습니다

BoolParser.generate :file_base=>'bool_parser'

스크립트가 실행 파일로 호출 될 때만 require'D에서 D (또는 -r). 루비 파일이로드 될 때마다 실행되는 것을 방지하기 위해 위의 진술에 무엇을 랩핑 할 수 있습니까?

도움이 되었습니까?

해결책

조건 $0 == __FILE__ ...

!/usr/bin/ruby1.8

class BoolParser

  def self.generate(args)
    p ['BoolParser.generate', args]
  end

end

if $0 == __FILE__
  BoolParser.generate(:file_base=>__FILE__)
end

... 명령 줄에서 스크립트가 실행될 때 ...

$ /tmp/foo.rb
["BoolParser.generate", {:file_base=>"/tmp/foo.rb"}]

...하지만 파일이 다른 루비 스크립트에 의해 필요하거나로드 될 때 false.

$ irb1.8
irb(main):001:0> require '/tmp/foo'
=> true
irb(main):002:0> 

다른 팁

$ 0를 사용하십시오

IRB에서 $ 0의 가치는 "IRB"입니다.

파일에서 "/path/to/file"입니다.

설명 여기

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top