嗨,我在推送到 Heroku 时遇到编译器超时......我真的不明白为什么,因为我的 gems 没有任何更改,并且之前已成功推送到 Heroku......
这是日志:
-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Using Ruby version: ruby-1.9.3
-----> Installing dependencies using Bundler version 1.2.0.pre
Running: bundle install --without development:test --path vendor/bundle --binstubs bin/
Fetching gem metadata from https://rubygems.org/........
/app/slug-compiler/lib/utils.rb:65:in `block (2 levels) in spawn': command='/app/slug-compiler/lib/../buildpacks/ruby/bin/compile /tmp
/build_2z19s0hxp0vh2 /app/tmp/repo.git/.cache' exit_status=0 out='' at=timeout elapsed=578.1850752830505 (Utils::TimeoutError)
from /app/slug-compiler/lib/utils.rb:51:in `loop'
from /app/slug-compiler/lib/utils.rb:51:in `block in spawn'
from /app/slug-compiler/lib/utils.rb:47:in `popen'
from /app/slug-compiler/lib/utils.rb:47:in `spawn'
from /app/slug-compiler/lib/buildpack.rb:38:in `block in compile'
from /app/slug-compiler/lib/buildpack.rb:36:in `fork'
from /app/slug-compiler/lib/buildpack.rb:36:in `compile'
from /app/slug-compiler/lib/slug.rb:451:in `block in run_buildpack'
from /app/slug-compiler/lib/utils.rb:120:in `log'
from /app/slug-compiler/lib/slug.rb:689:in `log'
from /app/slug-compiler/lib/slug.rb:450:in `run_buildpack'
from /app/slug-compiler/lib/slug.rb:110:in `block (2 levels) in compile'
from /app/slug-compiler/lib/utils.rb:101:in `block in timeout'
from /usr/local/lib/ruby/1.9.1/timeout.rb:58:in `timeout'
from /app/slug-compiler/lib/utils.rb:101:in `rescue in timeout'
from /app/slug-compiler/lib/utils.rb:96:in `timeout'
from /app/slug-compiler/lib/slug.rb:99:in `block in compile'
from /app/slug-compiler/lib/utils.rb:120:in `log'
from /app/slug-compiler/lib/slug.rb:689:in `log'
from /app/slug-compiler/lib/slug.rb:98:in `compile'
from /app/slug-compiler/bin/slugc:85:in `block in <main>'
from /app/slug-compiler/lib/slug.rb:459:in `block in lock'
from /app/slug-compiler/lib/repo_lock.rb:44:in `call'
from /app/slug-compiler/lib/repo_lock.rb:44:in `run'
from /app/slug-compiler/lib/slug.rb:459:in `lock'
from /app/slug-compiler/bin/slugc:66:in `<main>'
! Heroku push rejected, failed to compile Ruby/rails app
To [email protected]:mysite.git
! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to '[email protected]:mysite.git'
这似乎与我的 gems 文件有些相关,因为如果我运行
heroku run bundle update
它也会停止
我的宝石文件 来源 'https://rubygems.org'
ruby '1.9.3'
gem 'rails', '3.2.5'
gem 'heroku', '~> 2.26.6'
gem "paperclip", " ~> 3.0"
gem 'jquery-rails', '2.0.1'
gem 'bootstrap-sass', '2.0.0'
gem 'bcrypt-ruby', '3.0.1'
gem 'faker', '1.0.1'
gem 'will_paginate', '3.0.3'
gem 'bootstrap-will_paginate', '0.0.6'
gem 'prototype-rails'
group :development, :test do
gem 'sqlite3', '1.3.5'
gem 'rspec-rails', '2.10.0'
gem 'guard-rspec', '0.5.5'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '3.2.5'
gem 'coffee-rails', '3.2.2'
gem 'uglifier', '1.2.4'
end
group :test do
gem 'capybara', '1.1.2'
gem 'factory_girl_rails', '1.4.0'
gem 'cucumber-rails', '1.2.1', :require => false
gem 'database_cleaner', '0.7.0'
gem 'guard-spork', '0.3.2'
gem 'spork', '0.9.0'
gem 'launchy', '2.1.0'
# gem 'rb-fsevent', '0.9.1', :require => false
# gem 'growl', '1.0.3'
end
group :production do
gem 'pg'
gem 'thin'
end
SO 上有一篇非常类似的帖子:Heroku 推送失败,可能是 rubygems 超时,它指向单个 gem...但它没有说明我们如何找到损坏的 gem...任何想法?
编辑
这似乎是 pg Gem 的问题。我通过一一注释我的非静态(没有指定版本)发现了它。如果我不包含 pg gem,则推送完成。
我应该用命令检查我以前的 gems 版本是什么
heroku run gem query --local > heroku_gems.txt
但是因为我现在没有,所以我注定要手动找到破坏版本:-S
编辑2
我尝试安装一些以前版本的 pg,例如版本 0.12.2,但这仍然不起作用...
经过一整天,我注意到 Heroku 服务器存在一些 SSL 问题,我注意到我的 production.rb 文件上有配置
config.force_ssl = true
。
所以我尝试了一下,然后放了
config.force_ssl = false
,瞧,我又复活了!
嗯,后来我又把它变成true了,还是成功地再次发布了...
我猜这是一个heroku的事情