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:
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:
skip_around_action en un controlador específico.around_actionAquí 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!!!!
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.