我已经推送到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
答案 0 :(得分:1)
dotenv
gem用于将载荷环境变量从.env加载到development
中的ENV。
和heroku使用production
环境。所以,你需要把它放在Gemfile
gem 'dotenv-rails', :groups => [:development, :test]
希望,这会对你有所帮助。
答案 1 :(得分:1)
dotenv用于管理开发环境中的环境变量。你需要在heroku上手动创建这些变量。
答案 2 :(得分:1)
您已将dotenv
gem配置为仅针对development
和test
环境启用:
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。