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書き込みに成功した。

No comments: