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
-, ,

執筆者:

関連記事

状況に応じてRailsのフォームの種類を変える

  前提 railsでdocxを生成する動画 docxを生成するアプリは変数を自動で読み込むけど、状況に応じてフォームの種類を変えたい. Railsでは変数に応じてフォームの種類を用意してい …

Rails3.2でフォームの順番をjQuery UI sortableで並べ替えてSubmit~acts_as_list

テキストマイニングの初歩 Rubyで形態素解析を行う〜ruby-mecab

By: Cracker Jack – CC BY 2.0 環境 ubuntu server 12.04 英語は単語を空白で区切るのでコンピュータでの解析に向いているが、日本語は助詞などを続 …

ElasticSearchをRubyから使う~elasticsearch-ruby

By: Harry Rose – CC BY 2.0 目次1 gem elasticsearch-ruby2 環境3 インスタンス作成4 メソッド一覧5 情報取得6 ドキュメントの作成7 …

Rails3.2+Mongoidでログイン機能~devise

  目次1 Gemfile2 generate3 model4 試す5 Login/Logout6 アクセス制限7 メニュー構成を整える8 翻訳 I18n9 見た目を整える Gemfile …