既存のキー (Poison) を使用して入力をマップに解析するライブラリを使用しています。なんらかの理由で、本番環境ではキーが存在しないと見なされ、その理由がわかりません。新人ではない誰かが、何が起こっているのかを理解するのを喜んで手伝ってくれることを望んでいるいくつかの情報があります。
1:
IEX セッション (iex -S mix) を実行すると、問題なく :erlang.binary_to_existing_atom("first_name", :"utf8") を実行できます。しかし、本番環境では、代わりに
** (ArgumentError) argument error
:erlang.binary_to_existing_atom("first_name", :utf8)
2:
:first_name
プロダクションの直前に実行できますが:erlang.binary_to_existing_atom
、それまでにアトムが作成されているため、正常に動作します。しかし:first_name
、ライブラリのメソッドに続いて実行することはできませんPoison.Parser.parse!(~s(#{body}), keys: :atoms!)
。エラーがスローされるため、これは奇妙です。
3:
私は Heroku を使用していますが、それが重要かどうかはわかりません。アトムはEctoモデル内で定義されていますが、それが重要かどうかもわかりません。どんな助けでも大歓迎です-事前に感謝します!