Ci sono ragioni distintive per cui dovresti pensare di avere vari database nella tua applicazione Ruby on Rails. Nella mia situazione, mi aspettavo di archiviare grandi quantità di dati. Considera che il database predefinito è MySQL. Nel nostro file database.yml dell'applicazione scriviamo le connessioni per MySQL in modo normale. Successivamente, per connettere postgresql nella stessa applicazione dobbiamo creare file personalizzati.
Crea i file di database personalizzati per connettere postgresql
Creeremo un secondo database chiamato “Statistiche”
Prima di tutto, crea il file config/database_stats.yml e popolarlo come si fa con il file di configurazione del database primario. Il tuo file sarà simile a questo:
sviluppo:
adattatore: postgresql
codifica: utf8
riconnettersi: falso
banca dati: db_info_development
piscina: 5
ospite: host locale
nome utente: postgres
parola d'ordine:
Creeremo ora una directory che conterrà lo schema e tutte le migrazioni del database Stats. Crea directory con nome db_stats nella radice dei binari e copia la struttura come indicato di seguito
–db
-migrare
schema.rb
semi.rb
–db_stats
-migrare
schema.rb
semi.rb
I file creati dovrebbero essere vuoti.
Aggiungi attività Rake
Per gestire il database delle statistiche, dobbiamo scrivere attività personalizzate per la creazione, le migrazioni e altre funzionalità. Crea un file lib/tasks/db_stats.rake con il contenuto seguente
namespace :stats lo fanno
spazio dei nomi :db do |ns|
compito: lascia fare
Rake::Task[“db:drop”].invoke
FINE
compito: creare fare
Rake::Task[“db:crea”].invoke
FINE
compito: installazione da eseguire
Rake::Task[“db:setup”].invoke
FINE
compito: migrare fare
Rake::Task[“db:migrate”].invoke
FINE
compito: eseguire il rollback
Rake::Task[“db:rollback”].invoke
FINE
compito: semina fai
Rake::Task[“db:seed”].invoke
FINE
compito: versione do
Rake::Task[“db:versione”].invoke
FINE
namespace :schema do
compito: carica, fai
Rake::Task["db:schema:load"].invoke
FINE
compito: scaricalo
Rake::Task["db:schema:dump"].invoke
FINE
FINE
spazio dei nomi: test da eseguire
compito: preparare fare
Rake::Task[“db:test:prepare”].invoke
FINE
FINE
# aggiunge e antepone i compiti propri a tutti i compiti definiti qui sopra
ns.tasks.each esegue |attività|
task.enhance ["stats:set_custom_config"] fare
Rake::Task[“stats:revert_to_original_config”].invoke
FINE
FINE
FINE
attività: set_custom_config esegui
# salva le var correnti
@config_originale = {
env_schema: ENV['SCHEMA'],
configurazione: Rails.application.config.dup
}
# imposta le variabili di configurazione per il database personalizzato
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"]
FINE
attività: ripristina_to_originale_config esegui
# ripristina le variabili di configurazione sui valori originali
ENV['SCHEMA'] = @original_config[:env_schema]
Rails.application.config = @original_config[:config]
FINE
FINE
Una volta completata tutta questa configurazione, possiamo creare il database delle statistiche ed eseguire la prima migrazione:
Statistiche rake $:db:crea Statistiche rake $:db:migrazioneQuesto genererà il file di schema del database Stats in db_stats/schema.rb. Aggiungi un generatore di migrazione personalizzato Non possiamo utilizzare il generatore di binari perché il percorso codifica il file db/migrazione. Pertanto, è necessario disporre di un generatore personalizzato per creare tutte le migrazioni per il database delle statistiche. Crea il generatore in lib/generators/stats_migration_generator.rb e incolla il seguente codice: require 'rotaie/generatori/active_record/migration/migration_generator' class StatsMigrationGenerator < ActiveRecord::Generators::MigrationGenerator source_root File.join(File.dirname(ActiveRecord::Generators::MigrationGenerator. example_method(:create_migration_file) .source_location.first), “templates”) def crea_file_di_migrazione set_local_assigns! convalida_nome_file! migrazione_template @migration_template, “db_stats/migrate/#{nome_file}.rb” FINE FINE Con tutto ciò a posto, ora possiamo generare migrazioni per il database Stats:
$ rails g stats_migration nome_migrazioneQuesto file di migrazione viene creato nella directory di migrazione del database delle statistiche db_stats/migrate. Successivamente, esegui il comando seguente per eseguire la migrazione.
Statistiche rake $:db:migrazioneFinalizzare la connessione e i modelli per PostgreSQL Abbiamo quasi finito. Aggiungi un nuovo file di inizializzazione config/initializers/db_stats.rb e incolla quanto segue:
# salva le impostazioni del database delle statistiche nella var globale DB_STATS = YAML::load(ERB.new(File.read(Rails.root.join(“config”,”database_stats.yml”))).result)[Rails.env]Configurazione di mongodb: Mongoid gem è un framework ODM (Object-Document-Mapper) per MongoDB in Ruby.
gemma 'mongoide', '~> 5.1.0'È possibile generare un file di configurazione eseguendo il generatore. Mongoid gestirà quindi tutto il resto da lì.
Guide $ g mongoid:configQuindi crea mongoid.yml come sotto sviluppo: clienti: predefinito: banca dati: mongoide ospiti: -hostlocale:27017 Ora nella nostra applicazione abbiamo integrato con successo il file MySQL, postgresql E mongodb Consideriamo tre modelli: Utente, Prodotto, Immagine. L'utilizzo di questi tre modelli ci aiuterà a connettere diversi database nella nostra applicazione. Modello utente con connessione MySQL classe Utente < ActiveRecord::Base FINE $ guida la migrazione create_users field_names rake db:migrare Questo file di migrazione viene creato in db/migrate e verrà archiviato nel database MySQL. classe Prodotto < ActiveRecord::Base stabilire_connessione DB_STATS FINE $ binari g stats_migration create_products creare db_stats/migrate/20151201191642_create_products.rb Questo file di migrazione viene creato nella directory di migrazione del database delle statistiche db_stats/migrate. immagine di classe includere Mongoid::Documento campo:nome, tipo: Stringa campo: descrizione, tipo: Stringa FINE Non è necessario eseguire alcuna migrazione per mongodb poiché lo è ODM. Questi dati vengono creati sotto MongoDB. Sentiti libero di Contattaci se hai qualche domanda
Katneni Naga Sai Tejaswi
Sviluppatore software senior
Iscriviti per gli ultimi aggiornamenti
Articoli correlati