Sunday, November 26, 2006

Install Catalyst on Vine Linux

Ruby on Railsの概要はわかったので、今度はPerlで実装されたCatalystを試してみる。


■インストール

・一般ユーザでCPANからインストールする
 $ perl -MCPAN -e 'install Task::Catalyst'
→色々訊かれるけどFTPサーバをftp.ring.gr.jpからに指定した以外は(yes/no関係無く)Enter連打

・途中sudoする場所があるので、
→visudoでwheelを有効にして、ynsiderzをwheelグループに入れた上で進めた
→結局最後のインストールで止まったのでrootでやり直した

・サンプル生成
→$ catalyst.pl
→「Can't locate Catalyst/Helper.pm in @INC」と言われ実行出来ない
→http://search.cpan.org/~mramberg/Catalyst-Devel-1.01/で「Catalyst-Devel」を落としてインストールした
 # tar xvzf Catalyst-Devel-1.01.tar.gz
 # cd Catalyst-Devel-1.01
 # perl ./Makefile.PL
→なんか色々怒られたので、
→http://search.cpan.org/~mramberg/Catalyst-Runtime-5.7003/で「Catalyst-Runtime」を落として入れてみた
→また怒られた。メッセージは下記の通り
Warning: prerequisite HTTP::Body 0.5 not found.
Warning: prerequisite Tree::Simple 1.15 not found.
Warning: prerequisite Tree::Simple::Visitor::FindByPath 0 not found.
→こいつらを「perl -MCPAN …」で入れた


■インストール(逆襲編)

・ここまでいろいろ入れて来たが、何気なく下記のコマンドを叩いたらまとめてインストール出来そう
 $ perl -MCPAN -e 'install Catalyst::Runtime'
 $ perl -MCPAN -e 'install Catalyst::Devel'

・どうもHTTP::Bodyがうまく入らないので、インストールオプションを変えて強制上書き
 $ perl -MCPAN -e shell
 cpan>o conf
 cpan>o conf make_install UNINST=1 ←※この行いらないかも
 cpan>o conf make_install_arg UNINST=1
 cpan>install HTTP::Body ←※これだとダメだった
 cpan>force install HTTP::Body ←※強制上書き

・成功したのでCatalyst入れなおし
 cpan>install Catalyst::Runtime
 cpan>install Catalyst::Devel


■テスト

・下記のコマンドでサンプルを作成
 $ catalyst.pl MyApp
 $ cd MyApp/
 $ ./script/myapp_server.pl

・ブラウザアクセス確認
→http://192.168.0.11:3000/でアクセス成功!


感想としては、「Ruby on Rails」よりも少しは簡単そう。とはいえ実践で使うかどうかは微妙な事に変わりは無いかなあ…。

参考文献:
・ベース
http://www.tcool.org/catalyst/Intro.html#Install
・上よりちょっと新しい
http://www.drk7.jp/MT/archives/000925.html
・上よりさらに新しい
http://d.hatena.ne.jp/peppon/20060912/1158071878
・MCPAN設定
http://y-kit.jp/saba/xp/cpan.htm

Saturday, November 25, 2006

Use Ruby on Rails

今度は実際に使用する際の手順。

■テスト

・Railsプロジェクト作成
 # rails test
→testというディレクトリにパーツが生成された

・サーバ起動
 $ cd test
 $ ./script/server
=> Booting WEBrick...
=> Rails application started on http://0.0.0.0:3000/
=> Ctrl-C to shutdown server; call with --help for options

・ブラウザアクセス確認
 http://192.168.0.11:3000/にアクセス出来た


■本格的に使ってみる

・モデル作成
 % cd test
 % ./script/generate model Test

・DBスキーマ定義
 % vi db/migrate/001_create_tests.rb
...
def self.up
create_table :tests do t
# t.column :name, :string ## ここのコメントをはずす
end
end
...

・DB作成
 % mysql -u root
 mysql > create database test_development;
 mysql > create database test_test;
 mysql > create database test_product;
 mysql > quit

・テーブル作成
 % rake migrate

・scaffold(?)作成・サーバ起動
 % ./script/generate scaffold Test Test
 % ./script/server

・ブラウザアクセス確認
 http://192.168.0.11:3000/Test/ にアクセスしたが、動かない…。
→コンソールのエラーを見るに「ERROR MissingSourceFile」だそうな
→irbのRPMを入れれば良いようだけどバージョン不整合で入らない
→仕方なくここで再インストールを決断する


■rubyの再インストール
・fedoraのRPMでインストールし直し。↓からダウンロード
 http://ayo.freshrpms.net/fedora/linux/3/i386/RPMS.updates/
 # rpm -Uvh ruby-libs-1.8.4-1.fc3.i386.rpm
準備中... ########################################### [100%]
1:ruby-libs ########################################### [100%]
 # rpm -Uvh ruby-1.8.4-1.fc3.i386.rpm
準備中... ########################################### [100%]
1:ruby ########################################### [100%]
 # rpm -ivh irb-1.8.4-1.fc3.i386.rpm
準備中... ########################################### [100%]
1:irb ########################################### [100%]

・RubyGemのパスを通し直す
 # cd rubygems-0.9.0
 # ruby ./setup.rb

・再度ブラウザアクセス確認
http://192.168.0.11:3000/Test/ にアクセスしたがやっぱりダメ
 「uninitialized constant CatalogController」とエラーの内容が変わった
→エラーとファイル名を読み解いて、以下のようにroutes.rbに追記したらなんか動いた
 「map.connect 'Test/:id', :controller => 'test', :action => 'list'」
→いきなり解決した。そもそもアクセスするURLが違っていたのが原因だった。
 http://192.168.0.11:3000/test/ と、小文字で「test」と入れればよかったみたい。
※結果的にURLとアクションの紐付け方法を覚えてしまった。


■本格使用実験再開
・DBアクセス
 「New test」でDBにデータ書き込みを行う。試しに「ynsiderz」「ynsiderz2」「いんさいだあず」と作ってみた
→結果をmysqlから確認してみる
 $ mysql -u root
 mysql> use test_development;
 Database changed

 mysql> show tables;

+----------------------------+
|Tables_in_test_development |
+----------------------------+
|schema_info |
|tests |
+----------------------------+

2 rows in set (0.00 sec)

 mysql> describe tests;

+-------+--------------+------+-----+---------+----------------+
|Field |Type |Null |Key |Default |Extra |
+-------+--------------+------+-----+---------+----------------+
|id |int(11) | |PRI |NULL |auto_increment |
|name |varchar(255) |YES | |NULL | |
+-------+--------------+------+-----+---------+----------------+

2 rows in set (0.00 sec)

 mysql> select * from tests;

+----+--------------+
|id | name |
+----+--------------+
|1 |ynsiderz |
|2 |ynsiderz2 |
|3 |いんさいだあず |
+----+--------------+

→というわけで結論を言うと、ちゃんとDB書き込みに成功した。

Install Ruby on Rails to Vine Linux 3.2

Ruby on Railsのインストールが一通り成功したので以下に手順をメモ。

■インストール(下準備)

・MySQLを入れる
# apt-get install MySQL-server
# apt-get install MySQL-ruby

・Vineのrubyが古いのでコンパイルからし直す
→必要なrpmを落とす
 「apt-get install bison gdbm-devel XOrg-devel db4-devel ncurses-devel openssl-devel readline-devel zlib-devel」
→「ftp://ring.asahi-net.or.jp/pub/linux/Vine/VineSeed/SRPMS.main/」から
 「ruby-1.8.4-0vl5.src.rpm」を落とす
→リビルドに必要なパッケージを入れる
 # apt-get install build-essential
 # rpmbuild --rebuild ruby-1.8.4-0vl5.src.rpm
ruby-1.8.4-0vl5.src.rpm をインストール中
エラー: ビルド依存性の欠如:
tcl は ruby-1.8.4-0vl5 に必要とされています
tk は ruby-1.8.4-0vl5 に必要とされています
 # apt-get install tcl
 # apt-get install tk
→リビルド
 # rpmbuild --rebuild ruby-1.8.4-0vl5.src.rpm
→インストール
 # cd /usr/src/vine/RPMS/i386
 # rpm -Uvh ruby-1.8.4-0vl5.i386.rpm libruby-1.8.4-0vl5.i386.rpm
※2パッケージを同時に指定しないと、互いに依存関係がある為インストール出来ない。注意。

■インストール(RoR)

・RubyGemsをインストール
 http://docs.rubygems.org/からdownloadへ
 「rubygems-0.9.0.tgz」をダウンロード
 # tar xvzf rubygems-0.9.0.tgz
 # cd rubygems-0.9.0
 # ruby ./setup.rb

・Railsパッケージをインストール
 # gem install rails
 ※-yオプションつけた方がいい(いちいちY押すのめんどい)
→なんか最後にエラー出た。。。
------------------------------------------------------------
Successfully installed actionwebservice-1.1.6
/usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `gem_original_require': no such file to load -- rdoc/rdoc (LoadError)
from /usr/local/lib/site_ruby/1.8/rubygems/custom_require.rb:27:in `require'
from /usr/local/lib/site_ruby/1.8/rubygems/doc_manager.rb:71:in `load_rdoc'
from /usr/local/lib/site_ruby/1.8/rubygems/doc_manager.rb:41:in `generate_ri'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_commands.rb:283:in `execute'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_commands.rb:282:in `execute'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_commands.rb:220:in `execute'
from /usr/local/lib/site_ruby/1.8/rubygems/command.rb:69:in `invoke'
from /usr/local/lib/site_ruby/1.8/rubygems/cmd_manager.rb:117:in `process_args'
from /usr/local/lib/site_ruby/1.8/rubygems/cmd_manager.rb:88:in `run'
from /usr/local/lib/site_ruby/1.8/rubygems/gem_runner.rb:29:in `run'
from /usr/bin/gem:23
------------------------------------------------------------

→もう一度RPMインストールし直し
 # cd /usr/src/vine/RPMS/i386
 # rpm -Uvh *
準備中... ########################################### [100%]
パッケージ libruby-1.8.4-0vl5 は既にインストールされています
パッケージ ruby-1.8.4-0vl5 は既にインストールされています
パッケージ ruby-mode-1.8.4-0vl5 は既にインストールされています
 # gem install rails -y
Successfully installed rails-1.1.6

次は実際に使った際の雑感。