herokuでCarrierwaveを使う時にいろいろハマった

Carrierwave関係はいろいろと書いていますが、
herokuで運用する時には制限がいろいろとあります。

スタックした時に巡ったサイトなんかをメモしておきます。

Carrierwaveのサイト内記事

Rails 超お手軽な画像アップローダー CarrierWave の使い方 | Workabroad.jp

RailsとCarrierWaveでAmazon S3に画像を保存する | Workabroad.jp

Railsの画像アップロードを倍速にする方法 | Workabroad.jp

参考サイト

Processing before storing · Issue #128 · lardawge/carrierwave_backgrounder · GitHub

carrierwave_backgrounder Githubでのやりとり。
herokuで使う方法を模索していたけど、やっぱだめみたい。
このgemにはstore_in_backgroundとprocess_in_backgroundがあって、process_in_backgroundは、バックグランドでいろいろな画像サイズを作りたいとかいう場合に役に立つ。
メイン画像とサムネだけ、みたいな場合はわざわざworkerプロセス動かす必要もないよね、ということでcarrierwave_backgrounderのherokuでの使用をあきらめました。

process_in_background useful if you have many versions that need to be created or are processing large files... otherwise the payoff is minimal.

dommmel : Free background jobs on heroku

herokuでバックグラウンドの処理をさせてようとすると、WebDynoの他に、WorkerDynoが必要です。
で、WebDynoは750時間フリーなので料金はかかりませんが、WorkerDynoは1時間から料金が発生。
記事はWebDynoでSidekiqを動かす方法(すなわち無料)を紹介してます。
少しテストしてみましたが、workerを動かせなかった。。


Scalable Heroku worker for Sidekiq - Manuel van Rijn

herokuでWorkerDynoを1ヶ月動かすと $0.05 x 24h x 30day = $36 とかになりますが、常時起きてる必要もないよね、ということで、必要な時に叩き起こす方法。最小限のコストで運用できます。


Redis To Go

herokuでSidekiqを使うならRedis to goというaddonを使いますが、無料で使えるnanoにはいろいろと制限があります。nanoでSidekiqをやりくりする方法の紹介。


Sidekiq and Carrierwave, Part 3 - Iacutone

RailsCastで紹介されているのはCarrierwaveDirectというgemですが、carrierwave_backgrounderというgemもいいよーという紹介記事。


Ruby - HerokuでCarrierWaveを使う場合に注意すること - Qiita

タイトルのままです。
herokuでのBambooスタックとCedarスタックの違いとか、
Carrierwaveのwikiの情報が正しくないとか、
WebDynoを2つ以上つかっている場合、バリデーションで戻された場合に、
すでにアップされている画像を再利用すことはできないとか、
注意事項がわかりやすくまとまっています。


以上です。

結論は、いまのところ、

• herokuを使うならcarrierwaveの保存先はAmazon S3に。

• herokuを使うならcarrierwave_backgrounderは使わない。

  • 何をしたいかによるけど、画像処理をあまりしないのなら意味がない。

• herokuを使うならcarrierwaveのキャッシュ機能は忘れる。

と、herokuを使うおかげでcarrierwaveの素敵な機能が使えません。
悲しいけど、今のところそういうことなのねー。

herokuで複数Dynoを使用していても一時ファイルを共有できる、みたいな機能ができたら使えるのかな。

何かありましたらコメントをどうぞ

comments powered by Disqus

人気の記事

950 Points チリ出身のギタリストが弾くドラゴンボールZがむちゃくちゃかっこいい…
774 Points Wordpress + Heroku + PostgreSQL + Amazon S3 = ¥0 / 無料でサイト運営
700 Points Rubyのチートシート 変数 / クラス / モジュール
524 Points Rubyのチートシート / アクティブサポート
451 Points 紙のデザイナーがウェブ開発できるようになるまでに必要なこと
435 Points Rails / Google Analyticsのデータを使って分析や管理画面のためのグラフをつくる
323 Points RailsとHerokuでノーティフィケーションをプッシュする / PusherとTurbolinksの兼ね合い
222 Points Rails / RSpec テスト書いたことない メンドクサイ(n´Д`)という時のチートシート
193 Points Rails / Ajaxを使って画面遷移しない一時保存機能をつける
193 Points Protractorでスクレイピングしてみた