2017-02-07 14 views
0

私は定数を取得したい私のスクリプトで定義されて、私はこのような二つのファイルがあるとします。スクリプトで定義された定数だけを取得する方法はありますか?

script_two.rb

TWO = 'this is 2' 

script_one.rb

require_relative 'script_two' 

ONE = 'this is 1' 
# Check for constants 

を私がしたいです定数の配列を取得する方法を知ってください[ONE, TWO](順序は関係ありません)。

私は私が最初にその結果を維持するものと考えると、必要とした後、再度それを呼び出すなど、Object.constantsは、現在の定数の配列を与えるが、それはTRUEのような他の定数の多くが含まれ、NILこと

を知っています違いを生み出すことができます。しかし、それは少し醜いです、別の方法はありませんか?

+0

[Rubyは、一定\ _addedフックメソッドを提供していますか?](http://stackoverflow.com/questions/17407908/does-ruby-provide-a-constant-added-hook-method)の可能性の重複 – phoet

+0

私は重複としてそれを表示されませんが、それは関連しています。主な相違点は、私がフックしたくない、または私が望むすべての定数を得ることではないということです** **定数** – Redithion

答えて

3

これは、クラスを持たないので、あなたの定数をメインに配置しているので、難しいです:Objectあなたのスクリプトを実行するとき。したがって、スクリプトが実行される前に定数が定義されているかどうかを知る必要があります。このような何かが動作します:[TWO、ONE] - 私はあなたが欲しいものであると信じて:配列を生成

#script_one.rb 
obj_cons = Object.constants 
require_relative 'script_two' 

ONE = 'this is 1' 
puts self.class.constants - obj_cons 

$ ruby script_one.rb 
TWO 
ONE 
+0

他の方法はありません...ありがとう! – Redithion

関連する問題