1

最近、自家製の構成モジュールを Configatron に置き換えましたが、1 つのユース ケースを機能させることができません。

configatron 値を Object.const_get の引数として使用しようとすると、次のようになります。

def formatter_class
  Object.const_get(configatron.formatter)
end

次のエラーが表示されます。

file.rb:10:in `const_get': can't convert Configatron::Store to String 
  (Configatron::Store#to_str gives Configatron::Store) (TypeError)

configatron の割り当ては次のようになります (簡略化)。

configatron.formatter = case
                          when condition?
                            'ExportFormat'
                          else
                            'ScreenFormat'
                        end

してもconfigatron.formatter = 'ScreenFormat'、同じエラーが発生します。

私もformatter_class方法のバリエーションを試しました。これは失敗します:

def formatter_class
  Object.const_get(configatron['formatter'])
end

もちろん、これは成功しますが、私のユースケースには当てはまりません:

def formatter_class
  Object.const_get('ScreenFormat')
end

私は何を間違っていますか?

4

2 に答える 2

2

問題を解決しました。呼び出すことができ、初期化されていない場合configatron.whateverは a を返しConfigatron::Storeます。

configatron.has_key? 'formatter'値にアクセスする前に呼び出しを挿入しました。false が返されたとき、値がまだ初期化されていないコード パスでエラーが発生していることがわかりました。値を初期化すると、エラーは発生しなくなりました。

于 2014-11-13T16:13:50.323 に答える
0

.yml 構成ファイルが見つからない場合に発生します。または、探しているキーがそこにありません。

位置: /config/NAME.yml

于 2020-08-18T21:45:37.293 に答える