Es gibt bestimmte Gründe, warum Sie über die Verwendung verschiedener Datenbanken in Ihrer Ruby on Rails-Anwendung nachdenken sollten. In meiner Situation hatte ich damit gerechnet, große Datenmengen zu speichern. Bedenken Sie, dass die Standarddatenbank MySQL ist. Schreiben Sie in unserer Anwendungsdatei „database.yml“ auf normale Weise Verbindungen für MySQL. Danach müssen wir benutzerdefinierte Dateien erstellen, um Postgresql in derselben Anwendung zu verbinden.
Erstellen Sie die benutzerdefinierten Datenbankdateien, um Postgresql zu verbinden
Wir werden eine zweite Datenbank mit dem Namen einrichten "Statistiken"
Erstellen Sie zunächst die Datei config/database_stats.yml und füllen Sie es wie mit der Konfigurationsdatei der Primärdatenbank. Ihre Datei sieht in etwa so aus:
Entwicklung:
Adapter: postgresql
Kodierung: utf8
erneut verbinden: falsch
Datenbank: db_info_development
Pool: 5
Host: localhost
Benutzername: postgres
Passwort:
Wir erstellen jetzt ein Verzeichnis, das das Schema und alle Migrationen der Stats-Datenbank enthält. Verzeichnis mit Namen erstellen db_stats im Schienenstamm und kopieren Sie die Struktur wie unten beschrieben
–db
-Wandern
schema.rb
Samen.rb
–db_stats
-Wandern
schema.rb
Samen.rb
Die erstellten Dateien sollten leer sein.
Rake-Aufgaben hinzufügen
Für den Umgang mit der Statistikdatenbank müssen wir benutzerdefinierte Aufgaben für Erstellung, Migration und andere Funktionen schreiben. Erstellen Sie eine Datei lib/tasks/db_stats.rake mit dem folgenden Inhalt
Namespace :stats tun
Namespace :db do |ns|
Aufgabe :drop do
Rake::Task[„db:drop“].invoke
Ende
Aufgabe :erstellen tun
Rake::Task[“db:create”].invoke
Ende
Aufgabe :setup erledigen
Rake::Task[„db:setup“].invoke
Ende
Aufgabe: migrieren tun
Rake::Task[„db:migrate“].invoke
Ende
Aufgabe :rollback tun
Rake::Task[„db:rollback“].invoke
Ende
Aufgabe :seed do
Rake::Task[„db:seed“].invoke
Ende
Aufgabe :Version erledigen
Rake::Task[„db:version“].invoke
Ende
Namespace :schema do
Aufgabe :load do
Rake::Task[“db:schema:load”].invoke
Ende
Aufgabe :dump do
Rake::Task[“db:schema:dump”].invoke
Ende
Ende
Namespace :test do
Aufgabe :vorbereiten tun
Rake::Task[“db:test:prepare”].invoke
Ende
Ende
# Fügen Sie allen hier oben definierten Aufgaben die richtigen Aufgaben hinzu und stellen Sie ihnen diese voran
ns.tasks.each macht |task|
task.enhance [„stats:set_custom_config“] tun
Rake::Task[“stats:revert_to_original_config”].invoke
Ende
Ende
Ende
Aufgabe :set_custom_config tun
# aktuelle Vars speichern
@original_config = {
env_schema: ENV['SCHEMA'],
config: Rails.application.config.dup
}
# legt Konfigurationsvariablen für die benutzerdefinierte Datenbank fest
ENV['SCHEMA'] = „db_stats/schema.rb“
Rails.application.config.paths['db'] = [„db_stats“]
Rails.application.config.paths['db/migrate'] = [„db_stats/migrate“]
Rails.application.config.paths['db/seeds'] = [„db_stats/seeds.rb“]
Rails.application.config.paths['config/database'] = [„config/database_stats.yml“]
Ende
Aufgabe :revert_to_original_config tun
# hat die Konfigurationsvariablen auf die ursprünglichen Werte zurückgesetzt
ENV['SCHEMA'] = @original_config[:env_schema]
Rails.application.config = @original_config[:config]
Ende
Ende
Sobald die gesamte Einrichtung abgeschlossen ist, können wir die Statistikdatenbank erstellen und ihre erste Migration durchführen:
$ Rake stats:db:create $ Rake Stats:db:migrateDadurch wird die Statistikdatenbank-Schemadatei in generiert db_stats/schema.rb. Fügen Sie einen benutzerdefinierten Migrationsgenerator hinzu. Wir können den Rails-Generator nicht verwenden, da der Pfad den fest codiert db/migration. Daher benötigen wir einen benutzerdefinierten Generator, um alle Migrationen für die Statistikdatenbank zu erstellen. Erstellen Sie den Generator in lib/generators/stats_migration_generator.rb und fügen Sie den folgenden Code ein: require 'rails/generators/active_record/migration/migration_generator' Klasse StatsMigrationGenerator < ActiveRecord::Generators::MigrationGenerator source_root File.join(File.dirname(ActiveRecord::Generators::MigrationGenerator. case_method(:create_migration_file) .source_location.first), „templates“) def create_migration_file set_local_assigns! valid_file_name! migration_template @migration_template, „db_stats/migrate/#{file_name}.rb“ Ende Ende Nachdem dies alles erledigt ist, können wir nun Migrationen für die Statistikdatenbank generieren:
$-Rails g stats_migration migrationsnameDiese Migrationsdatei wird im Migrationsverzeichnis der Statistikdatenbank erstellt db_stats/migrate. Führen Sie anschließend den folgenden Befehl zur Migration aus.
$ Rake Stats:db:migrateSchließen Sie die Verbindung und die Modelle ab PostgreSQL Wir sind fast fertig. Fügen Sie eine neue Initialisierungsdatei hinzu config/initializers/db_stats.rb und fügen Sie Folgendes ein:
# speichert Statistikdatenbankeinstellungen in globaler Variable DB_STATS = YAML::load(ERB.new(File.read(Rails.root.join(„config“,database_stats.yml“))).result)[Rails.env]Mongodb konfigurieren: Mongoid Gem ist ein ODM-Framework (Object-Document-Mapper) für MongoDB in Ruby.
gem 'mongoid', '~> 5.1.0'Sie können eine Konfigurationsdatei generieren, indem Sie den Generator ausführen. Mongoid kümmert sich dann von dort aus um alles Weitere.
$ Schienen g mongoid:configDann entsteht mongoid.yml wie nachstehend Entwicklung: Kunden: Standard: Datenbank: mongoid Gastgeber: -localhost:27017 Jetzt haben wir das erfolgreich in unsere Anwendung integriert MySQL, postgresql Und mongodb Betrachten Sie drei Modelle – Benutzer, Produkt, Bild. Die Verwendung dieser drei Modelle wird uns helfen, verschiedene Datenbanken in unserer Anwendung zu verbinden. Benutzermodell mit MySQL-Anbindung Klasse User < ActiveRecord::Base Ende $ Rails G Migration create_users field_names rake db:migrieren Diese Migrationsdatei wird unter db/migrate erstellt und in der MySQL-Datenbank gespeichert. Klasse Produkt < ActiveRecord::Base etablieren_Verbindung DB_STATS Ende $ Schienen g stats_migration create_products Erstellen Sie db_stats/migrate/20151201191642_create_products.rb Diese Migrationsdatei wird im Migrationsverzeichnis der Statistikdatenbank db_stats/migrate erstellt. Klassenbild Mongoid::Document einschließen Feld: Name, Typ: String Feld: Beschreibung, Typ: Zeichenfolge Ende Da dies der Fall ist, müssen keine Migrationen für Mongodb durchgeführt werden ODM. Diese Daten werden unter erstellt MongoDB. Fühlen sich frei kontaktiere uns wenn Sie Fragen haben.
Katneni Naga Sai Tejaswi
Sr. Softwareentwickler
Abonnieren Sie die neuesten Updates
zusammenhängende Posts