既存のアプリケーションに Mongoid を追加する
項目一覧
Overview
このガイドでは、既存の Sinatra またはRuby on Rails(Rails)アプリケーションに Mongoid を追加する方法を学習できます。 Mongoid を使用する新しいアプリケーションを設定する方法については、次のいずれかのガイドを参照してください。
Sinatra アプリケーション
既存の Sinatraアプリケーションで Mongoid の使用を開始するには、次の手順を実行します。
mongoid
の依存関係をアプリケーションのGemfile
に追加します。クイック スタートガイドの「MongoDB接続の構成 - Sinatra
」のステップに示されているように、
config/mongoid.yml
構成ファイルを作成し、接続ターゲットを指定します。クイック スタートガイドのMongoDBデータの表示 - Sinatra ステップに示されているように、アプリケーションファイルを作成し、構成ファイルをロードします。
データを操作するための Mongoid モデルを作成します。
Rails アプリケーション
既存の Railsアプリケーションに Mongoid を追加すると、他の ActiveRecord アダプターと一緒に実行できます。 アダプターの組み合わせを使用するには、mongoid
依存関係を追加し、構成ファイルに接続情報を入力して、アプリケーションでMongoDBの使用を開始します。
既存の RailsアプリケーションをActiveRecord の代わりに Mongoid のみを使用するように調整するには、次のセクションに記載されているように、他の構成変更を行う必要があります。
依存関係の変更
mongoid
gem をアプリケーションの Gemfile
に追加する。
gem 'mongoid'
Mongoid Gemfile
を唯一のデータベースアダプターとして使用するには、 や など、 にリストされているRDBMSライブラリを削除するか、コメントsqlite
pg
アウトします。
次に、次のコマンドを実行中て依存関係をインストールします。
bundle install
Mongoid の構成
次のコマンドを実行中て、デフォルトのMongoid 構成を生成します。
bin/rails g mongoid:config
このジェネレーターは、 MongoDBデプロイへの接続を構成するために使用される config/mongoid.yml
構成ファイルと、他のオプションを設定するために使用できる config/initializers/mongoid.rb
初期化ファイルを作成します。
config/mongoid.yml
ファイルで、接続文字列とその他の接続オプションを指定します。
フレームワークの変更
config/application.rb
ファイルを開いて、内容を確認します。 ファイルがrequire "rails/all"
ステートメントを使用してすべての Rails コンポーネントをロードする場合は、このステートメントを削除します。 次のサンプルconfig/application.rb
ファイルに示すように、Rails コンポーネントごとに個別の require
ステートメントを追加する必要があります。
# Remove or comment out rails/all #require "rails/all" # Add the following instead of rails/all: require "rails" # Comment out unneeded frameworks # require "active_record/railtie" rescue LoadError # require "active_storage/engine" rescue LoadError require "action_controller/railtie" rescue LoadError require "action_view/railtie" rescue LoadError require "action_mailer/railtie" rescue LoadError require "active_job/railtie" rescue LoadError require "action_cable/engine" rescue LoadError # require "action_mailbox/engine" rescue LoadError # require "action_text/engine" rescue LoadError require "rails/test_unit/railtie" rescue LoadError
注意
これらは ActiveRecord に依存しているため、 ActionText 、 ActiveStorage 、および ActionMailbox アダプターは Mongoid と併用できません。
アクティブなレコード アダプターの無効化
config/application.rb
およびアプリケーションのその他の構成ファイルで、config.active_record
と config.active_storage
への参照を削除するかコメント アウトします。
モデルを調整する
ActiveRecord の使用から Mongoid に移行するには、アプリケーションの既存のモデルを調整する必要があります。
ActiveRecord モデルは ApplicationRecord
クラスから派生しており、列定義がありません。一方、Mongoid モデルには通常スーパークラスはありませんが、Mongoid::Document
属性を含める必要があります。
Mongoid モデルを作成する際は、次の方法でフィールドを定義できます。
フィールドを明示的に定義する
例、基本的なアクティブ レコード Post
モデルは次のようになります。
class Post < ApplicationRecord has_many :comments, dependent: :destroy end
同様の Mongoid Post
モデルは次のようになります。
class Post include Mongoid::Document field :title, type: String field :body, type: String has_many :comments, dependent: :destroy end
次のコードに示すように、事前定義されたフィールドを使用する代わりに、動的フィールドを使用して Post
モデルを定義できます。
class Post include Mongoid::Document include Mongoid::Attributes::Dynamic has_many :comments, dependent: :destroy end
データ移行
MongoDBに移動したいデータがリレーショナルデータベースにすでにある場合は、 データ移行 を実行する必要があります。 MongoDBデータを保存するために事前定義されたスキーマは必要ないため、スキーマ移行を実行する必要はありません。
移行ツールは多くの場合、データセットに固有です。 Mongoid は ActiveRecord 関連付けのスーパーセットをサポートしていますが、Mongoid を ActiveRecord と比較すると、モデル参照がコレクションに異なる方法で保存されます。
RDBMSからMongoDBへの移行の詳細については、次のリソースを参照してください。
RDBMSからMongoDBへの移行ガイド(Amazon Web Servicesのドキュメント)
Rails API
Mongoid を使用する Rails APIアプリケーションを作成するプロセスは、通常のアプリケーションの作成とほぼ同じです。 唯一の違いは、アプリケーションを作成するには、rails
new
を実行中中に --api
フラグを追加する必要があることです。 Rails APIアプリケーションをMongoid に移行するには、前のセクションで説明されているのと同じ手順に従います。