2016-11-01 3 views
1

をブール値を返します。私は、Rubyからプロジェクトを移行しています私は働いていた、このコードを持っている2〜4のRuby 2.3のロード方法はもうロードされたクラスを返しません - 代わりに

にルビー2.3とレールに1.8.7 1.8.7のRuby 1.8.7 class_listで

class Abc 
    def ... 
end 
class Def 
... 
end 

abc.rb私のサンプルファイルがある

class_list = [] 
original_mechanism = ActiveSupport::Dependencies.mechanism 
ActiveSupport::Dependencies.mechanism = :load 
    begin 
    class_list += load("/tmp/abc.rb") 
    rescue Exception => e 
    debug e.backtrace 
    end 
ActiveSupport::Dependencies.mechanism = original_mechanism 

[ABC、デフ]

ルビー2.3 class_listで

ある [真] - (私はそれがこの出力を与える作るために 'class_list < <ロード( "を/ tmp/abc.rb")' に行を変更しなければならなかった)

どれでもそれは古い方法を戻す方法を知っていますか?私が望むのは、最後にロードされたクラスのClassNamesだけです。

答えて

1

これはRubyではありません。 Rubyのloadは常に、1.837と2.3.1の両方でtrueを返しました。しかし、(http://apidock.com/rails/v3.0.0/ActiveSupport/Dependencies/Loadable/load_dependency)を使用するActiveSupport loadがあります。これはファイルに定義されている新しい定数を返します。

ここでloadの代わりにload_dependencyを使用できますか?

+0

お返事ありがとうございました。これは機能します。 – JmG

関連する問題