Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

318
Visualizações
Buen enfoque para cambiar la base de datos para el modo de prueba / modo de caja de arena: Rails 6

Estoy trabajando en una aplicación en la que ahora necesito agregar funciones de modo de test mode sandbox mode como las que ofrece Stripe en el tablero. En esta característica, cuando el usuario activó el modo de prueba, el usuario puede probar la funcionalidad y puede crear datos ficticios en la misma sesión/token de inicio de sesión.

He intentado usar la función Rails 6 para usar varias bases de datos, pero tengo algunas preguntas:

  • ¿Es bueno cambiar la conexión en producción para el modo de prueba aunque no tengamos muchas solicitudes de prueba?
  • ¿Será bueno tener una instancia separada para el modo de prueba con el subdominio de prueba? en este caso, ¿cómo debemos administrar las sesiones de inicio de sesión? ¿Deberíamos copiar datos para probar la base de datos? ¿Será una práctica buena y común?

Solo puedo implementar esto si tengo datos de usuario en la base de datos de prueba para que cuando cambie el sistema de conexión de la base de datos no envíe una respuesta no autenticada.

Nota:

  • para el inicio de sesión y la actualización del usuario, utilizará la base de datos principal todo el tiempo y para otras acciones, utilizará la base de datos test_mode. Estoy haciendo esto mediante skip_around_action en un controlador específico.
  • Estamos haciendo esto para que cuando el usuario desactive el modo de prueba, actualice la base de datos principal y la siguiente solicitud use la base de datos principal según la lógica around_action

Aquí está mi código actual en application_controller.rb:

 around_action :setup_db_connection def setup_db_connection database_key = (user.test_mode?) ? :test_mode : :primary ActiveRecord::Base.connected_to(database: database_key) do yield end end

La clave de base de datos test_mode tiene una configuración de base de datos de prueba en database.yml de datos.yml y de manera similar para la clave de base de datos primary . Ambos son completamente dos bases de datos diferentes.

¿Alguien puede decirme si voy en la dirección correcta? Cualquier ayuda o pensamiento será apreciado. ¡¡¡¡Gracias de antemano!!!!

over 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Simplemente debe crear un entorno adicional, ya que este es el problema exacto para el que están diseñados para resolver.

Rails simplemente se envía preconfigurado con desarrollo, prueba y producción, ya que eso es lo mínimo con lo que puede arreglárselas. De hecho, puede tener un número ilimitado de entornos.

Entonces, supongamos que desea crear un entorno llamado staging que coincida estrechamente con su entorno de producción. Puede comenzar copiando la configuración de producción:

 cp app/environments/production.rb app/environments/staging.rb

Y luego simplemente configure un hash adicional en su database.yml de datos.yml y archivos de credenciales.

 staging: <<: *default database: my_app_staging

A continuación, puede configurar el entorno utilizando RAILS_ENV env var o los argumentos de la línea de comandos al iniciar el servidor Rails. Su entorno de prueba se puede ejecutar, por ejemplo, en una aplicación Heroku separada disponible en un subdominio. Si está utilizando Heroku o alguna otra plataforma SAAS, un nivel de pasatiempo a menudo será suficiente para la puesta en escena.

Cuando se trata de datos, puede trabajar en un conjunto de datos ficticios generados al borrar y sembrar o borrar regularmente la base de datos provisional con una copia de seguridad de su base de datos de producción.

No consideraría usar un "interruptor de modo de prueba" como una buena idea, ya que hace que sea muy fácil estropear las cosas sin darse cuenta. El uso de un entorno separado también le permite usar un conjunto completamente diferente de credenciales para que no haga algo como crear un cargo de tarjeta de crédito real o destruir datos en servicios de terceros. Los areneros deben estar aislados.

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda