スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

file_column プラグインの使い方

今回は画像アップロードのためのプラグイン。file_columnの使い方について。
最近ではPaperclipというプラグインもあるらしいが、とりあえずこちらを使うことにした。

まずは普通にrailsプロジェクトを作成し、ディレクトリの中に移動。
$ rails new test_f_column
$ cd new test_f_column

そして、file_columnプラグインのインストール。github経由で行う。
$ rails plugin install git://github.com/tekin/file_column.git

このfile_columnを使用するためにはRmagickが必要になる。
このためGemfileに以下を記述し、bundle installする。
gem 'rmagick', :require => 'RMagick'

bundle install


scaffoldで簡単にテストしてみる。
$ rails g scaffold Photo title:string image:string
$ rake db:migrate


モデル(app/models/photo.rb)に画像のパスを格納する列を追加。
class Photo < ActiveRecord::Base
file_column :image, :magick => {
:versions => {
:thumb => "50x50",
:middle => "100x100",
:large => "400x400"
}
}
end
画像を保存するパスを変更したい場合は、
class Photo < ActiveRecord::Base
file_column :image,
:root_path => "#{Rails.root}/public/album",
:web_root => "album/",

:magick => {
:versions => {
:thumb => "50x50",
:middle => "100x100",
:large => "400x400"
}
}
end
のようにする。
次にビューの変更をする。(app/views/photos/_form.html.erb)
<%= form_for(@photo, :html => { :multipart => true }) do |f| %>
<% if @photo.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@photo.errors.count, "error") %> prohibited this entry from being saved:</h2>

<ul>
<% @photo.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>

<div class="field">
<%= f.label :title %><br />
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :image %><br />
<%= file_column_field "photo", "image" %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
以上のようにmultipartにする必要があるみたい。
続いて、show.html.erbを変更。
<p id="notice"><%= notice %></p>

<p>
<b>Title:</b>
<%= @photo.title %>
</p>

<p>
<b>Image:</b>
<%= image_tag(url_for_image_column(@photo, "image", :middle)) if @photo.image %>
</p>


<%= link_to 'Edit', edit_photo_path(@photo) %> |
<%= link_to 'Back', photos_path %>


最後に確認してみる。
$ rails s


どうやらきちんと動作しているっぽい。
とりあえず簡単な画像アップロードならこれで十分だと思う。
気が向いたらPaperclipも使ってみようかな。。。

WEB DB PRESS Vol.60

新品価格
¥1,554から
(2011/2/21 22:39時点)



スポンサーサイト

rails3.0 + ruby1.9.2 + rmagick for windows

今回はWindows環境で上記環境を構築しようというお話。
結構苦戦・・・。

参考にしたサイトは以下の2サイト
WindowsでRuby1.9.2+Rails3+NetBeans6.9.1+Debugger
RMagick on Ruby 1.9.1 (i386-mingw32) Work !!!

基本的な流れは、後者のサイトに書いてあるとおりで、
1) RubyInstallerを使ってRuby 1.9.2 (i386-mingw32)をインストール
http://www.rubyinstaller.org/

2) 上記RubyInstallerのサイトからDevelopment Kit (DevKit)をインストール
ここでの詳しい手順は冒頭の前者参考サイト→DevKitのインストールが分かりやすかった。

3) ImageMagickの最新版のインストール
http://www.imagemagick.orgのBinary Releasesから適当なものをダウンロード

4) Rmagickのソースをダウンロード
http://github.com/rmagick/rmagick
Gitを使っている場合はこちらからでも可→git://github.com/rmagick/rmagick.git

5) Imagemagickの階層以下の!ImageMagick Path!\config\type-ghostscript.xmlファイルの中身をこちらのリンク先のものと入れ替える。

6) 環境変数の設定
set CPATH=!ImageMagick Path!\include
set LIBRARY_PATH=!ImageMagick Path!\lib
set PATH=!ImageMagick Path!
set PATH = !ruby_path!\bin
参考サイトでは他にもあったけどとりあえず以上で大丈夫なはず。

7) 以下のコマンドを実行
$ gem install rmagick
参考サイトではruby setup.rbとかなんやらを実行するとあったが、
それでやっても全然できなかったのでgemコマンドを打ってみた。
どうやらインストールできたぽいのでよしとする。Rmagickのソースの場所も重要かも。。。

8) エンジョイ!!!

以上でWindows環境でもRuby1.9.2でRmagickがインストールできた。

ここまでくるとRails3.0はgemを使って簡単にインストールできるので、
Windowsでも最新の環境でRailsを動かしてみたい方はぜひお試しあれ!!

たのしいRuby 第3版

新品価格
¥2,730から
(2010/12/21 22:51時点)


rvm + Ruby1.9.2 での fast debugger インストール

rvm+Ruby1.9.2の環境でのfast debuggerインストールで手間取ったので、
その方法について書いておく。

まずは1.9系のdebug環境を整えるため以下をgemコマンドで実行。
$ gem install ruby-debug-base19 
$ gem install ruby-debug-ide
$ gem install linecache19


以上のインストール後、Netbeans上で任意のプロジェクトに対してfastdebuggerを実行。
しかし以下のエラーでデバッガが起動しない。
Fast Debugger (ruby-debug-ide 0.4.9) listens on :50352
/Users/yas/.rvm/gems/ruby-1.9.2-p0/gems/ruby-debug-ide19-0.4.12/lib/ruby-debug-ide.rb:123:in `debug_load'
/Users/yas/.rvm/gems/ruby-1.9.2-p0/gems/ruby-debug-ide19-0.4.12/lib/ruby-debug-ide.rb:123:in `debug_program'
/Users/yas/.rvm/gems/ruby-1.9.2-p0/gems/ruby-debug-ide19-0.4.12/bin/rdebug-ide:87:in `'
/Users/yas/.rvm/gems/ruby-1.9.2-p0/bin/rdebug-ide:19:in `load'
/Users/yas/.rvm/gems/ruby-1.9.2-p0/bin/rdebug-ide:19:in `
'
Uncaught exception: no such file to load -- script/rails


よくわからなかったのでちょっと調べてみると、
同様の問題がこちらで取り上げられていたので参考にした。

このサイトによれば、ruby-debug-ide.rb の125行目を以下に置き換えるといいらしい。
if Debugger::PROG_SCRIPT == 'script/rails' 
ps = `pwd`.chomp+'/script/rails'
else
ps = Debugger::PROG_SCRIPT
end
bt = debug_load(ps, options.stop, options.load_mode)

これで問題なく動作するようになった。
自信はないが、とりあえず動いたので当分はこれでいこうと思う。

メタプログラミングRuby

新品価格
¥2,940から
(2010/11/22 16:16時点)


Macports 経由でインストールした ImageMagick 不具合

そういえば書き忘れていたが、
Rails3.0に移行した際、アプリケーション起動中にImageMagick関係の処理に移った瞬間、
アプリが強制終了した。

調べてみるとMacPortsで入れたImageMagickがよろしくないよう。
参考サイト

このため、上記サイトを参考にImageMagickを再インストールする。
まずは以下のコマンドでPortfileを開く。
$ sudo emacs /opt/local/var/macports/sources/rsync.macports.org/release/ports/graphics/ImageMagick/Portfile

参考サイトの通りに、--disable-openmpを追加する。場所は以下の通り。
configure.args \
--enable-shared \
--enable-static \
--disable-ltdl-install \
[...]
--without-rsvg \
--without-lqr \
--disable-openmp

その後、ImageMagickをアンインストール。
$ sudo port uninstall ImageMagick

そして、再インストール。
$ sudo port install ImageMagick

これで問題解決。

APPLE Mac mini 2.4GHz 2GB 320GB MC270J/A

新品価格
¥65,670から
(2010/10/26 21:50時点)


rvm 経由でいれた Ruby1.9.2 における Netbeans での Rmagick 不具合

rvmでRuby1.9.2の環境をいれたので、netbeansでプロジェクトを動かしてみる。

まずnetbeansにRuby1.9.2を認識させる。

netbeansのメニューバーの[ツール]→[Rubyプラットフォーム]を開き、
Rubyプラットフォームマネージャーを立ち上げる。
そして、[プラットフォームを自動検出]をクリックすると、rvmでいれたRuby1.9.2-p0が認識された。

とりあえず一安心。そして何も考えずプロジェクトを実行してみるが、エラー発生。
Could not find rmagick-2.13.1 in any of the sources
Try running `bundle install`.

rmagickが見つからないということらしい。ruby1.9.2をいれた際、一応gemでは事前にインストールしてあるはずなのだがなぜだろう。。。

確認のためnetbeansのメニューバーの[ツール]→[Ruby Gems]を開き、
インストールされているgemのリストを確認する。
が・・・rmagickがリストにない;;おかしいな。

初心に返って、ターミナルからコマンドで確認してみる。
$ gem list

*** LOCAL GEMS ***
/** 省略 **/
rmagick (2.13.1)
/** 省略 **/

あるじゃん!てことはプログラムも実行できるはずだなー。やってみる。
$ cd ~/NetBeansProjects/test
$ rails s
=> Booting WEBrick
=> Rails 3.0.0 application starting in development on http://0.0.0.0:3000
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2010-10-26 00:37:34] INFO WEBrick 1.3.1
[2010-10-26 00:37:34] INFO ruby 1.9.2 (2010-08-18) [x86_64-darwin10.4.0]
[2010-10-26 00:37:34] INFO WEBrick::HTTPServer#start: pid=7687 port=3000

うむ、大丈夫そうだ。

netbeansに戻り、もう一度環境を確認する。
Rubyプラットフォームマネージャーでのgem環境とコマンド実行時の環境の違いを見てみる。
コマンド上での環境を調べる為以下を実行。
$ gem env

なるほど!どうやらnetbeansのgemパスがおかしいみたい↓↓
/Users/yas/.gem/ruby/1.9.1
/Users/yas/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/gems/1.9.1

上記コマンドで調べたパスをnetbeans側に手動で設定。
/Users/yas/.rvm/gems/ruby-1.9.2-p0
/Users/yas/.rvm/gems/ruby-1.9.2-p0@global


これでいけるかnetbeans上でプロジェクト実行してみる。
Could not find rmagick-2.13.1 in any of the sources
Try running `bundle install`.

やっぱりダメ。素直に言われた通りbundle installしてみる。
プロジェクトを右クリックして[Bundler]→[install]を実行。
Installing rmagick (2.13.1) with native extensions /Users/yas/.rvm/rubies/ruby-1.9.2-p0/lib/ruby/1.9.1/rubygems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError)

/Users/yas/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb
checking for Ruby version >= 1.8.5... yes
checking for gcc... yes
checking for Magick-config... no
Can't install RMagick 2.13.1. Can't find Magick-config in /usr/bin:/bin:/usr/sbin:/sbin

*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers. Check the mkmf.log file for more
details. You may need configuration options.
/** 省略 **/

失敗。エラーの内容をみると以下の部分があやしそう。
checking for Magick-config... no
Can't install RMagick 2.13.1. Can't find Magick-config in /usr/bin:/bin:/usr/sbin:/sbin

Magick-configが見つからないらしい。調べてみるとこれはImageMagick関連のファイルっぽい。

ImageMagickはMacportsでインストールしたため/opt以下に存在しているが、ここでは探しにいけてないみたい。Macportsインストール時にした環境変数の設定をnetbeans立ち上げ時にもしないとダメみたいだなー。

いろいろ調べてみるとnetbeans.confというファイルに設定するといいらしいので、
$ cd /Applications/NetBeans/NetBeans\ 6.9.1.app/Contents/Resources/NetBeans/etc
$ emacs netbeans.conf

で以下の環境変数の設定を追加する。
export PATH=/opt/local/bin:/opt/local/sbin/:$PATH
export MANPATH=/opt/local/man:$MANPATH


さて、三度目の正直なるか!
プロジェクトを右クリックして[Bundler]→[install]を実行。
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

よっし、rmagickインストール成功!!

さらにプロジェクトを起動してみるとちゃんと動作した。
かなり苦戦したなぁー。。。まだまだ精進せねばっ!

Netbeans Platform 6.9 Developer's Guide

新品価格
¥3,549から
(2010/10/26 02:16時点)


検索フォーム
プロフィール

yas

Author:yas
yasと申します。
RailsにてWebアプリケーション開発をしております。

【開発環境】
OS: Mac OSX 10.6
Ruby: 1.9
Rails: 3.0
IDE: NetBeans6.9

最新記事
カテゴリ
月別アーカイブ
RSSリンクの表示
リンク
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。