Ruby on rails Ruby可以找到环境变量,但Rails不能
在我的Ruby on rails Ruby可以找到环境变量,但Rails不能,ruby-on-rails,ruby,Ruby On Rails,Ruby,在我的~/.bash_概要文件中,我声明了一些环境变量: export S3_BUCKET_NAME="mybucket" export AWS_ACCESS_KEY_ID="MYID" export AWS_SECRET_ACCESS_KEY="MYKEY" export AWS_REGION="us-east-2" 我找到了它并重新加载了终端。即使在终端中键入export,也会显示上述环境变量 我甚至启动了irb,它可以工作: > ENV.fetch('S3_BUCKET_NAME'
~/.bash_概要文件中,我声明了一些环境变量:
export S3_BUCKET_NAME="mybucket"
export AWS_ACCESS_KEY_ID="MYID"
export AWS_SECRET_ACCESS_KEY="MYKEY"
export AWS_REGION="us-east-2"
我找到了它并重新加载了终端。即使在终端中键入export
,也会显示上述环境变量
我甚至启动了irb,它可以工作:
> ENV.fetch('S3_BUCKET_NAME')
=> "mybucket"
但是,在environment/development.rb
中,我有以下内容:
config.paperclip_defaults = {
storage: :s3,
s3_credentials: {
bucket: ENV.fetch('S3_BUCKET_NAME'),
access_key_id: ENV.fetch('AWS_ACCESS_KEY_ID'),
secret_access_key: ENV.fetch('AWS_SECRET_ACCESS_KEY'),
s3_region: ENV.fetch('AWS_REGION'),
}
}
但是当我运行rails控制台时,我得到以下错误:
config/environments/development.rb:63:in `fetch': key not found: "S3_BUCKET_NAME" (KeyError)
当我在development.rb
中注释掉这些行,然后运行rails c
,然后调用ENV
,我注意到环境变量就在那里
怎么了?ENV['S3\u BUCKET\u NAME']
工作正常吗?你是如何运行Rails的?您是否正在打开一个终端会话并从那里开始它,或者其他什么?不知道这个问题,但是gemsdotenv
或figaro
也可以用于加载特定于项目的env varsI。老实说,我认为这是Rails中的一个bug。没有其他方法可以解释它。我重新启动了MacOSX,它成功了。我不认为这是一个bug.bash\u profile
仅由交互式shell读取。Rails可能正在使用非交互式子shell执行。尝试将def放入.bashrc
(无论如何,这更适合服务器def)。