Railsで使えるGem

Ruby on Rails 3.2でファイルアップロード〜CarrierWave & RMagick

投稿日:

 

 

CarrierWaveはRubyでファイルのアップロードを簡便にするGemです。

RMagickはImageMagickという画像ファイルを加工するソフトのラッパーです。CarrierWaveからサムネイルなどを作りたいときに使います。

環境:ubuntu server 12.04 ruby 1.9.3-p194 rails 3.2.7

*CentOSではImageMagickの関係でRMagickのコンパイルがうまくいかなかった

参照

RAILS CASTS #253 CarrierWave File Uploads

Gemfile & bundle

Gemfileに追加

generate rb ファイル

“image”はデータベースのカラムとして扱いたい名前

app/uploaders/にimage_uploade.rbというファイルが生成されます。

Modelに”image”という要素を加え、mount_uploaderを記述する

ここではサンプルとして次のように生成した

document.rbを編集して次のように追記

Viewの_form.html.erbにファイルアップロード形式を追加

 

 

Viewのindex.html.erbやshow.html.erbで画像を見せたいときは

to_sがついているのはデータがない場合

ノートでは下みたいな書き方

コメント欄にデフォルトイメージを使いたい場合はdocument.image.urlを使えと

そして、image_uploader.rbのdefault_urlのメソッドをコメントアウトする(未検証)

アップロード時にサムネイルを作成したい場合

RMagickを使う。ほかにMiniMagickというgemもサポートしてるみたい。

6-1 ImageMagickなどをインストールしておく

 6-2 Gemfile & bundle

Gemfileに次のように追記してbundle

 6-3 image_uploader.rb設定

include文をコメントアウト

元のファイルを残したまま別ファイルを生成したいので、# Create different versions of your uploaded files:以下をコメントアウト

:resize_to_limitはRMagickをincludeすると使えるメソッド。アスペクト比を保ったままうまい感じでサムネイルを作ってくれる。

6-4 image_tagでサムネイルを使う

 

*RailsCastsでImageMagickのもっと詳しい使い方のビデオがアップされた

 

*日本語ファイル名を扱う設定

/config/initializers/carrierwave.rbというファイルを作って下の1行を追加すればOK

 

日本語のファイル名が____に置き換わってしまうのを防ぐ

 

*rspecの簡単なテスト設定方法

大量にファイルが生成される場合の対応とかいろいろあるけど、単純にテストを通したいだけの場合はこれで.

-Railsで使えるGem
-, ,

執筆者:

関連記事

TwitterBootstrapでアイコンが微妙な感じだったらFontAwesomeを試してみるといい

かもしれない fortawesome.github.com/Font-Awesome/ hallojsで使ってるのは上 github.com/bokmann/font-awesome-rails gi …

Hallo.jsのMarkdownをWYSIWYGで編集できるサンプルがぐう便利だったのでRails3.2とBackbone.jsでやってみた

hallojs.org/demo/markdown/ これ  とにかく一度さわってみて欲しいんですけど 目次1 サンプルの便利ポイント2 Rails3.2とBackboneで動かしてみる サンプルの便 …

CarrierWaveで添付したファイルをrroongaで全文検索

By: Alan Levine – CC BY 2.0 目次1 Carrierwave2 rroonga3 Gemfile4 application.rb5 config/initiali …

no image

CarrierWaveのファイルをpublic以外に移す

  参照 How To: Secure Upload 現状でCarrierWaveのファイルがpublicという公開フォルダに置かれるのが気になったので調べてみた 違ってるかもしれないので自 …

Rails5でコントローラーの記述を省略~inherited_resources

By: Simon Matzinger – CC BY 2.0 目次1 inherited_resources2 Gemfile3 使い方 inherited_resources inhe …