Rails5 Boilerplate クイックスタート用に作ってみた

Rails5 Boilerplateの必要性

Ruby on Railsで開発をするようになって3年以上が経ちました。WEBアプリを開発する事に慣れてくると、だいたい毎回必要となる物があります。 それらをひな形として作って置くことで、開発のスピードアップを図りたいという目的でBoilerplate(ボイラープレート)を作るに至りました。

僕がBoilerplateに求めるものは…

  • 新しいRailsのバージョン
  • UI: Bootstrap, FontAwesome
  • 使いやすいテンプレートエンジン(Slim or Haml)
  • 基本的な機能だけ (豪華な機能は要らない)
  • DBはMySQL
  • ユーザ認証の機能があればベター (Devise gem)

オープンソースの他の良さそうなBoilerplateもありましたが、少しずつ僕のニーズからは異なるものでした。 あまりにも機能が少ないものもあれば、大きすぎるものもありました。

そこで、僕自身の使いやすいBoilerplateを作ることとしました。

Rails5 Boilerplate top page

Githubもぜひご覧ください https://github.com/takp/rails5-boilerplate

Gems

本当に必要なGemだけを選びました。素晴らしいGemは沢山ありますが、使わないかも知れないのでそういうGemは入れていません。

アーキテクチャ

MVC + Service層 + Decorator層

  • モデル: app/models
  • ビュー: app/views
  • コントローラ: app/controllers
  • サービス: app/services
  • デコレータ: app/decorators

サービス層

特定のモデルに依存しない処理や、2〜3種類以上のモデルとやり取りする処理、また、外部APIとのやり取りを行う処理などをサービスとして切り出して書きます。 責任の分担が明確になりますし、テストも書きやすくなります。 そして、モデルやコントローラをシンプルに保つ事が出来るので、私はサービスにクラスを作って処理を分けるようにしています。

デコレータ

モデルには、ビューで使われるようなメソッドを直接定義しない方が良いでしょう。これも別に分けて書いていく方がコードがキレイに保てます。 モデル層はビジネスロジックに集中すべきです。 こういったビューに使われるモデルクラスのコードを集約するのがデコレータの役割です。

How to use?

$ git clone git@github.com:takp/rails5-boilerplate.git
$ cd rails5-boilerplate
$ bundle install

DB接続のための情報を設定した後、

$ bundle exec rake db:create
$ bundle exec rake db:migrate
$ bin/rails server

これでトップページが見られるようになったはずです。 詳しくは、Githubのページ(Rails5 boilerplate)をご参照ください。

ぜひ一度試してみて、提案などがあればご連絡ください。

もし良ければGithubでスターをもらえたら幸いです。

@takp