rake_deploy 在 jelastic 中如何与 ENV 一起工作

How does rake_deploy in jelastic work with ENV

我正在使用 Jelastic 和 nginx 设置生产和预生产服务器 运行 Ruby 在 Rails 上。 我的数据库名称和密码在环境变量中。我已在 shell 中通过 ssh 在 .bashrc/etc/nginx/app_servers/nginx-passenger.conf 中设置它们,如 配置参考中所述 对于乘客 + Nginx rake_deploy 找不到它们。我已经编写了一个输出 ENV 的 rake-task,所以我可以看到当我 运行 作为部署的一部分的任务和通过 ssh 的命令行时它是不一样的。 Rails 应用程序通过 the passenger.conf 获取它们,因此可以正常工作,但这是可怕的重复。

有没有办法将我的环境变量设置在该设置的一个位置,以便 Rails 应用程序、rake_deploy 和 shell 都可以访问它们?

这个变量 "ALL_REQUESTS_LOCAL, DB_ADAPTER, DB_HOST, DB_NAME, DB_PASSWORD, DB_USERNAME, EMAIL_USER, EMAIL_PASSWORD, EMAIL_DOMAIN, EMAIL_ADDRESS" 应该在 rakefile 中设置。 "nginx_passenger.conf" 是 Nginx 的配置文件,与环境 variables.Also 无关,您可以尝试将此变量添加到 .bash_profile 或 .bashrc 以使其可访问 rake

答案是做不到。

在使用 Jelastics Ruby 设置(使用 rake_deploy 运行 部署时的 rake 任务。

原因是rake_deployroot一样是运行。 我想添加这个 rake 任务:

task :env do puts ENV.to_h.to_yaml sh %[whoami] end

首先打印 ENV,然后打印命令是 运行 的用户。

或者,如果我可以首先 运行 编辑 root.bash_profile 的 rake 任务,而不将其放入版本控制中,也许有一种方法。但感觉既不安全也不专业。

也没有其他地方可以放置您的秘密,这些秘密不受版本控制并在部署之间持续存在。

我的 PaaS 提供商已与 Jelastic 联系并告诉他们这一点,他们对更改它不感兴趣。