【问题标题】:Elastic Beanstalk, Rails 5, and Passenger: Rails.env frustrationElastic Beanstalk、Rails 5 和Passenger:Rails.env 受挫
【发布时间】:2019-02-26 05:01:16
【问题描述】:

我在 Elastic Beanstalk 中有一个堆栈,运行“在 64 位 Amazon Linux/2.8.3 上运行 Ruby 2.5 的乘客”映像。 Rails 是 v5.2.1。希望使它成为一个临时环境,即让“Rails.env”返回“staging”并运行 staging.rb 配置。问题是,无论我做什么,它似乎都在“生产”运行。

  • 我将 RACK_ENV 和 RAILS_ENV 设置为 EB 配置变量,均设置为“暂存”。我用 'printenv' 作为 ec2-user、webapp 和 root 确认了它们在服务器上的存在。
  • 我尝试将Passenger 配置中的passenger_app_env 更改为“staging”。我已通过使用 'ps aux | 查看流程确认Passenger Standalone 正在使用正确的配置。 grep 乘客”。
  • 我尝试切换到根服务器并手动执行“/etc/init.d/passenger stop”然后“启动”,打印输出确认Passenger 正在启动,其“环境”设置为“暂存”:
================ Phusion Passenger 独立网络服务器已启动 =============== PID 文件:/var/app/support/pids/passenger.pid 日志文件:/var/app/support/logs/passenger.log 环境:舞台 可通过以下方式访问:http://0.0.0.0/ 在后台作为守护进程服务。 问题?检查 https://www.phusionpassenger.com/documentation/Users%20guide%20Standalone.html#troubleshooting
  • 我将它放入 environment.rb 并添加了一个 EB 配置变量以使 STAGING 为“真”。:

    
      if ENV['STAGING']
        %w(RACK_ENV RAILS_ENV).each do |key|
          ENV[key] = 'staging'
        end
      end

但是,我在 Rails 应用程序中创建的测试页面仍然显示“Rails.env”是“生产”,并且没有使用“staging.rb”中的值。然而,同一个测试页面显示 'ENV['RACK_ENV']' 和 'ENV['RAILS_ENV'] 都设置为 'staging'。

在这一点上,我不知道如何以任何其他方式强制环境。

【问题讨论】:

  • config/evnments.../staging.rb 中创建一个临时文件,然后出于测试目的从development.rb 复制到staging.rb。然后转到 EB,进入您的应用程序/配置/软件并将环境更改为 RACK_ENVstaging。不要忘记重启你的应用和 nginx service nginx restart
  • 已经有一个 staging.rb,并且 RACK_ENV 已经设置为 'staging'。出于某种原因,Web 层仍然会耗尽 production.rb;打开 Rails 控制台很好,这说明它正在登台。这只是网络服务器的问题。

标签: ruby-on-rails passenger amazon-elastic-beanstalk


【解决方案1】:

经过多次黑客攻击,我发现Passenger 使用“production”(默认)的passenger_app_env 启动,然后切换到“staging”。 Rails.env 会得到 'production' env 并使用 'production.rb',然后 RACK_ENV 和 RAILS_ENV 将被覆盖为 'staging',从而产生令人困惑的二元性。

解决方案是在Passenger 使用的Passenger Standalone 模板中将passenger_app_env 指令上移;我们将它放在 http 指令中的 server 指令中。将它从 server 指令中移到 http 指令本身解决了这个问题。

【讨论】:

    猜你喜欢
    • 2020-06-18
    • 2018-05-02
    • 2016-09-25
    • 2016-09-29
    • 2019-03-03
    • 2016-09-24
    • 2014-10-27
    • 2020-02-28
    • 2017-01-17
    相关资源
    最近更新 更多