Sample app for https://nishiwaki-koberb.doorkeeper.jp/events/39705
rbenvがインストールされていることrbenvでRuby 2.2系がインストールされていること- Ruby 2.2系に
bundlerがインストールされていること - Postgres 9.4以上がインストールされていること(MacはHomebrewからインストールすること)
- このリポジトリを自分のアカウントへフォークする
- ローカルに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。
- ExampleにIDが出ている場合、IDの値まで全く同じにする必要はない。(ソート順の正しさが確認できればそれで良い)
解答例は answer ブランチに掲載されている。 ただし、これが唯一かつベストな解答というわけではない。
https://github.com/JunichiIto/sql-study/tree/answer
MIT License.