我只是在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
它们似乎没有加载,我的网络服务器也无法访问它们?
答案 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
根本没有加载。