在 ubuntu 生产服务器和 Rails 中设置环境变量

马克·洛克利尔

我的控制器中有以下代码:

def email_signup
    email_address = params[:email_address]

    response = RestClient.post("https://api:#{ENV['MAILGUN_API_KEY']}" \
                  "@api.mailgun.net/v3/lists/#{ENV['MAILGUN_ALIAS']}/members",
                  :subscribed => true,
                  :address => email_address)
    redirect_to jobs_url, success: "Thanks for Signing Up!"

    rescue RestClient::BadRequest => e
      redirect_to jobs_url, error: e
 end

使用 dotenv gem 在开发中效果很好。部署到服务器后,我将新的环境变量添加到 /etc/environment 并再次使用 capistrano 部署以重新启动应用程序,RestClient::Unauthorized (401 Unauthorized):当我尝试调用此操作时,应用程序给了我一个让我想到 env. 变量未设置。

从服务器控制台,如果我 cd 到 railsapp/current 并运行,ruby -e 'p ENV["MAILGUN_ALIAS"]'那么我可以正确地看到变量打印。

我还尝试在 .bashrc 中导出变量,这不会改变行为。

另外,仅供参考,我在服务器上使用 RVM 来设置 ruby​​ 版本。

我还能在这里尝试什么?

伊安兰德麦肯齐

使用 Capistrano,您是否在shared文件夹中设置了 .env

config/deploy.rb

set :linked_files, fetch(:linked_files, []).push(
  'config/database.yml', 'config/secrets.yml', '.env'
)

然后显然要确保.envshared运行您的应用程序的服务器上的文件夹中使用您的机密配置了您的文件。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在设置环境变量的情况下启动Rails服务器?

在Ubuntu 18.04服务器(Rails 6.0)上缺少“生产”环境的“ secret_key_base”,尝试了多个主题

如何在Ubuntu和Windows中设置环境变量并安全地存储它?

厨师食谱来设置Rails生产服务器(CentOS)

sudo和环境变量在Debian与Ubuntu中的行为不同

在本地生产环境中运行Rails服务器(InvalidMessage错误)

无法在ubuntu中通过python设置环境变量

在Ubuntu 14.04中为OpenFOAM设置环境变量

Rails 和 Azure VM:在哪里设置环境变量(邮件程序)

生产环境中的 rails 变量

如何在UBUNTU中设置环境变量以指向某个位置以及如何设置环境变量的路径?

如何在Meteor提供的服务器中设置环境变量?

Nginx:如何在服务器块中设置环境变量

在lua中设置服务器端口的环境变量

如何在Docker Compose中从服务器设置环境变量?

如何在Systemd服务中设置环境变量

如何在 .NET systemd 服务中设置环境变量?

在systemd服务文件中从sh脚本设置环境变量

本地测试环境(Mamp Pro 4)与Ubuntu 16.04生产服务器的问题

如何从包含#和-的响应中设置环境变量

在Linux中通过管道设置和使用环境变量

在Windows上的Python中获取和设置环境变量

在烧瓶应用中设置和检索环境变量

如何在Python中设置和检索环境变量

在多个发布任务中设置和使用环境变量

在Ansible中设置和使用环境变量

仅在将“ -b”或“ -p”运行“ rails服务器”时,无法将环境变量传递给Rails

设置Rails服务器

Rails Delayed Job使用Dokku在生产服务器中运行旧版本的代码