はじめてRails3で開発をするエンジニア向けに作成したメモ#2です。

Ruby on Rails3をインストールして、generatorでモデルやビューを作ってみる。
注: railsのバージョン3.1.3で記載しています(最新ではないです)

Ruby on Railsをインストールする

$ gem install rails
= 途中省略 =
Successfully installed rails-3.1.3

アプリを作る

$ rails new myapp
create
create  README
create  Rakefile
create  config.ru
create  .gitignore
create  Gemfile
create  app
create  app/assets/images/rails.png
create  app/assets/javascripts/application.js
create  app/assets/stylesheets/application.css
create  app/controllers/application_controller.rb
create  app/helpers/application_helper.rb
create  app/mailers
create  app/models
create  app/views/layouts/application.html.erb
create  app/mailers/.gitkeep
create  app/models/.gitkeep
create  config
create  config/routes.rb
create  config/application.rb
create  config/environment.rb
create  config/environments
create  config/environments/development.rb
create  config/environments/production.rb
create  config/environments/test.rb
create  config/initializers
create  config/initializers/backtrace_silencers.rb
create  config/initializers/inflections.rb
create  config/initializers/mime_types.rb
create  config/initializers/secret_token.rb
create  config/initializers/session_store.rb
create  config/initializers/wrap_parameters.rb
create  config/locales
create  config/locales/en.yml
create  config/boot.rb
create  config/database.yml
create  db
create  db/seeds.rb
create  doc
create  doc/README_FOR_APP
create  lib
create  lib/tasks
create  lib/tasks/.gitkeep
create  lib/assets
create  lib/assets/.gitkeep
create  log
create  log/.gitkeep
create  public
create  public/404.html
create  public/422.html
create  public/500.html
create  public/favicon.ico
create  public/index.html
create  public/robots.txt
create  script
create  script/rails
create  test/fixtures
create  test/fixtures/.gitkeep
create  test/functional
create  test/functional/.gitkeep
create  test/integration
create  test/integration/.gitkeep
create  test/unit
create  test/unit/.gitkeep
create  test/performance/browsing_test.rb
create  test/test_helper.rb
create  tmp/cache
create  tmp/cache/assets
create  vendor/assets/stylesheets
create  vendor/assets/stylesheets/.gitkeep
create  vendor/plugins
create  vendor/plugins/.gitkeep
run  bundle install
Fetching source index for http://rubygems.org/
= 途中省略 =
Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gem is installed.

アプリを起動する

$ cd myapp

※javascriptのライブラリ不足でエラーになるので以下を追記
・「Gemfile」を編集

gem 'execjs'
gem 'therubyracer'

・Gemfileに指定されたライブラリをインストール

$ bundle install

・サーバを起動(この例ではポート番号を3002で起動)

$ rails s -p 3002
=> Booting WEBrick
=> Rails 3.1.3 application starting in development on http://0.0.0.0:3002
=> Call with -d to detach
=> Ctrl-C to shutdown server
[2012-01-11 03:01:46] INFO  WEBrick 1.3.1

[2012-01-11 03:01:46] INFO WEBrick::HTTPServer#start: pid=12238 port=3002




## ブラウザからリクエスト
http://<ホスト名>:3002/
 ↑これでリクエストすると標準の画面が表示される

※ここまでで空っぽのアプリができた状態※
※以降の作業では基本的にrails serverは起動したままの状態でよい※



## Scaffoldで足場を作る
・generatorを実行

```bash  
$ rails g scaffold blog title:string body:string public:boolean  
invoke  active_record  
create    db/migrate/20120111031521_create_blogs.rb  
create    app/models/blog.rb  
invoke    test_unit  
create      test/unit/blog_test.rb  
create      test/fixtures/blogs.yml  
route  resources :blogs  
invoke  scaffold_controller  
create    app/controllers/blogs_controller.rb  
invoke    erb  
create      app/views/blogs  
create      app/views/blogs/index.html.erb  
create      app/views/blogs/edit.html.erb  
create      app/views/blogs/show.html.erb  
create      app/views/blogs/new.html.erb  
create      app/views/blogs/_form.html.erb  
invoke    test_unit  
create      test/functional/blogs_controller_test.rb  
invoke    helper  
create      app/helpers/blogs_helper.rb  
invoke      test_unit  
create        test/unit/helpers/blogs_helper_test.rb  
invoke  assets  
invoke    coffee  
create      app/assets/javascripts/blogs.js.coffee  
invoke    scss  
create      app/assets/stylesheets/blogs.css.scss  
invoke  scss  
create    app/assets/stylesheets/scaffolds.css.scss  

※モデル、ビュー、コントローラが生成されることに注目  ・app/models/blog.rb  ・app/views/blogs  ・app/controllers/blogs_controller.rb

・DBにテーブル作成

$ rake db:migrate  
==  CreateBlogs: migrating ====================================================  
-- create_table(:blogs)  
-&gt; 0.0016s  
==  CreateBlogs: migrated (0.0018s) ===========================================  

・ブラウザでアクセス http://<ホスト名>:3002/blogs  →作成・削除・更新・参照の一通りのことができる

routeを設定する

・「config/routes.rb」を編集

match  '/test' =&gt; &quot;blogs#index&quot;  

http://<ホスト名>:3002/test  ↑が「http://<ホスト名>:3002/blogs」と同じになる

Controller/Viewのみを作る

$ rails g controller about index profile  
create  app/controllers/about_controller.rb  
route  get &quot;about/profile&quot;  
route  get &quot;about/index&quot;  
invoke  erb  
create    app/views/about  
create    app/views/about/index.html.erb  
create    app/views/about/profile.html.erb  
invoke  test_unit  
create    test/functional/about_controller_test.rb  
invoke  helper  
create    app/helpers/about_helper.rb  
invoke    test_unit  
create      test/unit/helpers/about_helper_test.rb  
invoke  assets  
invoke    coffee  
create      app/assets/javascripts/about.js.coffee  
invoke    scss  
create      app/assets/stylesheets/about.css.scss  

※ビュー、コントローラが生成されることに注目  ・app/views/about  ・app/controllers/about_controller.rb

★少し詳しく見る

・「app/controllers/about_controller.rb」を参照

class AboutController &lt; ApplicationController  
def index  
end  

def profile  
end  

end  

※指定した「index」「profile」メソッドが生成されていることに注目

・「config/routes.rb」を参照

Myapp::Application.routes.draw do  
get &quot;about/index&quot;  

get &quot;about/profile&quot;  

resources :blogs  

match  '/test' =&gt; &quot;blogs#index&quot;  

※====省略====  

end  

・「app/views/about/index.html.erb」を参照

&lt;h1&gt;About#index&lt;/h1&gt;  
&lt;p&gt;Find me in app/views/about/index.html.erb&lt;/p&gt;  

・「app/helpers/about_helper.rb」を参照

module AboutHelper  
end  

Modelのみを作る

$ rails g model comment author:string body:string  
invoke  active_record  
create    db/migrate/20120111034456_create_comments.rb  
create    app/models/comment.rb  
invoke    test_unit  
create      test/unit/comment_test.rb  
create      test/fixtures/comments.yml  

$ rake db:migrate  
==  CreateComments: migrating =================================================  
-- create_table(:comments)  
-&gt; 0.0055s  
==  CreateComments: migrated (0.0056s) ========================================  

※モデルが生成されることに注目  ・app/models/comment.rb

★少し詳しく見る

・「app/models/comment.rb」を参照

class Comment &lt; ActiveRecord::Base  
end  

・「db/migrate/20120111034456_create_comments.rb」を参照

class CreateComments &lt; ActiveRecord::Migration  
def change  
create_table :comments do |t|  
t.string :author  
t.string :body  

t.timestamps  
end  
end  
end