lepetit

自分の勉強メモ

RoRチュートリアル第2章

Ruby on Railsチュートリアル第2章Toyアプリケーション!
railstutorial.jp


前回つくった,workspaceディレクトリに移動してToyアプリの骨組みを生成する。
railsのバージョンは入っているものに合わせて…

$ cd ~/workspace
$ rails _4.2.6_ new toy_app
$ cd toy_app/

Toy_appの中のGemfileを書き換える。

source 'https://rubygems.org'

gem 'rails',        '4.2.2'
gem 'sass-rails',   '5.0.2'
gem 'uglifier',     '2.5.3'
gem 'coffee-rails', '4.1.0'
gem 'jquery-rails', '4.0.3'
gem 'turbolinks',   '2.3.0'
gem 'jbuilder',     '2.2.3'
gem 'sdoc',         '0.4.0', group: :doc

group :development, :test do
  gem 'sqlite3',     '1.3.9'
  gem 'byebug',      '3.4.0'
  gem 'web-console', '2.0.0.beta3'
  gem 'spring',      '1.1.3'
end

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

ローカルgemをインストールして,

$ bundle install --without production

GitでこのToyアプリケーションもバージョン管理できるようにする。

$ git init
$ git add -A
$ git commit -m "Initialize repository"

GitHubで新しいリポジトリを作成して生成したファイルをこの新しいリモートリポジトリにプッシュする。

$ git remote add origin https://github.com/irish15/toy_app.git
$ git push -u origin --all 

この変更をコミットし,Herokuにプッシュ!

$ git commit -am "Add hello"
$ heroku create
$ git push heroku master

これで,アプリケーションを作成するための下準備が整ったので早速設計していく。

ユーザーのモデル設計

f:id:iris15:20160828152131j:plain:w200

これを実装する。

$ rails generate scaffold User name:string email:string


scaffold*1もまた便利なrailsの機能…

続いて,Rakeを使用してデータベースを更新し,usersデータモデルを作成する。rakeコマンドはRuby版のmakeって感じ

$ bundle exec rake db:migrate

サーバー起動させてwebページ確認してみよう!

$ rails server

ユーザーページを確認ね → http://localhost:3000/users

できてる〜〜〜〜〜(˶‾᷄ ⁻̫ ‾᷅˵)
f:id:iris15:20160828155512j:plain


toy_app/config_routes.rbの

# root 'welcome#index'

を,以下に書き換える

$ root 'application#hello'


次に,マイクロポストのモデル設計
f:id:iris15:20160828161130j:plain:w200
これを実装する。

$ rails generate scaffold Micropost content:text user_id:integer
$ bundle exec rake db:migrate

toy_app/config/routes.rbを以下のようにする。

Rails.application.routes.draw do
  resources :microposts
  resources :users

はい確認〜〜 → http://localhost:3000/microposts

できてる〜〜〜〜〜(˶‾᷄ ⁻̫ ‾᷅˵)
f:id:iris15:20160828163205j:plain

更に文字数制限をつけてみよう。最大140文字にする!
toy_app/app/models/micropost.rbに書き足し

class Micropost < ActiveRecord::Base
  validates :content, length: { maximum: 140 }
end

文字数制限を超えるとエラーメッセージが出るようになったらおけb
f:id:iris15:20160828163409j:plain


ユーザーとマイクロポストを関連づける!
こういうイメージ↓↓
f:id:iris15:20160828170250j:plain

1人のユーザーに複数のマイクロポストがある。
toy_app/app/models/user.rb

class User < ActiveRecord::Base
  has_many :microposts
end

1つのマイクロポストは1人のユーザーにのみ属する。
toy_app/app/models/microposts.rb

class Micropost < ActiveRecord::Base
  belongs_to :user
  validates :content, length: { maximum: 140 }
end

UsersコントローラとMicropostsコントローラにおける継承関係のイメージはこういう感じになる↓↓
f:id:iris15:20160828170359j:plain


ふぅ〜
さて,アプリケーションをデプロイしましょ

$ git add -A
$ git commit -m "Finish toy app"
$ git push

Herokuにも展開しとこ!

$ git push heroku 
$ heroku run rake db:migrate

実行すると,
remote: https://~~~~~~~~ deployed to Heroku
ってのがあるから,このurlにいくと,作成したwebアプリケーションのToyAppが見れる!!(⁎˃ᴗ˂⁎)


よきかなよきかな〜〜〜👏👏

*1:railsアプリケーションの開発をする際には、モデルやコントローラー、ビュー(前回述べたMVC)を作っていき、さらに必要なルーティングを作成していく必要がある。 scaffoldは,これらの作業をまとめて行って、簡単にアプリケーションの雛形を作ってくれる機能。