carrierwave で新規ファイル保存
ファイルをアップロードするのではなく、例えばサーバ側で rubyXL を用いて新規ファイルを作ってそれを carrierwave の仕組み上で管理したい。
carrierwave 用に mount_uploader した変数に ActionDispatch::Http::UploadedFile を渡せば良いのだろうけど、やり方がわからない。
ActionDispatch::Http::UploadedFile
rubyXL で新規にデータを作った場合はまだファイルになっていない。
StringIOの状態。
そこで、ささたつさんのサイトに答えが。よくこんなのわかるなぁ。すごい。
tempfile を作って、ActionDispatch::Http::UploadedFile インスタンスを渡せばよい。
tempfile を作るときに、carrierwave 側で拡張子で制限を行っている場合は new の際の第一引数配列の二つ目が suffix なので、拡張子を指定すること。