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的?您是否正在打开一个终端会话并从那里开始它,或者其他什么?不知道这个问题,但是gems
dotenv
figaro
也可以用于加载特定于项目的env varsI。老实说,我认为这是Rails中的一个bug。没有其他方法可以解释它。我重新启动了MacOSX,它成功了。我不认为这是一个bug
.bash\u profile
仅由交互式shell读取。Rails可能正在使用非交互式子shell执行。尝试将def放入
.bashrc
(无论如何,这更适合服务器def)。