Sample app for https://nishiwaki-koberb.doorkeeper.jp/events/39705
- このリポジトリを自分のアカウントへフォークする
- ローカルにgit cloneする
rbenv local 2.2.4
実行(または 2.2系の任意のバージョンを指定)bundle install
実行cp config/database.yml.sample config/database.yml
実行config/database.yml
を自分の環境に合わせて編集するbin/rake db:setup
実行bin/rake db:setup RAILS_ENV=test
実行rails s
実行- http://0.0.0.0:3000 にアクセスしてページが開くことを確認
bin/rspec
を実行してテストがエラーなく実行できることを確認
以下は設問0(チュートリアル問題)の解答手順。
- http://0.0.0.0:3000/questions/q0 を開いて問題を確認する
spec/features/question_0_spec.rb
を開くxscenario
になっている部分をscenario
に変更するbin/rspec
を実行し、テストが失敗することを確認するapp/views/questions/q0.html.slim
を開く= render layout: 'layouts/answer_section' do
以下のコードに注目する/ 望ましくない解答例
の下にある/table
をtable
に変更する(コメントを外す)- http://0.0.0.0:3000/questions/q0 を開いて、Exampleと同じ結果が表示されていることを確認する
bin/rspec
を実行すると、テストはパスするが、"[WARN] Query count: 4" という警告が表示されることを確認する/ 望ましくない解答例
の下にあるtable
を/table
に戻す/ 望ましい解答例
の下にある/table
をtable
に変更する- http://0.0.0.0:3000/questions/q0 を開いて、Exampleと同じ結果が表示されていることを確認する。その下に "Query count: 1 OK" と表示されていることもあわせて確認する
bin/rspec
を実行すると、テストがパスし、警告も出ないことを確認する- 解答が終わったら、コードの変更点をコミットする
- 変更して良いのは
= render layout: 'layouts/answer_section' do
から下のコードと、モデルのコードのみ。コントローラやテストコードは変更してはいけない。 - SQL1発で求められている結果を表示できるようにする。クエリを2回以上発行したり、RubyのコードでソートやフィルタリングをするのはNG。
解答例は answer ブランチに掲載されている。 ただし、これが唯一かつベストな解答というわけではない。
https://github.com/JunichiIto/sql-study/tree/answer
MIT License.