「Attachment_fuプラグイン」の編集履歴(バックアップ)一覧はこちら

Attachment_fuプラグイン」(2008/08/18 (月) 16:17:41) の最新版変更点

追加された行は緑色になります。

削除された行は赤色になります。

**プラグイン名 Attachment_fuプラグイン **このプラグインができること +acts_as_attachmentの機能改良版。 +ファイル(特に画像)のアップロードや表示を効率化できる +ファイルアップロード時に複数サイズのサムネイルを生成できる(要RMagick) +ファイルの保存先はファイルシステムかDBかを選択できる。AmazonのS3サービスにも対応しているらしい。 +画像表示時のヘルパーもついてる **対象バージョン 1.2系 **ちょー簡単な使い方 >script/plugin install http://svn.techno-weenie.net/projects/plugins/attachment_fu/ でインストールして、 >script/generate model mugshot とかで普通にモデルとマイグレーションファイルを用意。 >class CreateMugshots < ActiveRecord::Migration > def self.up > create_table :mugshots do |t| > t.column :parent_id, :integer > t.column :content_type, :string > t.column :filename, :string > t.column :thumbnail, :string > t.column :size, :integer > t.column :width, :integer > t.column :height, :integer > end > end > def self.down > drop_table :mugshots > end >end こんな感じのテーブル作って、マイグレートできたらモデルに >class Mugshot < ActiveRecord::Base > has_attachment :content_type => :image, > :storage => :file_system, > :max_size => 3000.kilobytes, > # :size => 0.megabyte..10.megabytes, > # :resize_to => '320x200>', > :processor => 'Rmagick', > :thumbnails => { :thumb => '100x100>', :small => '50x50>' }, > :path_prefix => "public/system/#{table_name}" > validates_as_attachment >end てな具合にアップロード時の設定を書いておいて、 >class MainController < ApplicationController > def new > @mugshot = Mugshot.new > end > def create > @mugshot = Mugshot.new(params[:mugshot]) > if @mugshot.save > flash[:notice] = 'Mugshot was successfully created.' > redirect_to '/main/index' > else > render :action => :new > end > end > def index > @mugshots = Mugshot.find(:all, > :conditions => ["parent_id is null"] > ) > end >end とかってコントローラーを作って、index用のviewは ><h1>Sample Index</h1> ><% for mugshot in @mugshots -%> > <%= link_to image_tag(mugshot.public_filename(:small)), mugshot.public_filename %> ><% end -%> ><%= link_to 'new', {:action => :new} %> new用のviewは ><%= error_messages_for :mugshot %> ><% form_for(:mugshot, :url => 'create', > :html => { :multipart => true }) do |f| -%> > <p> > <label for="mugshot">Upload A Mugshot:</label> > <%= f.file_field :uploaded_data %> > </p> > <p> > <%= submit_tag 'Create' %> > </p> ><% end -%> ><%= link_to 'index', {:action => :index} %> で使えるはず。 (モロパクなので[[cuspos diary Ruby on Railsファイルアップロードプラグイン attachment_fu>>http://d.hatena.ne.jp/cuspos/20071110/1194642860#20071110f2]]を参考にしてください) **公式ページ -どこなんでしょう? **日本語解説ページ -[[cuspos diary Ruby on Railsファイルアップロードプラグイン attachment_fu>>http://d.hatena.ne.jp/cuspos/20071110/1194642860#20071110f2]] ※基本的な使い方はこれでOK ※日本にもユーザーが結構居るようで、ググればノウハウも結構溜まっているみたい。 **外国語解説ページ -[[Mike Clark's Weblog File Upload Fu>>http://clarkware.com/cgi/blosxom/2007/02/24]] ※結構良い **のうはう -こういうのこそポリモーフィック関連を使えば楽なのかも(未実践) -ひとつのモデルに画像とかPDFとかExcelファイルとか入れても大丈夫なのかなぁ?(実践中) -RMagickがちゃんとインストールされているか心配なときは、以下のコードをirbなどで実行してみよう。ちなみに、カレントディレクトリにtest.jpgがある前提だ。 >require 'rubygems' >require 'RMagick' >image = "test.jpg" >original = Magick::Image.read(image).first >resized = original.resize_to_fit(75,100) >resized.write("test_resized.jpg") -上の例で言うと、Articleモデル has_many(or has_one) :mugshotの時に、サムネイルのレコードはarticle_idが入って、parent_idがnullになるので、Articleモデル側では >has_many :mugshot, :condition => "parent_id is null" を付けておくと幸せかも。(あまり自信無い) -マイグレーションファイルの構造を載せておく >attachment_fu migrations >======================== >Fields for attachment_fu metadata tables... > in general: > size, :integer # file size in bytes > content_type, :string # mime type, ex: application/mp3 > filename, :string # sanitized filename > that reference images: > height, :integer # in pixels > width, :integer # in pixels > that reference images that will be thumbnailed: > parent_id, :integer # id of parent image (on the same table, a self-referencing foreign-key). > # Only populated if the current object is a thumbnail. > thumbnail, :string # the 'type' of thumbnail this attachment record describes. > # Only populated if the current object is a thumbnail. > # Usage: > # [ In Model 'Avatar' ] > # has_attachment :content_type => :image, > # :storage => :file_system, > # :max_size => 500.kilobytes, > # :resize_to => '320x200>', > # :thumbnails => { :small => '10x10>', > # :thumb => '100x100>' } > # [ Elsewhere ] > # @user.avatar.thumbnails.first.thumbnail #=> 'small' > that reference files stored in the database (:db_file): > db_file_id, :integer # id of the file in the database (foreign key) > >Field for attachment_fu db_files table: > data, :binary # binary file data, for use in database file storage #image(http://farm4.static.flickr.com/3163/2773235023_02ea53ee2b.jpg?v=0) **コメント #pcomment(reply)
**プラグイン名 Attachment_fuプラグイン **このプラグインができること +acts_as_attachmentの機能改良版。 +ファイル(特に画像)のアップロードや表示を効率化できる +ファイルアップロード時に複数サイズのサムネイルを生成できる(要RMagick) +ファイルの保存先はファイルシステムかDBかを選択できる。AmazonのS3サービスにも対応しているらしい。 +画像表示時のヘルパーもついてる **対象バージョン 1.2系 **ちょー簡単な使い方 >script/plugin install http://svn.techno-weenie.net/projects/plugins/attachment_fu/ でインストールして、 >script/generate model mugshot とかで普通にモデルとマイグレーションファイルを用意。 >class CreateMugshots < ActiveRecord::Migration > def self.up > create_table :mugshots do |t| > t.column :parent_id, :integer > t.column :content_type, :string > t.column :filename, :string > t.column :thumbnail, :string > t.column :size, :integer > t.column :width, :integer > t.column :height, :integer > end > end > def self.down > drop_table :mugshots > end >end こんな感じのテーブル作って、マイグレートできたらモデルに >class Mugshot < ActiveRecord::Base > has_attachment :content_type => :image, > :storage => :file_system, > :max_size => 3000.kilobytes, > # :size => 0.megabyte..10.megabytes, > # :resize_to => '320x200>', > :processor => 'Rmagick', > :thumbnails => { :thumb => '100x100>', :small => '50x50>' }, > :path_prefix => "public/system/#{table_name}" > validates_as_attachment >end てな具合にアップロード時の設定を書いておいて、 >class MainController < ApplicationController > def new > @mugshot = Mugshot.new > end > def create > @mugshot = Mugshot.new(params[:mugshot]) > if @mugshot.save > flash[:notice] = 'Mugshot was successfully created.' > redirect_to '/main/index' > else > render :action => :new > end > end > def index > @mugshots = Mugshot.find(:all, > :conditions => ["parent_id is null"] > ) > end >end とかってコントローラーを作って、index用のviewは ><h1>Sample Index</h1> ><% for mugshot in @mugshots -%> > <%= link_to image_tag(mugshot.public_filename(:small)), mugshot.public_filename %> ><% end -%> ><%= link_to 'new', {:action => :new} %> new用のviewは ><%= error_messages_for :mugshot %> ><% form_for(:mugshot, :url => 'create', > :html => { :multipart => true }) do |f| -%> > <p> > <label for="mugshot">Upload A Mugshot:</label> > <%= f.file_field :uploaded_data %> > </p> > <p> > <%= submit_tag 'Create' %> > </p> ><% end -%> ><%= link_to 'index', {:action => :index} %> で使えるはず。 (モロパクなので[[cuspos diary Ruby on Railsファイルアップロードプラグイン attachment_fu>>http://d.hatena.ne.jp/cuspos/20071110/1194642860#20071110f2]]を参考にしてください) **公式ページ -どこなんでしょう? **日本語解説ページ -[[cuspos diary Ruby on Railsファイルアップロードプラグイン attachment_fu>>http://d.hatena.ne.jp/cuspos/20071110/1194642860#20071110f2]] ※基本的な使い方はこれでOK ※日本にもユーザーが結構居るようで、ググればノウハウも結構溜まっているみたい。 **外国語解説ページ -[[Mike Clark's Weblog File Upload Fu>>http://clarkware.com/cgi/blosxom/2007/02/24]] ※結構良い **のうはう -こういうのこそポリモーフィック関連を使えば楽なのかも(未実践) -ひとつのモデルに画像とかPDFとかExcelファイルとか入れても大丈夫なのかなぁ?(実践中) -RMagickがちゃんとインストールされているか心配なときは、以下のコードをirbなどで実行してみよう。ちなみに、カレントディレクトリにtest.jpgがある前提だ。 >require 'rubygems' >require 'RMagick' >image = "test.jpg" >original = Magick::Image.read(image).first >resized = original.resize_to_fit(75,100) >resized.write("test_resized.jpg") -上の例で言うと、Articleモデル has_many(or has_one) :mugshotの時に、サムネイルのレコードはarticle_idが入って、parent_idがnullになるので、Articleモデル側では >has_many :mugshot, :condition => "parent_id is null" を付けておくと幸せかも。(あまり自信無い) -マイグレーションファイルの構造を載せておく >attachment_fu migrations >======================== >Fields for attachment_fu metadata tables... > in general: > size, :integer # file size in bytes > content_type, :string # mime type, ex: application/mp3 > filename, :string # sanitized filename > that reference images: > height, :integer # in pixels > width, :integer # in pixels > that reference images that will be thumbnailed: > parent_id, :integer # id of parent image (on the same table, a self-referencing foreign-key). > # Only populated if the current object is a thumbnail. > thumbnail, :string # the 'type' of thumbnail this attachment record describes. > # Only populated if the current object is a thumbnail. > # Usage: > # [ In Model 'Avatar' ] > # has_attachment :content_type => :image, > # :storage => :file_system, > # :max_size => 500.kilobytes, > # :resize_to => '320x200>', > # :thumbnails => { :small => '10x10>', > # :thumb => '100x100>' } > # [ Elsewhere ] > # @user.avatar.thumbnails.first.thumbnail #=> 'small' > that reference files stored in the database (:db_file): > db_file_id, :integer # id of the file in the database (foreign key) > >Field for attachment_fu db_files table: > data, :binary # binary file data, for use in database file storage #image(http://farm4.static.flickr.com/3163/2773235023_02ea53ee2b.jpg?v=0) [[WWW SQL Designerファイル>http://www13.atwiki.jp/maimuzo?cmd=upload&act=open&pageid=29&file=attachment_fu.xml]] **コメント #pcomment(reply) **トラックバック &link_trackback(text=トラックバック表示)

表示オプション

横に並べて表示:
変化行の前後のみ表示: