由于dotenv gem,应用程序被推送到heroku但没有工作

时间:2016-08-08 13:43:23

标签: ruby-on-rails heroku

我已经推送到heroku但应用程序将无法运行。我看到这是由于dotenv宝石。有没有解决的办法?我需要dot-env gem才能加密基本的auth用户名和密码。我不想使用设计或任何复杂的东西,因为这是一个简单的应用程序。

下面是我的heroku终端输出,唯一的问题是我真的不知道如何发现错误/读取输出。

  /app/config/application.rb:4:in `require': cannot load such file -- dotenv (LoadError)
        from /app/config/application.rb:4:in `<top (required)>'
        from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:141:in `require'
        from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:141:in `require_application_and_environment!'
        from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:67:in `console'
        from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands/commands_tasks.rb:39:in `run_command!'
        from /app/vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/commands.rb:17:in `<top (required)>'
        from /app/bin/rails:9:in `require'
        from /app/bin/rails:9:in `<main>'





gem 'rails', '4.2.5'

gem 'pg'

gem 'sass-rails', '~> 5.0'

gem 'uglifier', '>= 1.3.0'

gem 'coffee-rails', '~> 4.1.0'

gem 'will_paginate', '~> 3.1.0'

gem 'jquery-rails'

gem 'turbolinks'

gem 'jbuilder', '~> 2.0'

gem 'sdoc', '~> 0.4.0', group: :doc

gem "font-awesome-rails"

gem 'dotenv-rails', :groups => [:development, :test]

gem 'will_paginate-bootstrap'

gem "paperclip", "~> 5.0.0"


group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug'
end

group :development do
  # Access an IRB console on exception pages or by using <%= console %> in views
  gem 'web-console', '~> 2.0'
  # gem 'dotenv-heroku'

  # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
  gem 'spring'
end

3 个答案:

答案 0 :(得分:1)

dotenv gem用于将载荷环境变量从.env加载到development中的ENV。

和heroku使用production环境。所以,你需要把它放在Gemfile

gem 'dotenv-rails', :groups => [:development, :test]

希望,这会对你有所帮助。

答案 1 :(得分:1)

dotenv用于管理开发环境中的环境变量。你需要在heroku上手动创建这些变量。

答案 2 :(得分:1)

您已将dotenv gem配置为仅针对developmenttest环境启用:

gem 'dotenv-rails', :groups => [:development, :test]

但是,该应用程序是在Heroku的production环境中启动的。因此,Rails应用程序将崩溃,因为它试图加载gem但它不可用。

您可能在应用程序的某处手动添加了dotenv加载代码:

Dotenv::Railtie.load

你需要删除它(因为dotenv将在加载过程中注入自身,当加载gem时),或者将代码包装在仅在定义Dotenv时执行它的条件块中

if defined? Dotenv
  # ..
end

除非您确实需要手动加载库(通常不要),否则只需删除显式语句explained in the documentation

  

dotenv在before_configuration回调期间在您的Rails应用程序中初始化,当在config / application.rb中使用类Application&lt;轨::应用。 如果您需要它可以更快地初始化,您可以手动调用Dotenv :: Railtie.load。