环境变量未加载

时间:2016-08-10 07:30:12

标签: ruby-on-rails amazon-ec2 environment-variables carrierwave

我只是在ec2上设置了一个服务器并安装了所需的全部内容。 尝试使用

从ec2实例中的应用程序根目录启动我的rails应用程序
RAILS_ENV=production rails s

给我一​​个错误,表明我的环境变量没有加载

`validate_options':缺少必需的参数:aws_access_key_id,aws_secret_access_key(ArgumentError)

我的〜/ .bashrc

中有这个
export S3_KEY="XXXXXXXXXXX"
export S3_SECRET="XXXXXXXXX"
export S3_REGION="XXXXX"
export S3_BUCKET="XXXXX"

source ~/.bashrc 使RAILS_ENV=production rails s命令有效 我可以curl localhost:3000查看我的主页HTML

所有命令在ssh-ing进入服务器后都已在服务器上运行。

使用ssh连接服务器时,不应自动加载这些环境变量吗? 我是否正确地假设因为除非我手动source ~/.bashrc它们似乎没有加载,我的网络服务器也无法访问它们?

2 个答案:

答案 0 :(得分:0)

如果您找不到使其正常工作的方法,我建议您使用dotenv。它配置起来非常简单。

在你的gemfile中:

gem 'dotenv-rails', :groups => [:development, :test]

在database.yml中:

username: <%= ENV['DB_USER'] %>
password: <%= ENV['DB_PASS'] %>
etc ...

然后,您只需在主文件夹中创建一个名为.env的文件,其中包含您的配置:

DB_USER = XXXX
DB_PASS = XXXX
etc ...

在application.rb中还可以添加一些可选项。

完整文档: https://github.com/bkeepers/dotenv

一篇有用的文章: http://blog.honeybadger.io/ruby-guide-environment-variables/

答案 1 :(得分:0)

想出来。

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
    fi
fi

由于某种原因,这个新安装的服务器上~/.profile中缺少此位。通常这是默认情况。

这导致我的~/.bashrc根本没有加载。

相关问题