前書き 〜なぜActive Recordを取り除くのか〜
Active Recordパターンにはいくつかの課題が存在します。
・アプリケーションのデータ構造とテーブル構造が実質上同一となる
・モデルの役割が多岐に渡る
・Fatモデルになる(永続化のための処理もあれば、データを修飾する役割もあれば、ビジネスロジックもある)
・StrategyパターンやCompositeパターンなどプログラミング、設計のテクニックを適用しにくい
・MVCパターンを、CかMかという分類だけで分けていくと自ずと行き着く課題で対策が必要
これらを考えたときにActive recordに依存しないような設計でアプリケーション開発する必要が出てくる可能性も考えられます。今回はそうなったときにどのファイルを消したり編集したりすればActive Record依存の解消ができるのか手順の方をご紹介致します。
*筆者はまだまだ未熟者でありますのでもし間違い等ございましたらぜひともご指摘の方よろしくお願い致します。。
modelの削除
まずはapp/models/配下にあるファイルを全て消してしまいましょう。Active recordに依存しない限りモデルを扱うことはございません。
config/environments/development.rb
config.active_record.migration_error = :page_load
と書かれているこの一行をコメントアウトしましょう。
config/environments/production.rb
config.active_record.dump_schema_after_migration = false
と書かれているこの一行をコメントアウトしましょう。
config/initializers/new_framework_defaults.rb
Rails.application.config.active_record.belongs_to_required_by_default = true
と書かれているこの一行をコメントアウトしましょう。
config/application.rb
最後に以下三行をコメントアウトしましょう。
require "active_model/railtie"
require "active_job/railtie"
require "active_record/railtie"
以上でActive record依存の解消はできたと思います。railssも問題なくできるかと思います。
ROM(Ruby Object Mapper)の活用
今回筆者がなぜActive recordの依存を解消したかったのかというとROMというgemを扱ってDBとの接続を行いたかったからでございます。以下ROMを取り入れた設定を追記致しますので興味のあります方はぜひ参考までにご覧くださいませ。
ROMにつきまして、くわしくは以下の公式ドキュメントをご参考ください。
http://rom-rb.org/
Romのインストール
Gemfileにて以下三行を追記してbundle installしましょう。
gem 'rom-rails'
gem 'rom-sql'
gem 'rom-repository'
initializerの作成
config/initializers配下にrom.rbというファイルを作成して下記のように内容を編集しましょう。
ROM::Rails::Railtie.configure do |config|
config.gateways[:default] = [:sql, 'DATABASE_URLをここに記述']
end
config/database.ymlなど利用されていない設定ファイルがあり分かりづらい
database.ymlは削除してしまいましょう。
上記が終わりましたらrails sをしてウェルカム画面が表示されているかどうか確かめてみましょう。
以上で今回は終わりますがRomについてはまだ続きの設定が存在します。次回はRomのセットアップについてもっと詳しく書いてみたいと思いますが英語が読めれば自分でもセットアップできますのでぜひお試しくださいませ。
http://rom-rb.org/learn/getting-started/rails-setup/