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でフォームの順番をjQuery UI sortableで並べ替えてSubmit~acts_as_list

ThoughtBotの『Backbone.js on Rails』の目次と見出しをななめ読み

By: John – CC BY 2.0 learn.thoughtbot.com/products/1-backbone-js-on-rails 買いました 電子書籍で137ページに$4 …

no image

Rubyでffmpegのラッパーを使う~streamio-ffmpeg

  github.com/streamio/streamio-ffmpeg rubyでffmpegが扱える高機能ラッパー 導入 [crayon-5bcbc54124c07894692620/ …

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

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

Ubuntu Server 12.04.1にいま流行のDiscourseをインストールしてみた

By: Wonderlane – CC BY 2.0 目次1 はじめに2 環境3 インストール4 情報 はじめに すでにGitHubのトレンドRepoでスター数がTwitterのFligh …