Ruby on rails 使用.env config运行rails控制台

Ruby on rails 使用.env config运行rails控制台,ruby-on-rails,ruby,heroku,amazon-s3,Ruby On Rails,Ruby,Heroku,Amazon S3,我有一个Rails 4应用程序,部署到Heroku并与S3对话。S3的访问凭证存储在Heroku上的ENV变量中,我在本地有一个.ENV文件 当我通过heroku local-p 3000在本地运行服务器时,一切都正常工作——文件上传到S3很好 当我试图通过heroku local:RunRails console运行rails控制台时,我找不到避免出现key not found错误的神奇酱汁 我错过了什么 环境署署长 程序文件 web: bundle exec rails server -p

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

当我通过heroku local-p 3000在本地运行服务器时,一切都正常工作——文件上传到S3很好

当我试图通过heroku local:RunRails console运行rails控制台时,我找不到避免出现key not found错误的神奇酱汁

我错过了什么

环境署署长

程序文件

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>'
heroku本地:运行rails控制台 [确定]加载的ENV.ENV文件为KEY=VALUE格式 /Users/username/Development/rails\u application/config/environments/Development.rb:48:在'fetch'中:找不到键:“S3\u BUCKET\u NAME”(键错误) from/Users/username/Development/rails_application/config/environments/Development.rb:48:in'block in' from/Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/railtie.rb:210:in'instance_eval' 来自/Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/railtie.rb:210:“配置”中 from/Users/username/Development/rails\u application/config/environments/Development.rb:1:in`' from/Users/username/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active\u support/dependencies.rb:274:in'require' from/Users/username/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active\u support/dependencies.rb:274:“请求中的块”中 from/Users/username/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active\u support/dependencies.rb:240:in'load\u dependency' from/Users/username/.rvm/gems/ruby-2.2.1/gems/activesupport-4.2.5.1/lib/active\u 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层)in' 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' 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:在“运行”中 from/Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/initializable.rb:55:“运行中的块初始化器” 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:在每个强连接的组件中的“块(2个级别)”中 from/Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:420:在每个强连接的组件中的“块(2级)”中 from/Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:429:在'each_strong_connected_component_from'中 from/Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:419:在“每个强连接的组件中的块”中 from/Users/username/.rvm/gems/ruby-2.2.1/gems/railties-4.2.5.1/lib/rails/initializable.rb:44:在'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:在“每个强连接的组件”中 from/Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/2.2.0/tsort.rb:347:“每个强连接的组件中的块” 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:“每个强连接的组件” 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' 来自/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\u application/config/environment.rb:5:in`' 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:“运行中的块”中 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' 来自/Users/username/.rvm/gems/ruby-2.2.1/gems/spring-2.0.1/lib/spring/application/boot.rb:19:in`' 来自/Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/site\u ruby/2.2.0/rubygems/core\u ext/kernel\u require.rb:54:in'require' 来自/Users/username/.rvm/rubies/ruby-2.2.1/lib/ruby/site\u ruby/2.2.0/rubygems/core\u ext/kernel\u require.rb:54:in'require' from-e:1:in`' 来自dotenv自述文件

# config/application.rb
Bundler.require(*Rails.groups)

Dotenv::Railtie.load

HOSTNAME = ENV['HOSTNAME']
我也看到这里了

  • 按如下方式访问环境变量:ENV[“AWS_KEY”]
  • 确保在heroku管理面板(最后一个选项卡,显示环境变量)中设置了环境变量,不要将.env文件推送到respository,因为这是一种危险的做法
  • # config/application.rb
    Bundler.require(*Rails.groups)
    
    Dotenv::Railtie.load
    
    HOSTNAME = ENV['HOSTNAME']