Lorsque vous exécutez des tests, vous êtes toujours dans l'environnement de test puisque RAILS_ENV
est codé en dur dans test_helper.rb
. Réglage RAILS_ENV=production
signifie que le schéma sera cloné à partir de la base de données de production plutôt que de la base de données de développement. Je pourrais bien sûr créer une base de données de développement sur les serveurs de production, mais cela n'a pas de sens.
Compte tenu de toutes les différences qui existent entre mon serveur de développement et mon serveur de production - système d'exploitation, serveur web, base de données, gems, etc. - je ne peux pas vraiment me sentir à l'aise pour déployer mon application si je n'ai pas d'abord exécuté ma suite de tests non seulement en développement mais aussi en production. Grâce à la belle et puissante API de Capistrano, c'est un jeu d'enfant :
Voici un exemple de la manière dont cela semble être fait -
desc "Run the full tests on the deployed app."
task :run_tests do
run "cd #{release_path} && RAILS_ENV=production rake && cat /dev/null > log/test.log"
end
desc "Copy in server specific configuration files"
task :copy_shared do
run <<-CMD
cp #{shared_path}/system/voxway.rb #{release_path}/config &&
cp #{shared_path}/system/database.yml #{release_path}/config
CMD
end
desc "Run pre-symlink tasks"
task :before_symlink, :roles => :web do
copy_shared
run_tests
end