paperclip でハマった。

ファイルのアップロードを簡単にするRailsプラグイン「paperclip」でハマった。
多分、Windows(XP)でやってるヒトはハマるかも。


まずはインストールは公式サイトに従いgitで入手

ruby script/plugin install git://github.com/thoughtbot/paperclip.git


導入方法は#134 Paperclip - RailsCastsと、http://d.hatena.ne.jp/hichiriki/20081130を参考にした。
DBカラムの作成もコマンド一発で完了するのはチョー便利。

ruby script/generate paperclip テーブル名 カラム名


んで、いざ実行。
ファイルをアップして見ると、以下のエラーが。

Errno::EACCES in BookmarksController#create


Permission denied - D:/Works/NetBeansProjects/PaperclipTest/public/photos/2/original/test.jpg


D:/Works/ruby/ruby-1.8.6/lib/ruby/1.8/fileutils.rb:1395:in `fu_each_src_dest'
D:/Works/ruby/ruby-1.8.6/lib/ruby/1.8/fileutils.rb:1411:in `fu_each_src_dest0'
D:/Works/ruby/ruby-1.8.6/lib/ruby/1.8/fileutils.rb:1393:in `fu_each_src_dest'
D:/Works/ruby/ruby-1.8.6/lib/ruby/1.8/fileutils.rb:494:in `mv'
vendor/plugins/paperclip/lib/paperclip/storage.rb:43:in `flush_writes'
vendor/plugins/paperclip/lib/paperclip/storage.rb:40:in `each'
vendor/plugins/paperclip/lib/paperclip/storage.rb:40:in `flush_writes'
vendor/plugins/paperclip/lib/paperclip/attachment.rb:139:in `save'
vendor/plugins/paperclip/lib/paperclip.rb:248:in `send'
vendor/plugins/paperclip/lib/paperclip.rb:248:in `save_attached_files'
vendor/plugins/paperclip/lib/paperclip.rb:241:in `each_attachment'
vendor/plugins/paperclip/lib/paperclip.rb:240:in `each'
vendor/plugins/paperclip/lib/paperclip.rb:240:in `each_attachment'
vendor/plugins/paperclip/lib/paperclip.rb:247:in `save_attached_files'
(以下略)


「なんじゃいコリャー」って怒りながらもグーグル先生に質問
だけど、明確な答えにたどり着かない。


何日か悩んでいていたけど、最終的にココに行きつく。
Google グループ

Version 2.1.2 is the version prior to the Move change (2.1.3) which
works for me, (with the tempfile) changes in place, have not tested
it without the tmpfile stuff.

version 2.1.4 had the permission change done that still did not work
for me on windows

慣れない英語だが単語を拾いながら読むと、どうやら2.1.4はWindows環境で動かないっぽい。
んで、2.1.2では動くみたいって事。


と言う事で、2.1.2をゲット。
GitHub - thoughtbot/paperclip: Easy file attachment management for ActiveRecordのdownloadボタンを押して直接古いバージョンを探してゲット
rails_root\vendor\plugins\paperclipに置きなおす。


んで、再実行。
オッケー、できた。


あと余談ですが、ImagemagickとRmagickは無くても大丈夫っぽいです。
ImageMagick - Convert, Edit, or Compose Bitmap Images
http://rmagick.rubyforge.org/