【问题标题】:How to test that Rails application works correctly in the production environment如何测试 Rails 应用程序在生产环境中是否正常工作
【发布时间】:2013-01-17 08:55:18
【问题描述】:

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

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

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

【问题讨论】:

    标签: ruby-on-rails testing production-environment


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      当您运行测试时,您始终处于测试环境中,因为 RAILS_ENV 是硬编码在 test_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
      

      【讨论】:

      • 我不知道。你不应该设置RAILS_ENV=test吗?如果您输入RAILS_ENV=production,它不会进入生产数据库吗?
      • 如果您正在运行测试,则无需将test 设置为环境,因为默认情况下它已经是test。在test_helper.rb 的顶部,您会看到ENV["RAILS_ENV"] = "test" 故意这样做。对于生产,是的,您必须通过 RAILS_ENV=production 将您的 Rails 环境设置为生产。
      • @MyGod 我认为 Amir 是说使用 RAILS_ENV=production 测试生产会将测试数据与生产数据混合在一起,并可能对后者产生负面影响。我正在考虑使用生产环境进行代码,但测试数据库......这可能是重新配置数据库配置以进行测试或为这种测试创建新环境。好奇其他最佳实践是什么,因为我也希望确定测试是否成功,不仅是在暂存阶段,而且是在生产阶段。
      猜你喜欢
      • 1970-01-01
      • 2017-09-11
      • 2013-03-06
      • 1970-01-01
      • 2018-03-22
      • 1970-01-01
      • 2014-05-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多