环境变量未加载

Environment variables not loading

我刚刚在 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 进入服务器后,所有命令都已 运行 在服务器上。

这些环境变量不是应该在我用ssh连接服务器的时候自动加载吗? 我的假设是否正确,因为除非我手动 source ~/.bashrc,否则它们似乎不会加载,我的 Web 服务器也将无法访问它们吗?

如果您找不到让它工作的方法,我建议您使用 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/

想通了。

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

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

这导致我的 ~/.bashrc 根本无法加载。