スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

CarrierWave を使って Rails で画像をアップロード

Railsで画像等のファイルをアップロードして扱うために、CarrierWaveとRMagickを使ってみます。


【0】概要

GitHub:CarrierWave
特徴:篳篥日記「[Rails] file_column から CarrierWave へ (序)」

特に2つ目のページがよくまとまってます。


【1】環境

OS:Ubuntu 12.04 (Precise)
Ruby:1.9.3-p194
Rails:3.2.0


【2】CarrierWaveのインストール・使い方

参考サイト:GEEKZ「Railsでcarrierwaveを使って画像ファイルのアップロード」

基本的に上記サイトに従ってインストールを進めていきます。

$ bundle install


CarrierWaveを使うためには、アップロード用のクラスを作成します。
ここでは、画像アップロード用のImageクラスを作ります。

$ rails generate uploader image

上記のコマンドを実行すると、rails_root/app/uploaders/image_uploader.rb が作成されます。

続いて、このクラスを利用するクラスを設定します。

Userクラスにプロフィール画像を設定すると仮定すると、

$ rails generate scaffold User name:string image:string

このクラスに以下の内容を追記します。

さらに、アップロードを行うためにviewを編集します。
アップロードした画像は以下のようにして表示できます。


【3】CarrierWaveの設定いろいろ

CarrierWave の設定をいじるには、作成したアップロード用のクラスを編集します。

保存方法(ファイル保存、DBにbinaryで保存など)

以下のようにして、保存先をいろいろ設定できます。
上記の設定でファイルに保存されます。
他の方法はググってください

アップロードされたファイルの保存先(ファイルとして保存の場合)

store_dir メソッドを編集することによって、ファイルの保存先ディレクトリを指定できます。 public/ 以下の上記設定ディレクトリに保存されます。
上記の場合だと、rails_root/public/uploads/user/1/hoge.jpg とかそんな感じ。

ちなみに、ファイル名はアップロードされたファイル名のままです。


【4】RMagickのインストール・使い方

上記のサイトには apt-get で RMagick に必要な ImageMagick を入れられるとありますが、Ubuntu 12.04 では Can't find Magick-config とか言われて入れられません。

というわけで、別の方法で入れます。

参考サイト:Qiita「Ubuntu12.04でimage-magickとrmagickを入れる」

apt-get ではなく、aptitude で入れます。

$ sudo aptitude install imagemagick libimagemagick libmagickcore libmagickcore-dev libmagickwand-dev


RMagick を入れます。

$ bundle install

RMagick を有効にするには、利用するアップロードクラスの以下の行のコメントアウトを外します。
アップロードされた画像に対してサムネイルを自動作成するには、次のように記載します。 これで、画像ファイルがアップロードされたときに、100px×100px以内に縮小されたファイルが保存されます。

ファイル名は「thumb_元々のファイル名」になります。

ちなみに、表示するときは、 で表示できます。

コメントの投稿

非公開コメント

カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
検索フォーム
カテゴリ
月別アーカイブ
最新記事
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QR
リンク
アクセス解析
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。