我遇到了应用程序错误,因此选中了heroku rails console
:
(master)$ heroku run rails console
Running rails console on morning-river-1349... up, run.8048
/app/vendor/ruby-2.2.3/lib/ruby/2.2.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'spring' (= 1.1.3) among 58 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/app/vendor/bundle/ruby/2.2.0:/app/vendor/ruby-2.2.3/lib/ruby/gems/2.2.0', execute `gem env` for more information
from /app/vendor/ruby-2.2.3/lib/ruby/2.2.0/rubygems/dependency.rb:324:in `to_spec'
from /app/vendor/ruby-2.2.3/lib/ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:64:in `gem'
from /app/bin/spring:12:in `<top (required)>'
from /app/bin/rails:4:in `load'
from /app/bin/rails:4:in `<main>'
解决方案:我必须将spring开发部分移动到gemfile中的main。
现在应用效果很好,但是,
关于如何防止heroku跳过开发类别宝石的任何想法?
编辑:对不必要的麻烦抱歉,我读了rails 4.1的发布说明{从那时起spring被预加载},因此将它包含在gemfile中导致了不必要的问题,只是将其全部删除了。
答案 0 :(得分:5)
Heroku是您的生产环境,因此您的Gemfile中的开发和测试组中的Gems永远不会安装在Heroku上。
这就是Groups in Bundler的全部内容 - 您不需要使用与生产服务器上的内存相关的测试或开发相关的宝石。
Spring是一个应用程序预加载器,可以帮助您加快开发工作流程,因此您不应该在生产环境中安装Spring。尝试追踪需要Spring的内容,并首先解决该问题。
答案 1 :(得分:0)
只是添加一些上下文,问题不是 heroku ,它是bundler;
Bundler允许您安装特定于您正在工作的环境的宝石:
bundler install --without production staging test
这对于多种类型的依赖项(EG不同的Web服务器等)很方便: