Ruby on Railsの勉強始めました

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>
  • app/view/say/goodbye.html.erb
<html>

<head>
</head>

<body>
<h1>Goodbye!</h1>
<p><%=link_to("Hello" , :action=>"hello")%></p>
</body>

</html>




少しずつでもいい。まったくやらないのとは雲泥の差があるはずだ。
(と言い聞かせて、やる気を保つ作戦)