【问题标题】:change rails environment from within ruby file then change back从 ruby​​ 文件中更改 rails 环境,然后改回
【发布时间】:2014-05-15 23:20:12
【问题描述】:

我有一个测试自动化应用程序,它针对用户参数针对 Rails 应用程序运行测试。

Ruby 应用程序中的测试执行如下所示:

config = RSpec.configuration
json_formatter = RSpec::Core::Formatters::JsonFormatter.new(config.out)
reporter =  RSpec::Core::Reporter.new(json_formatter)
config.instance_variable_set(:@reporter, reporter)

RSpec::Core::Runner.run(["#{Rails.root}/spec/features/example_spec.rb"])

puts json_formatter.output_hash

这很好用,但在当前环境中运行,即development

我想更改 Rails 环境,让这段代码在test 环境中执行,然后再改回来。

有人知道怎么做吗?

谢谢 理查德

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-4 rspec2 rspec-rails


    【解决方案1】:

    您始终可以在类 unix 的环境中为单个(或一组)命令更改环境:

    RAILS_ENV=testing bundle exec rspec
    

    或任何您需要执行的操作。例如,您可以定义一个自定义 rake 任务,其中包含您的规范运行逻辑并按照我在上面概述的方式调用它。

    使用此概念并更进一步,您可以直接从 Ruby 执行 shell 命令,并为该命令设置自定义环境变量。在这个 shell 命令中,您可以执行任意 Ruby 代码(例如,通过ruby -e ...),甚至可以调用另一个 Ruby 文件来正确初始化您所需环境中所需的任何内容。

    我认为尝试从您的代码中更改当前环境将是非常糟糕的做法,即使它以某种方式是可能的。我个人会坚持使用自定义、专用、rake 任务,我可以在我需要的任何环境下从命令行调用它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-16
      • 1970-01-01
      • 2018-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-25
      相关资源
      最近更新 更多