Hay distintas razones por las que debería pensar en tener varias bases de datos en su aplicación Ruby on Rails. En mi situación, esperaba almacenar grandes cantidades de datos. Considere que la base de datos predeterminada es MySQL. En el archivo Database.yml de nuestra aplicación, escriba las conexiones para MySQL de forma normal. Después de eso, para conectar postgresql en la misma aplicación necesitamos crear archivos personalizados.
Cree los archivos de base de datos personalizados para conectar postgresql
Vamos a configurar una segunda base de datos llamada “Estadísticas”
Primero que nada, crea el archivo. config/database_stats.yml y complételo como lo hace con el archivo de configuración de la base de datos principal. Su archivo se verá así:
desarrollo:
adaptador: postgresql
codificación: utf8
reconectar: falso
base de datos: db_info_development
piscina: 5
anfitrión: servidor local
nombre de usuario: postgres
contraseña:
Ahora vamos a crear un directorio que contendrá el esquema y todas las migraciones de la base de datos de Stats. Crear directorio con nombre db_stats en la raíz de los rieles y copie la estructura como se menciona a continuación
–db
-emigrar
esquema.rb
semillas.rb
–db_stats
-emigrar
esquema.rb
semillas.rb
Los archivos creados deben estar vacíos.
Agregar tareas de rake
Para manejar la base de datos de estadísticas, necesitamos escribir tareas personalizadas para creación, migraciones y otras funcionalidades. Crear un archivo lib/tasks/db_stats.rake con el siguiente contenido
espacio de nombres: las estadísticas lo hacen
espacio de nombres :db hacer |ns|
tarea: soltar hacer
Rastrillo::Tarea[“db:soltar”].invocar
fin
tarea: crear hacer
Rake::Tarea[“db:create”].invocar
fin
tarea: configuración hacer
Rastrillo::Tarea[“db:setup”].invocar
fin
tarea: migrar hacer
Rastrillo::Tarea[“db:migrar”].invocar
fin
tarea: revertir hacer
Rastrillo::Tarea[“db:rollback”].invocar
fin
tarea: hacer semillas
Rastrillo::Tarea[“db:seed”].invocar
fin
tarea: versión hacer
Rastrillo::Tarea[“db:versión”].invocar
fin
espacio de nombres: esquema hacer
tarea: cargar hacer
Rake::Tarea[“db:schema:load”].invocar
fin
tarea: volcar hacer
Rake::Tarea[“db:schema:dump”].invocar
fin
fin
espacio de nombres: prueba hacer
tarea: preparar hacer
Rake::Tarea[“db:test:prepare”].invocar
fin
fin
# agrega y antepone las tareas adecuadas a todas las tareas definidas aquí anteriormente
ns.tasks.cada uno hace |tarea|
task.enhance [“estadísticas:set_custom_config”] hacer
Rake::Tarea[“stats:revert_to_original_config”].invocar
fin
fin
fin
tarea: set_custom_config hacer
# guardar vars actuales
@original_config = {
env_schema: ENV['ESQUEMA'],
configuración: Rails.application.config.dup
}
# establece variables de configuración para base de datos personalizada
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”]
fin
tarea: revert_to_original_config hacer
# restablece las variables de configuración a los valores originales
ENV['SCHEMA'] = @original_config[:env_schema]
Rails.application.config = @original_config[:config]
fin
fin
Una vez realizada toda esta configuración, podemos crear la base de datos de estadísticas y ejecutar su primera migración:
Estadísticas de rake de $:db:create Estadísticas de rake de $:db:migrarEsto generará el archivo de esquema de la base de datos de estadísticas en db_stats/schema.rb. Agregue un generador de migración personalizado. No podemos usar el generador de rieles porque la ruta codifica el db/migrar. Por lo tanto, necesitamos tener un generador personalizado para crear todas las migraciones para la base de datos de estadísticas. Crea el generador en lib/generators/stats_migration_generator.rb y pega el siguiente código: require 'rieles/generadores/active_record/migración/migración_generador' clase StatsMigrationGenerator < ActiveRecord::Generadores::MigrationGenerator source_root File.join(File.dirname(ActiveRecord::Generators::MigrationGenerator.stance_method(:create_migration_file) .source_location.first), “plantillas”) def crear_archivo_migración set_local_assigns! validar_nombre_archivo! plantilla_migración @template_migración, “db_stats/migrate/#{nombre_archivo}.rb” fin fin Con todo esto implementado, ahora podemos generar migraciones para la base de datos de Estadísticas:
$ rieles g stats_migration nombre_migraciónEste archivo de migración se crea en el directorio de migración de la base de datos de estadísticas. db_stats/migrar. Después de eso, ejecute el siguiente comando para migrar.
Estadísticas de rake de $:db:migrarFinalizar la conexión y los modelos para PostgreSQL Ya casi hemos terminado. Agregar un nuevo archivo inicializador configuración/inicializadores/db_stats.rb y pega lo siguiente:
# guardar la configuración de la base de datos de estadísticas en var global DB_STATS = YAML::load(ERB.new(File.read(Rails.root.join(“config”,”database_stats.yml”))).resultado)[Rails.env]Configurando mongodb: Mongoid gem es un marco ODM (Object-Document-Mapper) para MongoDB en Ruby.
gema 'mongoide', '~> 5.1.0'Puede generar un archivo de configuración ejecutando el generador. Mongoid se encargará de todo lo demás desde allí.
$ rieles g mongoide:configLuego crea mongoide.yml como a continuación desarrollo: clientela: por defecto: base de datos: mongoide Hospedadores: -localhost:27017 Ahora en nuestra aplicación hemos integrado con éxito el mysql, postgresql y mongodb Considere tres modelos: usuario, producto, imagen. Usar estos tres modelos nos ayudará a conectar diferentes bases de datos en nuestra aplicación. Modelo de usuario con conexión MySQL clase Usuario < ActiveRecord::Base fin $ rieles g migración crear_usuarios nombres de campo rastrillo db:migrar Este archivo de migración se crea en db/migrate y se almacenará en la base de datos MySQL. clase Producto < ActiveRecord::Base establecer_conexión DB_STATS fin $ rieles g stats_migration create_products crear db_stats/migrate/20151201191642_create_products.rb Este archivo de migración se crea en el directorio de migración de la base de datos de estadísticas db_stats/migrate. Imagen de clase incluir mongoide::Documento campo :nombre, tipo: Cadena campo: descripción, tipo: Cadena fin No es necesario ejecutar ninguna migración para mongodb ya que es ODM. Estos datos se crean bajo MongoDB. No dude en Contáctenos si tienes alguna consulta.
Katneni Naga Sai Tejaswi
Desarrollador de software sénior
Suscríbete para recibir las últimas actualizaciones
Artículos Relacionados