0
モジュール属性を使用して、その場でRepo
を設定するにはどうすればよいですか?Repoをモジュール属性に割り当てる?
defmodule Test do
@repo "staging"
def repo do
case @repo do
"staging" -> alias MyApp.Schools.staging.Repo, as: SRepo
"production" -> alias MyApp.Schools.prod.Repo, as: SRepo
end
end
end
私がしなければ:たとえば 、私はstaging
とproduction
ENVSを持っTest.repo
私が手:Elixir.MyApp.Schools.staging.Repo
は ので、なぜ私はMyApp.Schools.staging.Repo
を期待していたものを持っていないのですか?あなたが本当に価値に基づいてレポを切り替えたい場合は、私はElixir.MyApp.Schools.staging.Repo
これはこのようには機能しません。 ["import/2、require/2、alias/2はディレクティブと呼ばれ、すべてがレキシカルスコープを持っているため、特定の関数の中にエイリアスを設定でき、全体のスコープには影響しません。"](https:// hexdocs .pm/elixir/Kernel.SpecialForms.html#alias/2)なぜこれをやりたいのですか?おそらく、あなたの問題を解決する別の方法があります。 – Dogbert
EDIT boveをチェックしてください。私がやろうとしているのは、要求によって送られたparamに基づいてRepoを選択的に使用することです。つまり、httpリクエストを実行するときにステージングDBとプロダクションDBがあることを確認する必要があります。送信されたパラメータに基づいてDBを選択します。 – simo
多分私がやろうとしているのはアンチパターンですか?ステージングとプロダクションの両方に対して1台のサーバーを持っているのは悪い考えですか? – simo