rails で Domain Driven Design の domain 層を作ってみる

こんにちは。システム屋まそおの舩原です。

ドメイン駆動設計を実践すべくがんばっている今日この頃です。

rails で、ドメイン駆動設計における ”値オブジェクト” どこに置いたらいいかなと考えていた所、
Qiita でドメイン駆動設計の rails サンプル書いた人が出てきました。

それとほぼ平行して DDD の rails サンプルを見つけました。
https://github.com/paulrayner/ddd_sample_app_ruby

ruby sample なんて書いてるけど、どう見ても rails です。

上記二つは、 app ディレクトリと同列に domain ディレクトリが作らていているけど、 app 配下に作った方が、マシかもと思ったのと $rails g domains kanban って打って生成できるようにしたかったので、gem を初めて作ってみました。


何ができるか

これで何ができるかというと、 $rails g domains NAME app/domains/#{NAME} という感じのディレクトリを作り、それを ActiveSupport::Dependencies.autoload_paths に追加するだけです。


使い方

とりあえず、 rails 4.2.4 以上で

$ rails new myapp
$ cd myapp
$ cat "gem 'ddd_domain'" > Gemfile
$ bundle install
$ rails g domain kanban

とできます。お試しください。 まだ、やっつけで作った部分が、多いので少しづつ直していくつもりですが、pull request もらえたらうれしい…


ソースコード

github で公開しています。
https://github.com/masoo/ddd_domain