【问题标题】:Running rails console with .env config使用 .env 配置运行 rails 控制台
【发布时间】:2017-08-10 18:22:48
【问题描述】:

我有一个部署到 Heroku 并与 S3 对话的 Rails 4 应用程序。 S3 的访问凭据存储在 Heroku 上的 ENV 变量中,我在本地有一个 .env 文件。

当我通过 heroku local -p 3000 在本地运行服务器时,一切正常 - 文件上传到 S3 就好了。

当我尝试通过heroku local:run rails console 运行rails 控制台时,我找不到避免key not found 错误的妙招。

我错过了什么?

.env

S3_BUCKET_NAME=BUCKETNAME
AWS_ACCESS_KEY_ID=KEYID
AWS_SECRET_ACCESS_KEY=SECRETKEY
AWS_REGION=REGION

过程文件

web: bundle exec rails server -p $PORT

config/environments/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'),
  }
}

错误堆栈:

heroku local:run rails console
[OKAY] Loaded ENV .env File as KEY=VALUE Format
/Users/username/Development/rails_application/config/environments/development.rb:48:in `fetch': key not found: "S3_BUCKET_NAME" (KeyError)
  from /Users/username/Development/rails_application/config/environments/development.rb:48:in `block in <top (required)>'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/railtie.rb:210:in `instance_eval'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/railtie.rb:210:in `configure'
  from /Users/username/Development/rails_application/config/environments/development.rb:1:in `<top (required)>'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:274:in `require'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:274:in `block in require'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:240:in `load_dependency'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active_support/dependencies.rb:274:in `require'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/engine.rb:598:in `block (2 levels) in <class:Engine>'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/engine.rb:597:in `each'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/engine.rb:597:in `block in <class:Engine>'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/initializable.rb:30:in `instance_exec'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/initializable.rb:30:in `run'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/initializable.rb:55:in `block in run_initializers'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:226:in `block in tsort_each'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:348:in `block (2 levels) in each_strongly_connected_component'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:420:in `block (2 levels) in each_strongly_connected_component_from'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:429:in `each_strongly_connected_component_from'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:419:in `block in each_strongly_connected_component_from'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/initializable.rb:44:in `each'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/initializable.rb:44:in `tsort_each_child'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:413:in `call'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:413:in `each_strongly_connected_component_from'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:347:in `block in each_strongly_connected_component'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:345:in `each'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:345:in `call'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:345:in `each_strongly_connected_component'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:224:in `tsort_each'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:203:in `tsort_each'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/initializable.rb:54:in `run_initializers'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/application.rb:352:in `initialize!'
  from /Users/username/Development/rails_application/config/environment.rb:5:in `<top (required)>'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/spring-2.0.1/lib/spring/application.rb:92:in `require'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/spring-2.0.1/lib/spring/application.rb:92:in `preload'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/spring-2.0.1/lib/spring/application.rb:143:in `serve'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/spring-2.0.1/lib/spring/application.rb:131:in `block in run'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/spring-2.0.1/lib/spring/application.rb:125:in `loop'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/spring-2.0.1/lib/spring/application.rb:125:in `run'
  from /Users/username/.rvm/gems/ruby-2.2.1/gems/spring-2.0.1/lib/spring/application/boot.rb:19:in `<top (required)>'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
  from /Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/site_ruby/2.2.0/rubygems/core_ext/kernel_require.rb:54:in `require'
  from -e:1:in `<main>'

【问题讨论】:

    标签: ruby-on-rails ruby heroku amazon-s3


    【解决方案1】:

    来自 dotenv 自述文件

    # config/application.rb
    Bundler.require(*Rails.groups)
    
    Dotenv::Railtie.load
    
    HOSTNAME = ENV['HOSTNAME']
    

    也见这里.env not being loaded in test environment in Rails with rspec

    【讨论】:

      【解决方案2】:
      1. 像这样访问您的环境变量:ENV["AWS_KEY"]
      2. 确保您在 heroku 管理面板中设置了环境变量(最后一个选项卡,显示环境变量),不要将 .env 文件推送到存储库,因为这是一种危险的做法。

      【讨论】:

        猜你喜欢
        • 2022-01-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-28
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多