v9.0とか未来的な感じが面倒そうだったので簡単にVirtualBoxの仮想環境が作れるという噂のVagrantを使ってみました。WelcomeVagrantとは?VirtualBoxの仮想環境をCUIから操作するツールです。数回コマンドを叩くだけで環境が作れるのでとても便利。rubyで書かれたシンプルな設定ファイルを元に面倒な仮想環境構築を自動化してくれます。VM自体はVagrantfileという設定ファイルで設定し、VMの中身はchefで設定するという感じです。僕はchef使ったこと無いので今回はVM作成したあとはsshで入ってpostgresをインストールしちゃいました。それだけでもOSのCDイメージ落としてきて、インストールして・・・って面倒だったのが簡単になったし、バックグラウンド動作してくれるし、環境がキモくなったらすぐ削除して作り直せるのが精神衛生上良いですね。listlucid32OSイメージをダウンロードするので結構時間かかります。lucid32ってのがbox名です。initでVagrantfileを作ります。RakefileとかCapfileとかGemfileとかあるので分かると思いますが、このディレクトリで実行するvagrantコマンドがこの設定ファイルを参照します。upで同ディレクトリのVagrantfileを元にVMイメージを作ってバックグラウンドで起動します。sshでVMにvagrantユーザーでsshで接続します。(デフォルトではlocalhost:2222をVMの22にforwardします)sudoできるので後は普通のubuntuです。通常、設定はchefでやるみたいです。忙しい人のためのVagrantこれだけだと何がどうなってるのか解かり辛いのでもう一個環境を作ってみます。upこの状態でVirtualBoxの設定画面を見てます。2個のVMが実行中です。haltでVMを停止して設定を見てみます。windows_xp_ie6.vmdkHDDイメージはそれぞれ別々に作ってくれています。tmpbox(CDイメージとVMのデフォルト設定)の方は共通です。destroyで綺麗に消えるので気軽に作成・削除が出来ます。作りがシンプルで気に入ってしまいました。当初の目的だったpostgresはデータを救い出したあと要らないのでVMごと消してしまいました。そのぐらい気軽に環境が作れるところがいいですね。+0000RailsからImageMagick(convert)に自由にオプションを渡せると聞いて飛んできましたRailsのオススメファイルアップロードプラグインのPaperclipですが、最新版(2.1.4)で嬉しい機能が増えてました。ImageMagick(convertコマンド)に自由にオプションを渡せるようになった。画像が無いときのパスを指定できるようになった。ソース内のコメントの例では、アップされた画像をlargeとnegativeというstyleに分け、両方にprofileやexif情報を削除する-stripオプションを適応し、negativeには補色で補完する(つまり反転?)-negateオプションを適応してます。"-negate"}endRMagickや他のAPIを使わず、直接convert使ってる利点が生かされてますな。他にも-monochromeオプションでモノクロにしたりとか色々出来そうです。画像無いときのパス指定は、「あれ?これ指定できないの?」ぐらいだったんで俺がすっきりしただけですが。以前にも書きましたが、Capistrano利用時にはアップ画像を/public/system以下に置きたいのでオプション指定が必要です。いちいち指定してたらModelがキモくなるので通常、下記を使ってます。:defaultendconfig/initializers/以下は一番最後(pluginよりあと)に読まれるのでこういうアプリの本質的でない部分の変更には向いてますな。大体の画像系と同じようにnilとかを入れるだけでOK。"/overviews/normal/missing.png"しかも、削除した場合のURLが自動的にmissing.pngに変わってる。この勝手な挙動が嫌いな人もいるかもしれないけど面倒臭がりの俺としては嬉しい。choice.あとやっぱりRMagick無くても動く!そういやImageMagick自体が問題なんじゃなくて、殆どの場合、パッケージのImageMagickが言語バインディングと合わないことが問題だったんだよね。PureRubyで再実装しかないと思ってた。月曜日なので一心不乱にコード(仕事の)。画像アップするプラグインを前に目を付けていたPaperclipに変えてみた。file_columnと同じでファイルに画像を保存する形式。attachment_fuと違って専用のテーブルを作らないタイプ。うーん、ファイルに保存方式だとcapistranoでdeployしてるとき困るんだよな~。そんでsystem以下に保存するように変えたり。}endモデルにhas_attached_fileを定義。(略)endDBは専用のじゃなくて普通にそのモデルのテーブルに上記3種を追加。%>アップするフォームはこんな感じ。%>画像表示もこんな風に深く考えなくてもいいようになってる。あとImageMagickだけでRMagickが要らないっぽいです。file_columnでちょっと面倒だったファイルの保存場所関係はhas_attached_fileのオプションで結構柔軟っぽい設定ができそうでした。"http://some.other.host/stuff/:class/:id_:extension"シンプルなところが気に入りました。