Rails3チュートリアル (はじめてのRails3
はじめて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を実行
$ 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)
-> 0.0016s
== CreateBlogs: migrated (0.0018s) ===========================================
・ブラウザでアクセス http://<ホスト名>:3002/blogs →作成・削除・更新・参照の一通りのことができる
routeを設定する
・「config/routes.rb」を編集
match '/test' => "blogs#index"
http://<ホスト名>:3002/test ↑が「http://<ホスト名>:3002/blogs」と同じになる
Controller/Viewのみを作る
$ rails g controller about index profile
create app/controllers/about_controller.rb
route get "about/profile"
route get "about/index"
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 < ApplicationController
def index
end
def profile
end
end
※指定した「index」「profile」メソッドが生成されていることに注目
・「config/routes.rb」を参照
Myapp::Application.routes.draw do
get "about/index"
get "about/profile"
resources :blogs
match '/test' => "blogs#index"
※====省略====
end
・「app/views/about/index.html.erb」を参照
<h1>About#index</h1>
<p>Find me in app/views/about/index.html.erb</p>
・「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)
-> 0.0055s
== CreateComments: migrated (0.0056s) ========================================
※モデルが生成されることに注目 ・app/models/comment.rb
★少し詳しく見る
・「app/models/comment.rb」を参照
class Comment < ActiveRecord::Base
end
・「db/migrate/20120111034456_create_comments.rb」を参照
class CreateComments < ActiveRecord::Migration
def change
create_table :comments do |t|
t.string :author
t.string :body
t.timestamps
end
end
end