前回、「Ruby on Rails チュートリアル をやってみた その2 - IxD's blog」で第2章をやりましたが、今回は
railstutorial.jp
こちらのチュートリアルをやっていきます。
今回は第3章 ほぼ静的なページの作成です。
第3章 ほぼ静的なページの作成
説明のみなので特にありません。
3.1 セットアップ
リスト3.1
$ cd ~/workspace
$ rails _4.2.2_ new sample_app
$ cd sample_app/
↓
実行したコマンド
$ cd ~/workspace
$ rails new sample_app
$ cd sample_app/
リスト3.2
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 :test do
gem 'minitest-reporters', '1.0.5'
gem 'mini_backtrace', '0.1.3'
gem 'guard-minitest', '2.3.1'
end
group :production do
gem 'pg', '0.17.1'
gem 'rails_12factor', '0.0.2'
end
↓
実際に使用したGemfile
source 'https://rubygems.org'
gem 'rails', '4.2.5'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
group :development, :test do
gem 'sqlite3'
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
end
group :test do
gem 'minitest-report'
gem 'mini_backtrace'
gem 'guard-minitest'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
完全に環境を一緒にすることも考えましたが、バージョンがほぼ変わらないのでそのまま進めることにしました。
第1章や第2章と同様に、リスト1.8や1.9の「Hello, world」の手順に従うことをお勧めします。
とありますが、リスト1.9はroutes.rbのデフォルト状態が掲載されているのみですので、リスト1.10を実行してほしいのだろうと解釈し、実行しています。
また、今回のやってみたではBitbucketやHerokuは使用しませんので、
$ git remote add origin git@bitbucket.org:<username>/sample_app.git
$ git push -u origin --all # リポジトリと参照を初めてプッシュする
上記コマンドは実行しません。そして、
$ git commit -am "Add hello"
$ heroku create
$ git push heroku master
はコミットのみ実行としました。ですので、
$ git commit -am "Add hello"
のみとなります。これらのことからも分かる通り、
$ heroku logs
についても必要ありませんので実行しません。
3.1 静的ページ
前章の章番号が3.1だったので、おそらくは3.2が正しいと思われます。
内容的には特に不明な点はありませんでした。
3.2.1 静的なページの生成
$ git status
$ git add -A
$ git commit -m "Add a Static Pages controller"
$ git push -u origin static-pages
記事にも説明がありますが、最後のコマンドはBitbucketへプッシュを実行するものなので、
$ git push -u origin static-pages
は実行しません。
3.3 テストから始める
説明のみなので特にありません。
3.3.1 最初のテスト
リスト 3.12: GREEN
$ bundle exec rake test
を実行すると、以下の文言が含まれるエラーが発生します。
doesn't exist yet. Run `rake db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter application.rb to limit the frameworks that will be loaded.
パス部分は省略していますが、rake db:migrateを実行せよ、ということですので実行しました。
$ bundle exec rake db:migrate
その後、
$ bundle exec rake test
を実行すると以下のエラーが出ました。
`require': cannot load such file -- guard (LoadError)
そこで、
$ bundle exec guard
を実行したところ、
bundler: command not found: guard
Install missing gem executables with `bundle install`
ということでしたので、Gemfileのtestに「gem 'guard’」を追加します。
group :test do
gem 'minitest-reporters'
gem 'mini_backtrace'
gem 'guard'
gem 'guard-minitest'
end
全体としては以下のようになります。
source 'https://rubygems.org'
gem 'rails', '4.2.5'
gem 'sass-rails', '~> 5.0'
gem 'uglifier', '>= 1.3.0'
gem 'coffee-rails', '~> 4.1.0'
gem 'jquery-rails'
gem 'turbolinks'
gem 'jbuilder', '~> 2.0'
gem 'sdoc', '~> 0.4.0', group: :doc
group :development, :test do
gem 'sqlite3'
gem 'byebug'
gem 'web-console', '~> 2.0'
gem 'spring'
end
group :test do
gem 'minitest-reporters'
gem 'mini_backtrace'
gem 'guard'
gem 'guard-minitest'
end
group :production do
gem 'pg'
gem 'rails_12factor'
end
書き換え後、
$ bundle install bundle install --without production
$ bundle update
と実行後、
$ bundle exec rake test
テストを実行すると、正常にテストを行うことができました。
3.3.2 Red
3.3.3 Green
特に詰まるポイントはありませんでした。
3.3.4 リファクタリング
説明のみなので特にありません。
3.4 少しだけ動的なページ
ようやく動的な要素が出てきましたね。
ここでの内容について、特に躓くポイントはありませんでしたが、実際にコードを書いた結果がわかりやすく反映される様は、僅かではあったとしても楽しくなってきます。
3.5 最後に
$ git add -A
$ git commit -m "Finish static pages"
と
$ git checkout master
$ git merge static-pages
までは実行しましたが、それ以降は実行していません。
3.5.1 本章のまとめ
説明のみなので特にありません。
3.6 演習
特に問題なくできました。
回答は本記事には掲載しません。
3.7 高度なセットアップ
3.7.1 minitestレポーター
特に詰まるポイントはありませんでした。
3.7.2 Backtrace silencer
私はクラウドIDEを使用していませんので、スキップしました。
3.7.3 Guardによるテストの自動化
3.3.1 最初のテストで問題となったguardについて記載があります。
こちらでリスト3.2においてguard gem をアプリ内に取り込み済みである、という記載がありますがリスト3.2の状態で
$ bundle exec guard init
とすることで動かすことができるとあるのですが、guard gemはリスト3.2にはありませんので、下記のエラーになります。
`block in replace_gem': guard is not part of the bundle. Add it to Gemfile. (Gem::LoadError)
ですので上記3.3.1の箇所で指摘した通り、guardを追加しておきましょう。
次回、「Ruby on Rails チュートリアル をやってみた その4 - IxD's blog」は
railstutorial.jp
をやっていきます。