セットアップ
$ cd ~/workspace
$ rails _5.1.2_ new sample_app
$ cd sample_app/
基本二章と同じだが、今回はテストグループを用意
source 'https://rubygems.org'
gem 'rails', '5.1.2'
gem 'puma', '3.9.1'
gem 'sass-rails', '5.0.6'
gem 'uglifier', '3.2.0'
gem 'coffee-rails', '4.2.2'
gem 'jquery-rails', '4.3.1'
gem 'turbolinks', '5.0.1'
gem 'jbuilder', '2.7.0'
group :development, :test do
gem 'sqlite3', '1.3.13'
gem 'byebug', '9.0.6', platform: :mri
end
group :development do
gem 'web-console', '3.5.1'
gem 'listen', '3.0.8'
gem 'spring', '2.0.2'
gem 'spring-watcher-listen', '2.0.1'
end
group :test do
gem 'rails-controller-testing', '1.0.2'
gem 'minitest-reporters', '1.1.14'
gem 'guard', '2.13.0'
gem 'guard-minitest', '2.4.4'
end
group :production do
gem 'pg', '0.18.4'
end
# Windows環境ではtzinfo-dataというgemを含める必要があります
gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
$ bundle update
$ bundle install --without production
$ git init
$ git add -A
$ git commit -m "Initialize repository"
同じ流れ。
最初のアプリケーションのときと同様に、まずはアプリケーションのルートディレクトリにあるREADME.mdファイルを更新して、具体的な作業内容をわかりやすく記入
書き終わったら、この変更をコミットします。
$ git commit -am "Improve the README"
後でproduction環境にプッシュするときに悩まずに済むよう、アプリをなるべく早い段階でHerokuにデプロイしておくとよいでしょう
(RailsのデフォルトのページはHeroku上ではうまく表示されない仕様になっています。このため、次のような変更を加えないとデプロイが成功したかどうかが分かりづらい、というのが本当の理由です。)
helloアクションをApplicationコントローラーに追加する
class ApplicationController < ActionController::Base
protect_from_forgery with: :exception
def hello
render html: "hello, world!"
end
end
ルートルーティングを設定する
Rails.application.routes.draw do
root 'application#hello'
end
終わったら、次のように変更をコミットしてHerokuにプッシュします。
$ git commit -am "Add hello"
$ git push
$ heroku create
$ git push heroku master
静的ページの生成
コントローラ生成
ブランチをきって
$ git checkout -b static-pages
コントローラーと共にアクションの追加
$ rails generate controller StaticPages home help
$ git add -A
$ git commit -m "Add a Static Pages controller"
$ git push -u origin static-pages #ブランチ名
最後のコマンドでは、static-pagesトピックブランチをBitbucketにプッシュしています。以後は、git push でok
StaticPagesコントローラ内のhomeアクションとhelpアクションで使うルーティング
Rails.application.routes.draw do
get 'static_pages/home'
get 'static_pages/help'
root 'application#hello'
end
サーバーを立ち上げて/static_pages/homeにアクセスして結果を表示してみる
(コラム)元に戻すDestroyコマンド、Rollbackコマンド
自動生成されたコードを元に戻すためには、新規作成されたファイルを削除するだけではなく、既存のファイルに挿入されたコードも削除する必要がある。このようなときは、「generate」という言葉に因んで、rails destroyというコマンドを実行することで元に戻すことができます。例えば次の2つのコマンドは、自動生成と、それに対応する取り消し処理の例です。
$ rails generate controller StaticPages home help
$ rails destroy controller StaticPages home help**
また、第2章でも簡単に紹介しましたが、マイグレーションの変更を元に戻す方法も用意されています。詳細は第6章で説明しますが、簡単に紹介すると、まずdb:migrateでデータベースのマイグレーションを変更します。
元に戻したいときは、db:rollbackで1つ前の状態に戻します。
$ rails db:migrate
$ rails db:rollback
最初の状態に戻したいときは、VERSION=0オプションを使います。
$ rails db:migrate VERSION=0
マイグレーションは逐次的に実行され、それぞれのマイグレーションに対してバージョン番号が付与されます。したがって、上記の0を別の数字に置き換えることによって、指定したバージョンの状態に戻すことができます。
ビューとは
ブラウザを開いたときの情報は何処にはいっているか。
home,helpアクションが空になっているので、/static_pages/homeにアクセスしても、単に対応するビューが出力されるだけとなっている。
ここでいうとcontrollコマンドが実行された際に同時に作られた以下である。
確認と同時に引用書き換え。
<h1>Sample App</h1>
<p>
This is the home page for the
<a href="https://railstutorial.jp/">Ruby on Rails Tutorial</a>
sample application.
</p>
<h1>Help</h1>
<p>
Get help on the Ruby on Rails Tutorial at the
<a href="https://railstutorial.jp/help">Rails Tutorial help page</a>.
To get help on this sample app, see the
<a href="https://railstutorial.jp/#ebook"><em>Ruby on Rails Tutorial</em>
book</a>.
</p>