パーフェクトRuby on Rails 中の第6章で取り扱っている題材、イベント開催支援系のRailsアプリケーション awesome_events のソースコードを Github 上で公開しました。
ソースコードは技術評論社さんのサポートページからダウンロードすることもできますが、やっぱり Github から持ってこれたほうがいいですよね。
さて awesome_events とはどんなアプリケーションでしょうか。すごくざっくり書くと、Doorkeeper や ATND の簡略版です。
使っている gem は、Rails を普段使っている人から見たらかなり普通な感じ。特筆すべきなのは carrierwave と ransack くらいでしょうか。omniauth で「Twitterログイン」機能を作ったりもしています。
gem 'rails', '4.1.1'
gem 'sqlite3', '~> 1.3.9'
gem 'sass-rails', '~> 4.0.3'
gem 'uglifier', '~> 2.5.0'
gem 'coffee-rails', '~> 4.0.1'
gem 'jquery-rails', '~> 3.1.0'
gem 'turbolinks', '~> 2.2.2'
gem 'omniauth', '~> 1.2.1'
gem 'omniauth-twitter', '~> 1.0.1'
gem 'kaminari', '~> 0.15.1'
gem 'kaminari-bootstrap', '~> 3.0.1'
gem "ransack", '~> 1.2.2'
gem 'carrierwave', '~> 0.10.0'
gem 'mini_magick', '~> 3.7.0'
group :development do
gem "capistrano", "3.1.0"
gem "capistrano-rails"
gem "capistrano-bundler"
gem "capistrano3-unicorn"
gem 'spring'
end
group :development, :test do
gem 'rspec-rails', '~> 3.0.0.beta', github: 'rspec/rspec-rails'
gem 'rspec-core', '~> 3.0.0.beta', github: 'rspec/rspec-core'
gem 'rspec-expectations', '~> 3.0.0.beta', github: 'rspec/rspec-expectations'
gem 'rspec-mocks', '~> 3.0.0.beta', github: 'rspec/rspec-mocks'
gem 'rspec-support', '~> 3.0.0.beta', github: 'rspec/rspec-support'
gem 'factory_girl_rails', '~> 4.4.1'
end
group :test do
gem 'shoulda-matchers', '~> 2.6.0'
gem 'capybara', '~> 2.2.1'
gem 'poltergeist', '~> 1.5.0'
gem 'database_cleaner', '~> 1.2.0'
end
group :staging, :production do
gem 'unicorn'
end
デザインは完全に Bootstrap です。
第6章に載っているコードをひたすら写経すれば、ちゃんと作れるようになっていますが、それなりに分量があるので全部写経するのはツライはず。このサンプルコードを最大限に活用してください。
テストはそれなりにきちんと書いています。お仕事よりもきちんと書いているかもしれません。rake stats
すると Code to Test Ratio: 1:4.9
となっていますね(たくさん書けばいいというものではないですが)。
rake stats
+----------------------+-------+-------+---------+---------+-----+-------+
| Name | Lines | LOC | Classes | Methods | M/C | LOC/M |
+----------------------+-------+-------+---------+---------+-----+-------+
| Controllers | 162 | 130 | 6 | 22 | 3 | 3 |
| Helpers | 15 | 15 | 0 | 1 | 0 | 13 |
| Models | 78 | 60 | 3 | 6 | 2 | 8 |
| Mailers | 0 | 0 | 0 | 0 | 0 | 0 |
| Javascripts | 33 | 14 | 0 | 3 | 0 | 2 |
| Libraries | 0 | 0 | 0 | 0 | 0 | 0 |
| Controller specs | 553 | 431 | 0 | 4 | 0 | 105 |
| Feature specs | 566 | 456 | 0 | 0 | 0 | 0 |
| Helper specs | 12 | 9 | 0 | 0 | 0 | 0 |
| Model specs | 200 | 163 | 0 | 0 | 0 | 0 |
| View specs | 23 | 19 | 0 | 0 | 0 | 0 |
+----------------------+-------+-------+---------+---------+-----+-------+
| Total | 1642 | 1297 | 9 | 36 | 4 | 34 |
+----------------------+-------+-------+---------+---------+-----+-------+
Code LOC: 219 Test LOC: 1078 Code to Test Ratio: 1:4.9
テストの章である7章では紙面の都合上、「テストの流れ」を紹介するのにとどめていますが、Github 上では、モデル、コントローラ、エンドツーエンドのテストを全て確認することができます。プロダクトコードにある程度の分量がないと、テストコードの「実践的なサンプル」としては成り立たないので、ブログなどでテストコード例を見せるのって難しいはず。awesome_events は程々の規模のアプリケーションの上にきちんとテストを書いているので、「Rails プロジェクトのテストが具体的にどのように書かれているか」を把握するのに役立つのではないかと思います。
フラゲした方もいるみたいですが、そろそろみなさんのお手元にも届くはずです。まだの方はポチっとどうぞ。サンプルコードと一緒にお楽しみください。
技術評論社
売り上げランキング: 370