いやーよくわからないエラーメッセージとスタックトレースなんだけど。なんか深そうだし。
** (exit) an exception was raised: ** (ArgumentError) argument error :erlang.++({'content-type', 'image/png'}, []) (erlcloud) src/erlcloud_s3.erl:699: :erlcloud_s3.put_object/6 (elixir) lib/enum.ex:1043: anonymous fn/3 in Enum.map/2
とりあえず場所はここ
Eralng的な++
演算子にへんな引数渡してる感じある。なんこか試してみる
iex(17)> :erlang.++({'hoge', 'fuga'}, []) ** (ArgumentError) argument error :erlang.++({'hoge', 'fuga'}, []) iex(17)> :erlang.++({'hoge', 'fuga'}, {'foo','bar'}) ** (ArgumentError) argument error :erlang.++({'hoge', 'fuga'}, {'foo', 'bar'}) iex(17)> :erlang.++({'hoge', 'fuga'}, '') ** (ArgumentError) argument error :erlang.++({'hoge', 'fuga'}, []) iex(17)> :erlang.++({'hoge', 'fuga'}, 'aaaa') ** (ArgumentError) argument error :erlang.++({'hoge', 'fuga'}, 'aaaa') iex(18)> :erlang.++([], []) [] iex(19)> :erlang.++(["hoge", "fuga"], ["foo", "bar"]) ["hoge", "fuga", "foo", "bar"] iex(20)>
なるほど。list型を合体するやつっぽいな。で、そこにtupleを渡してしまっている。
解決
- {'content-type', 'image/png'} + [{'content-type', 'image/png'}]
DRY