2017-03-30 3 views
-1

를 참조? 예를 들어, FooFoo::Bar 경우 다른 곳에서 정의되지만, Foo::Bar::Baz는 내가 좋아하는 것을 원하는 것, 하지 : 그것은 별도의 루비 프로세스를 실행하는 쉘 스크립트를 실행하는 것입니다 할구문 분석 루비 파일

parse_for_valid_class_references(File.open('model.rb', 'rb')) 
# => [Foo, Foo::Bar] 
+0

아마 https://github.com/seattlerb/ruby_parser :

class Foo; end 

다음 다른 곳이 루비 코드를 작성할 수 있습니까? –

답변

0

한 가지 방법을 , 파일을 요구하고, 어떤 상수가 추가되었는지 확인한 다음, 인쇄합니다.

당신은 파일 1.rb이있는 경우 :

require 'json' 
def constants_added_by_file(path) 
    cmd = <<-RB 
    require 'json' 
    consts = Object.constants 
    require '#{path}' 
    puts((Object.constants - consts).to_json) 
    RB 
    JSON.parse `ruby -e "#{cmd}"` 
end 

puts constants_added_by_file('./1.rb') 
# => Foo