ENV
に存在しないキーが要求された場合にエラーを発生させるために、ENV
をテンプレートメソッド内でシャドウしたいと思います。明らかに、特定のメソッド(特定のバインド)の中でのみ、他の場所で定数をシャドーしたくありません。これも可能ですか?バインディング内のトップレベル定数をシャドーする
説明者: - 私はHash#fetch
の存在について知っており、いつもどこでも使用しています。しかし、私はこれをERBテンプレートで使用して、設定ファイルを生成します。この設定ファイルは通常より多くの人が触れている可能性があります。誰もハッシュキーが見つからない場合にnil
を返すRubyの動作に精通しているわけではありません。私はまた、後半の構成ミス(または誤った構成やフォーマットの誤解)が顕著な製造不良を引き起こしたシステムに取り組んでいます。失敗はオペレータのエラーでした。したがって、私はそのテンプレート内でのみ、募金の原因となる大会を設立したいと考えています。さらにstrict_env
という宝石は既にありますが、ENV
の代わりにSTRICT_ENV
を使用することを覚えておかなければなりません。この特定のワークフローのためのすべての "you have to"ステートメントは、この特定のケースでは赤い旗私はもっと頑強にしたいからね。もちろん、より厳密なテンプレート言語を選択し、その言語のロジックを使用して(たとえばMustache)、チームはすでにERBに精通しているので、RailsはERBテンプレートのYMLを実行可能な設定アプローチとして推奨しますあなたはそれに同意しないかもしれませんが)私はあまりにもそのワークフローに固執することができればいいです。だから私はENV[]
の動作をローカルで変更したいのです。
いくつかのコードが役立つだろう。テンプレート方法がどのように使用されるかを概説できますか? – Stefan
いいえ、定数をシャドーすることはできません。しかし、これは[XY問題](http://xyproblem.info/)のように聞こえる。定数をシャドーする方法を尋ねるのではなく、あなたが解決しようとしている問題の詳細とこれまでに書いたコードを提供してください。 –
つまり、 "shadow"と同じ定義を使用しているとします(外部スコープからの変数と同じ名前のローカルスコープ内の変数を定義し、それがあいまいになるなど)元の変数)。繰り返しますが、いくつかのコードは、私たちがあなたを助けるのを助けるために遠くに行くでしょう。 –