Rails5 で Carrierwave 使って S3 にファイルをアップロードしようとしたら、モデルを保存する際に決まったエラーが出てハマった。
> model = Model.new([画像やらなんやら])
> model.save
 => ArgumentError: wrong number of arguments (given 3, expected 1)
Carrierwaveの中身を見たりしたけどよくわからず、設定を見直すことに。
config/initializers/carrierwave.rb の設定は、ネットからパクったやつなんでちゃんと見てなかったけど、こんな行があった。
  config.cache_storage = :fog   
キャッシュも fog を通して S3 に上げますよ。っていう設定らしい。
ここで原因に気づきました。テストでファイルのアップロードを試していたのですが、テスト環境では S3 ではなくローカルに保存するよう設定を書いていた。。。
(app/uploader以下のuploaderクラスのファイル)
if Rails.env.development?
  storage :file
elsif Rails.env.test?
  storage :file
else
  storage :fog
end
結局、development と test 環境では ローカル にファイルを保存するって書いてんのに、キャッシュは fog で S3 にとるぜ、っていう設定になっているためでした。
対策としては、config/initializers/carrierwave.rb の設定を環境ごとにちゃんと分けるコト。(あたりまえのことかもしれませんが...)
if Rails.env.development?                                                                                                                   
  CarrierWave.configure do |config|
   # developmentのもろもろの設定
  end 
elsif Rails.env.test?
  CarrierWave.configure do |config|
    # testのもろもろの設定
  end 
else
  CarrierWave.configure do |config|
    # productionのもろもろの設定
    config.cache_storage = :fog # fogを使う環境だけに適用!
  end 
end
こっちに storage の設定も一緒に書いた方がいいかもしれないとも思った。
コピペで済ませようとしたせいで起きた初歩的なミスでした。