2

我正在通过 TDD 编写一个 rails 应用程序,所以,我想知道,我如何测试生产应用程序,例如拥有与开发安全令牌不同的安全令牌,如何确保所有配置在生产中都是正确的,例如邮件配置等.

我们不应该永远不要在生产模式下运行测试,因为它会擦除数据库。

那么,应该如何在生产环境中测试 Rails 应用程序

4

2 回答 2

8

许多开发人员使用的方法是创建另一个称为阶段的环境。您可以使您的配置与生产相同,并在生产前部署到此,以确保一切正常。如果您愿意,您可以针对 staging 运行集成测试/性能测试。

您可以将生产配置 (config/environments/production.rb) 复制到名为 stage.rb 的新文件中,然后记住使用 stage 数据库的新连接详细信息填充您的 database.yml。

于 2013-01-17T17:10:39.457 回答
1

当您运行测试时,您始终处于测试环境中,因为RAILS_ENVtest_helper.rb. 设置RAILS_ENV=production意味着模式将从生产数据库而不是开发数据库克隆。我当然可以在生产服务器上建立一个开发数据库,​​但这似乎没有意义。

考虑到我的开发和生产服务器之间存在的所有差异——操作系统、Web 服务器、数据库、gem 等——除非我首先运行我的测试套件,不仅在开发中而且在生产。感谢 Capistrano 漂亮而强大的 API,这是在公园里散步来完成的:

这里是它似乎是如何完成的例子 -

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
于 2013-01-17T09:23:02.737 回答