Ruby on Rails アプリケーションにさまざまなデータベースを含めることを検討する必要があるのには、特有の理由があります。私の状況では、大量のデータを保存することが予想されました。デフォルトのデータベースは MySQL であると考えてください。アプリケーションのdatabase.ymlファイルに、通常の方法でMySQLの接続を書き込みます。その後、同じアプリケーション内で postgresql に接続するために、カスタム ファイルを作成する必要があります。
postgresqlに接続するためのカスタムデータベースファイルを作成する
という 2 番目のデータベースをセットアップします。 「統計」
まずはファイルを作成します config/database_stats.yml そして、プライマリ データベースの構成ファイルの場合と同じように設定します。ファイルは次のようになります。
発達:
アダプター: postgresql
エンコード: utf8
再接続: false
データベース: db_info_development
プール: 5
ホスト: ローカルホスト
ユーザー名: postgres
パスワード:
次に、スキーマと統計データベースのすべての移行を保持するディレクトリを作成します。名前を付けてディレクトリを作成する db_stats Rails ルートに移動し、以下のように構造をコピーします。
–db
–移行
スキーマ.rb
種子.rb
–db_stats
–移行
スキーマ.rb
種子.rb
作成されたファイルは空である必要があります。
Rakeタスクの追加
統計データベースを処理するには、作成、移行、その他の機能のためのカスタム タスクを作成する必要があります。ファイルを作成する lib/tasks/db_stats.rake 以下の内容で
名前空間:stats が行うこと
名前空間 :db は |ns| を実行します
タスク:ドロップドゥ
Rake::Task[“db:drop”].invoke
終わり
タスク:作成する
Rake::Task[“db:create”].invoke
終わり
タスク:セットアップ実行
Rake::Task[“db:setup”].invoke
終わり
タスク:移行実行
Rake::Task[“db:移行”].invoke
終わり
タスク:ロールバック実行
Rake::Task[“db:rollback”].invoke
終わり
タスク:シードドー
Rake::Task[“db:seed”].invoke
終わり
タスク:バージョン実行
Rake::Task[“db:version”].invoke
終わり
名前空間:スキーマ実行
タスク:ロード実行
Rake::Task[“db:schema:load”].invoke
終わり
タスク:ダンプ実行
Rake::Task[“db:schema:dump”].invoke
終わり
終わり
名前空間:テスト実行
タスク:準備をする
Rake::Task[“db:test:prepare”].invoke
終わり
終わり
# 上で定義したすべてのタスクに適切なタスクを追加および先頭に追加します。
ns.tasks.each は |task| を実行します。
task.enhance [“stats:set_custom_config”] を実行します
Rake::Task[“stats:revert_to_original_config”].invoke
終わり
終わり
終わり
タスク:set_custom_config を実行します
# 現在の変数を保存します
@original_config = {
env_schema: ENV['SCHEMA'],
構成: Rails.application.config.dup
}
# カスタム データベースの構成変数を設定します
ENV['SCHEMA'] = “db_stats/schema.rb”
Rails.application.config.paths['db'] = [“db_stats”]
Rails.application.config.paths['db/移行'] = [“db_stats/移行”]
Rails.application.config.paths['db/seeds'] = [“db_stats/seeds.rb”]
Rails.application.config.paths['config/database'] = [“config/database_stats.yml”]
終わり
タスク:revert_to_original_config を実行します
# 設定変数を元の値にリセットします
ENV['SCHEMA'] = @original_config[:env_schema]
Rails.application.config = @original_config[:config]
終わり
終わり
この設定がすべて完了したら、統計データベースを作成し、最初の移行を実行できます。
$ レーキ統計:db:作成 $ レーキ統計:db:移行これにより、統計データベース スキーマ ファイルが生成されます。 db_stats/schema.rb. カスタム移行ジェネレーターを追加します。パスがハードコードされているため、Rails ジェネレーターは使用できません。 データベース/移行。したがって、統計データベースのすべての移行を作成するにはカスタム ジェネレーターが必要です。ジェネレーターを作成します lib/generators/stats_migration_generator.rb 次のコードを貼り付けます。 'rails/generators/active_record/migration/migration_generator' クラス StatsMigrationGenerator < ActiveRecord::Generators::MigrationGenerator source_root File.join(File.dirname(ActiveRecord::Generators::MigrationGenerator.instance_method(:create_migration_file) .source_location.first), “templates”) def create_migration_file set_local_assigns! ファイル名を検証してください! migration_template @migration_template、「db_stats/移行/#{ファイル名}.rb」 終わり 終わり これをすべて準備すると、統計データベースの移行を生成できるようになります。
$ レール g stats_migration 移行名この移行ファイルは、統計データベースの移行ディレクトリに作成されます。 db_stats/移行。 その後、次のコマンドを実行して移行します。
$ レーキ統計:db:移行接続とモデルを完成させる PostgreSQL もうすぐ終わります。新しい初期化ファイルを追加する config/initializers/db_stats.rb そして以下を貼り付けます:
# 統計データベース設定をグローバル変数に保存します DB_STATS = YAML::load(ERB.new(File.read(Rails.root.join(“config”,”database_stats.yml”))).result)[Rails.env]mongodb の構成: Mongoid gem は、Ruby の MongoDB 用の ODM (Object-Document-Mapper) フレームワークです。
gem 'mongoid', '~> 5.1.0'ジェネレーターを実行すると設定ファイルを生成できます。 Mongoid はそこから他のすべてを処理します。
$ レール g mongoid:configそれからそれは作成します モンゴイド.yml 以下のように 発達: クライアント: デフォルト: データベース: モンゴイド ホスト: -ローカルホスト:27017 これでアプリケーションに、 MySQL, ポストグレSQL そして モンゴデータベース ユーザー、製品、イメージという 3 つのモデルを考えてみましょう。これら 3 つのモデルを使用すると、アプリケーション内でさまざまなデータベースを接続するのに役立ちます。 MySQL接続を使用したユーザーモデル クラス ユーザー < ActiveRecord::Base 終わり $ レール g 移行 create_users field_names rake db:移行 この移行ファイルは db/merge の下に作成され、MySQL データベースの下に保存されます。 クラス Product < ActiveRecord::Base 接続確立 DB_STATS 終わり $ レール g stats_migration create_products db_stats/移行/20151201191642_create_products.rb を作成します。 この移行ファイルは、統計データベースの移行ディレクトリ db_stats/merge に作成されます。 クラスイメージ Mongoid::Document を含める フィールド:名前、タイプ:文字列 フィールド:説明、タイプ:文字列 終わり mongodb は移行を実行する必要がありません。 ODM。このデータは以下で作成されています モンゴDB。 お気軽に お問い合わせ ご質問がございましたら。
カトネニ・ナガ・サイ・テジャスウィ
シニア ソフトウェア開発者