11
12

More than 5 years have passed since last update.

あとでもっかい試す用 - Ruby on Rails 4.0 チュートリアル - 第二章

Last updated at Posted at 2013-08-27

Ruby on Rails チュートリアル 実例を使ってRailsを学ぼう / Michael Hartl (マイケル・ハートル) を見ながらやったことを、あとでもう一度できるようにまとめます!!二章!!

第二章の説明

第2章では、Rails アプリケーションの基本的な仕組みを体験してもらうために、新たなプロジェクトを作成します。手っ取り早く動かしたいので、このデモアプリ (demo_app) では、scaffold (コラム 1.2) を使ってコードを自動生成します。
ただし、scaffold で自動生成されたコードは、複雑であまり美しくありません。このため、第2章では、自動生成されたコードを解説するのではなく、生成された URI (ウェブブラウザで言う URL1) がどのように動くのか、ウェブブラウザを使って確かめることに焦点を当てます。

プロジェクト作成 & 設定

プロジェクト作成

$ cd ~/workspace/ruby/rails
$ rails new demo_app
$ cd demo_app

プロジェクト設定

Gemfileを修正

$ subl Gemfile

source 'https://rubygems.org'
ruby '2.0.0'
#ruby-gemset=railstutorial_rails_4_0

gem 'rails', '4.0.0'

group :development do
  gem 'sqlite3', '1.3.7'
end

gem 'sass-rails', '4.0.0'
gem 'uglifier', '2.1.1'
gem 'coffee-rails', '4.0.0'
gem 'jquery-rails', '2.2.1'
gem 'turbolinks', '1.1.1'
gem 'jbuilder', '1.0.2'

group :doc do
  gem 'sdoc', '0.3.20', require: false
end

group :production do
  gem 'pg', '0.15.1'
  gem 'rails_12factor', '0.0.2'
end

bundle インストール

$ bundle install --without production
$ bundle update
$ bundle install

Git設定

$ git init
$ git add .
$ git commit -m "Initial commit"

Github設定

$ git remote add origin https://github.com/yujiroarai/demo_app.git
$ git push -u origin master

Usersリソース・Micropostsリソースを作成

$ rails generate scaffold User name:string email:string
$ rails generate scaffold Micropost content:string user_id:integer
$ bundle exec rake db:migrate

# 確認
$ rails s

モデルを修正

マイクロポストをマイクロにする

$ subl app/models/micropost.rb
 class Micropost < ActiveRecord::Base
+       validates :content, length: { maximum: 140 }
 end

ユーザーとマイクロポストをhas_manyで関連づける

$ subl app/models/user.rb 
 class User < ActiveRecord::Base
+       has_many :microposts
 end
$ subl app/models/micropost.rb 
 class Micropost < ActiveRecord::Base
+       belongs_to :user
+       validates :content, length: { maximum: 140 }
 end

確認

rails consoleでActiveRecordの動きを確認

$ rails console
Loading development environment (Rails 4.0.0)

# 一番最初に取得できるUserを変数first_userに入れる
irb(main):001:0> first_user = User.first
  User Load (0.1ms)  SELECT "users".* FROM "users" ORDER BY "users"."id" ASC LIMIT 1
=> #<User id: 1, name: "Yujiro Arai", email: "example@example.com", created_at: "2013-08-27 12:55:33", updated_at: "2013-08-27 12:55:33">

# first_userに紐づくmicropostsを取り出す
irb(main):002:0> first_user.microposts
  Micropost Load (1.3ms)  SELECT "microposts".* FROM "microposts" WHERE "microposts"."user_id" = ?  [["user_id", 1]]
=> #<ActiveRecord::Associations::CollectionProxy [#<Micropost id: 1, content: "Post!!!", user_id: 1, created_at: "2013-08-27 13:12:12", updated_at: "2013-08-27 13:12:12">, #<Micropost id: 2, content: "POST22!!!", user_id: 1, created_at: "2013-08-27 13:23:09", updated_at: "2013-08-27 13:23:09">]>

デプロイ

# Githubにpush
$ git add .
$ git commit -m "Finish demo app"
$ git push

# herokuにデプロイ
$ heroku create
$ git push heroku master
$ heroku run rake db:migrate
11
12
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
12