Railsで使えるGem

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

投稿日:2012年8月3日 更新日:

最初に

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のメソッドをコメントアウトする(未検証)

ファイル名を取得したいときは

ハッシュでアクセス

pathのbasename

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

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

 

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

validationを追加するgem file_validators

musaffa/file_validators

gemをGemfileに追加して

こんな風にかける

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

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

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

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のもっと詳しい使い方のビデオがアップされた

-Railsで使えるGem
-, , ,

執筆者:

関連記事

Rails3.2でajaxなフォルダツリーを導入する~dynatree-rails

  jQuery UIのプラグインdynatreeをRailsで使ってみた github.com/glebtv/dynatree-rails wwwendt.de/tech/dynatree …

no image

Mongoidのandとorで悩み中

and

or

  orの方はハッシュで[crayon-5b …

Rubyでウェブサイトを操作してリストをつくる〜mechanize

    By: JoshSemans   以前からRailscastsというRuby on Railsの動画サイトが好きでよく見ているのだが、380近く動画があって気にな …

Rubyでd3.jsのapiリファレンスの一覧を取得してくる~mechanize

  d3.jsにはlayoutというおおまかに準備されたレイアウトがあって、その中にあるTreeレイアウトを試してみることにした d3.js自身のapiリファレンスが階層構造になっているので …

Rails4.0で添付したpdfファイルの中身を全文検索の対象にする〜carrierwave、pdftotext、pg_bigm

By: Uncalno Tekno – CC BY 2.0 環境 Ubuntu server 12.04 sunspot_cellにしようとおもってたけど、ライブラリとか勉強することが多く …