hello-world
webエンジニアのメモ。とりあえずやってみる。

[rails]carrierwaveで保存した画像のurlを取得する

公開日時

carrierwave 0.10.0 で確認 imageカラムにcarrierwaveで保存した画像を保存している場合、デフォルトのままだとだとurlメソッドを実行してもpublic以下のパスのみで http://~ が設定されていません。

Sample.image.url  #=> /uploads/sample/image/1/sample.jpg

http://~ 形式のURLを取得するにはCarrierWaveのasset_host設定を行う必要があります。

# config/initializers/carrierwave.rb

CarrierWave.configure do |config|
  config.asset_host = Settings.url
end

定数管理にはrails_configを使用しています。

(使い方に関しては こちらを参照)

# config/settings.yml

url: 'http://local.url'

環境に応じた設定を記述した後、再読み込みすると

Sample.image.url  #=> http://local.url/uploads/sample/image/1/sample.jpg

というように正しくURLが取得できます。

asset_hostを使えば、本番環境やstaging環境はs3やCloudFrontにURLを切り替える、ということも可能です。

参考


Related #carrierwave

[rails]base64エンコードされた画像をcarrierwaveに保存する

Ruby 2.1.4, Rails 4.1.7 で確認 前回はcarrierwaveを使ってPOSTされた画像ファイルの保存を行うAPIを作ってみました。

[Rails]carrierwaveのcallbackをskip

Railsで画像アップロード機能を作る際に欠かせないgemと言えば carrierwave ですが、save時にcarrierwaveのcallbackをskipしたい場合の対応方法をメモしておきます。

[rails]carrierwaveを使って画像を保存するAPIサンプル

Ruby 2.1.4, Rails 4.1.7 で確認 画像アップロード機能を作成する際に carrierwaveをよく使うのですが毎回調べているので基本的な設定部分のメモを残しておきます。