はじめてのRuby on Rails、トラブル記録
<< restful_authenticationで認証機能追加(3) | TOP | WindowsでGitからプラグインをインストールする >>
スポンサーサイト

一定期間更新がないため広告を表示しています

posted by スポンサードリンク | | - | - | - |はてなブックマーク - スポンサーサイト
Paperclipでファイルアップロード
かんたんRuby on RailsでWebアプリケーション開発の5日目、アルバムプロジェクトをRails2.3.4で作りなおしてみたものの、
ファイルのアップロードがどうしてもうまくいかなくてムキーパンチ
ファイルそのものじゃなくてディレクトリ名を保存するってのがなんか難しいよ。。。

そこでなんかほかに方法はないものかと思ってまたプラグインを探してみたところ出てきたのがこのPaperclip。
気に入ったのは、専用のモデルが必要なくて、自分で作ったほかのモデルに取り込めるというとこ。
あとはなんとなく簡単そうだった。

というわけでさっそく入れてみます。

本家
http://www.thoughtbot.com/projects/paperclip
・git http://github.com/thoughtbot/paperclip


【1】インストール


本家とgitにあるURLでインストールしようとしたんだけれどなぜかうまくインストールできず。
仕方なくgitに置いてあるのを手動でダウンロードしてvendor/pluginsの下にフォルダ名paperclipで置きました。
しかし【2】の設定までやってもうんともすんともで、ググったらgemで入れた方がいいぜ!というのを何件か見かけたのでgemでも入れてみたら動いた。
でもログ見るとvendor/pluginsの下のを見に行ってるっぽいんだけどなあ。。。よくわからない
まあ次にいきましょう。


【2】モデルの設定


使い方はこちらのサイトやプラグインフォルダ内のREADME.rdocにわかりやすいです。

今回はpageというモデルにアップロードファイル情報も入れようと思います。

photos_to_pagesというマイグレーションファイルを作ります。
ruby script¥generate migration photos_to_pages


db/migrate/****_photos_to_pages.rbのdef self.upとde self.downの中に以下のコードを追加します。
このへんの追加する項目も好みで変えられるみたいですが、とりあえず本家サイトに書いてあるののコピペでw
class PhotosToPages < ActiveRecord::Migration
 def self.up
  add_column :pages, :photo_file_name, :string # Original filename
  add_column :pages, :photo_content_type, :string # Mime type
  add_column :pages, :photo_file_size, :integer # File size in bytes
 end

 def self.down
  remove_column :pages, :photo_file_name
  remove_column :pages, :photo_content_type
  remove_column :pages, :photo_file_size
 end
end
できたらマイグレーションします。
rake db:migrate


次に、app/models/page.rbに以下のコードを追加します。
# Paperclip
 has_attached_file :photo,
 # :styles => {
 # :thumb=> "100x100#",
 # :small => "150x150>" }

  :path => ":rails_root/public/store/images/:basename.:extension",
  :url => "/store/images/:basename.:extension"
:pathで保存するところを変えられるみたいだったので変えました。
:urlは表示用のURLです。
コメントアウト部分は、入れてみたらエラーが出て、ログを見たらこんなメッセージが入ってました。
[paperclip] An error was received while processing: #<Paperclip::NotIdentifiedByImageMagickError: C:/ほにゃらら/Temp/stream.4420.1 is not recognized by the 'identify' command.>

ImageMagickとかいう別のプラグインと連携できるはずなので、その絡み?
たぶんサムネイル作ったりファイルサイズ変えたりというのはImageMagickがないとできないのではと思って消しました。
そしたら動いたのでこれでOKかな。

validationについては次回で〜。



【参考】
http://jimneath.org/2008/04/17/paperclip-attaching-files-in-rails/
posted by トモト | 17:21 | ファイルアップロード(Paperclip) | comments(0) | trackbacks(0) |はてなブックマーク - Paperclipでファイルアップロード
スポンサーサイト
posted by スポンサードリンク | 17:21 | - | - | - |はてなブックマーク - スポンサーサイト
コメント
コメントする










この記事のトラックバックURL
http://hajimete-ruby.jugem.jp/trackback/32
トラックバック
Rails3レシピブック 190の技
Rails3レシピブック 190の技
ついにRails3対応版が出ました!!
WEB+DB PRESS Vol.58
WEB+DB PRESS Vol.58
Rails2系から3への移行時に知りたいことがひとまとまりになっててよかった!色々ググるよりこれを読む方が早い。
Rubyレシピブック 第3版 303の技
Rubyレシピブック 第3版 303の技
Rubyやるならこのリファレンスは必要。
Search this site