LoginSignup
5
2

More than 5 years have passed since last update.

RailsにおけるActive Record依存の解消の手順

Last updated at Posted at 2017-04-22

前書き 〜なぜ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.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/

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2