Rubyもある程度分かるようになったので、すごーく今更ですがRoRの勉強をはじめました。なので自分用のメモとしてまとめておこうかと。
教科書はRails入門に有名な「RailsによるアジャイルWebアプリケーションの開発」
インストール
環境はVMWare + Ubuntu10.04です。
- まずは必要なパッケージをapt-getでインストール
- sqliteじゃなくてmysqlでやろうと思うので、mysql5.1もインストール
- libmysqlclient-devはgemでmysqlをインストールするのに必要
- シンボリックリンクは何故か手動で作るハメになりました(多分rubyじゃなくてruby1.8を入れたからかな)
sudo apt-get install build-essential libopenssl-ruby sudo apt-get install ruby1.8 rubygems1.8 ruby1.8-dev libsqlite3-dev sudo apt-get install mysql-server-5.1 libmysqlclient-dev sudo ln -s /usr/bin/ruby1.8 /usr/bin/ruby
- 続いてgemで必要なRubyパッケージをインストール
- インストール後/va/lib/gems/1.8/binにパスが通ってるか確認すること(何故か僕はパスが通ってなかった)
sudo gem install rails sudo gem install mysql gem list --local *** LOCAL GEMS *** actionmailer (2.3.8) actionpack (2.3.8) activerecord (2.3.8) activeresource (2.3.8) activesupport (2.3.8) mysql (2.8.1) rack (1.1.0) rails (2.3.8) rake (0.8.7)
サンプルアプリを作ります
sqliteじゃなくてmysqlを使うので、DBを作っておきます。
mysql -h localhost -u root -p mysql>create database demo_development;
ここから本題に入ります。
#railsコマンドで必要なファイルを自動生成 mkdir -p work cd work/ rails demo cd demo/ #mysqlを使うのでconfig/database.ymlを編集 vi config/database.yml #controllerを作成 ruby script/generate controller Say vi app/controllers/say_controller.rb #viewを作成 vi app/views/say/hello.html.erb vi app/views/say/goodbye.html.erb #http://localhost:3000/say/helloにアクセスして動作確認 ruby script/server webrick
- config/database.yml
development: development_mysql development_mysql: adapter: mysql database: demo_development host: localhost username: root password: foobar # SQLite version 3.x # gem install sqlite3-ruby (not necessary on OS X Leopard) development_sqlite: adapter: sqlite3 database: db/development.sqlite3 pool: 5 timeout: 5000 (snip)
- development_sqliteに変更しているので注意。
- app/controllers/say_controller.rb
class SayController < ApplicationController def hello @time = Time.now end def goodbye end end
- ここで作ったメソッドがアクションになる
- メソッド名とビューファイルは同じにする必要あり
- app/views/say/hello.html.erb
<html> <head> </head> <body> <h1>Hello Rails!</h1> <%="the time is #{h(@time)}"%> <p><%=link_to("Goodbye" , :action=>"goodbye")%></p> </body> </html>
- ERBそのもの
- コントローラのメンバ変数はビュー内でも使用できる
- h()はRailsのHTMLエスケープメソッド(ヘルパーメソッド)
- link_to()はを作成するためのヘルパーメソッド
- 表示文字、アクション名を指定。多分コントローラも指定できる
- app/view/say/goodbye.html.erb
<html> <head> </head> <body> <h1>Goodbye!</h1> <p><%=link_to("Hello" , :action=>"hello")%></p> </body> </html>
少しずつでもいい。まったくやらないのとは雲泥の差があるはずだ。
(と言い聞かせて、やる気を保つ作戦)