发出git push heroku命令后出错.这最初看起来像是要通过使用heroku config命令来捆绑而不需要开发:测试宝石.但是,我在这个类似的写法中使用了该命令[ Heroku’s trying to install development gems
下面的推送消息中的“使用–without development:test”行似乎表明BUNDLE_WITHOUT配置命令有效,所以这可能是一个gemfile或其他问题?
谢谢!
$git push heroku Counting objects: 64, done. Delta compression using up to 2 threads. Compressing objects: 100% (42/42), done. Writing objects: 100% (48/48), 6.03 KiB, done. Total 48 (delta 15), reused 0 (delta 0) -----> Heroku receiving push -----> Rails app detected -----> Detected Rails is not set to serve static_assets Installing rails3_serve_static_assets... done -----> Configure Rails 3 to disable x-sendfile Installing rails3_disable_x_sendfile... done -----> Configure Rails to log to stdout Installing rails_log_stdout... done -----> Gemfile detected, running Bundler version 1.0.7 Unresolved dependencies detected; Installing... Using --without development:test Fetching source index for http://rubygems.org/ Installing rake (0.8.7) Installing ZenTest (4.5.0) Installing abstract (1.0.0) Installing activesupport (3.0.3) Installing builder (2.1.2) Installing i18n (0.5.0) Installing activemodel (3.0.3) Installing erubis (2.6.6) Installing rack (1.2.2) Installing rack-mount (0.6.14) Installing rack-test (0.5.7) Installing tzinfo (0.3.25) Installing actionpack (3.0.3) Installing mime-types (1.16) Installing polyglot (0.3.1) Installing treetop (1.4.9) Installing mail (2.2.15) Installing actionmailer (3.0.3) Installing arel (2.0.9) Installing activerecord (3.0.3) Installing activeresource (3.0.3) Installing autotest (4.4.6) Installing sys-uname (0.8.5) with native extensions Installing autotest-fsevent (0.2.5) with native extensions /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/installer.rb:483:in `build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /usr/ruby1.8.7/bin/ruby extconf.rb extconf.rb:19: Only Darwin (Mac OS X) systems are supported (RuntimeError) Gem files will remain installed in /disk1/tmp/build_258oz7hi5972n/.bundle/gems/ruby/1.8/gems/autotest-fsevent-0.2.5 for inspection. Results logged to /disk1/tmp/build_258oz7hi5972n/.bundle/gems/ruby/1.8/gems/autotest-fsevent-0.2.5/ext/fsevent/gem_make.out from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/installer.rb:446:in `each' from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/installer.rb:446:in `build_extensions' from /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems/installer.rb:198:in `install' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/source.rb:95:in `install' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:55:in `run' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:44:in `run' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/installer.rb:8:in `install' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/cli.rb:225:in `install' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/task.rb:22:in `send' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/task.rb:22:in `run' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor.rb:246:in `dispatch' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/lib/bundler/vendor/thor/base.rb:389:in `start' from /usr/ruby1.8.7/lib/ruby/gems/1.8/gems/bundler-1.0.7/bin/bundle:13 from /usr/ruby1.8.7/bin/bundle:19:in `load' from /usr/ruby1.8.7/bin/bundle:19 FAILED: http://devcenter.heroku.com/articles/bundler ! Heroku push rejected, failed to install gems via Bundler error: hooks/pre-receive exited with error code 1 To git@heroku.com:blooming-mountain-199.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'git@heroku.com:blooming-mountain-199.git'
的Gemfile …
source 'http://rubygems.org' gem 'rails', '3.0.3' gem 'sqlite3', '1.3.3', :require => 'sqlite3' gem 'gravatar_image_tag', '1.0.0.pre2' gem 'will_paginate', '3.0.pre2' gem "nokogiri" gem "geokit" gem "rack", "~>1.1" group :development, :test do gem 'rspec-rails', '2.5.0' gem 'annotate-models', '1.0.4' gem 'faker', '0.3.1' gem 'autotest-fsevent' if RUBY_PLATFORM =~ /darwin/ gem 'rspec', '2.5.0' gem 'webrat', '0.7.1' gem 'spork', '0.9.0.rc4' gem 'factory_girl_rails', '1.0' gem 'ZenTest' gem 'autotest' gem 'autotest-rails' gem 'autotest-growl' end好吧,问题显然是当你推送到Heroku时,自动测试 – fsevent被加载,而Heroku不是基于达尔文的.虽然你确实有一个条件跟随gem’autotest-fsevent’语句,但是当你部署到Heroku时,gem仍在尝试加载.这有两个可能的原因.
首先,是另一个宝石需要它.如果不出意外,自动测试咆哮也应该只是达尔文.我不确定这些是否相关,但我仍然会仔细检查.
下一个问题是确保Gemfile.lock没有被推送.如果您上次在Darwin上运行bundle install,那么gem可能会被锁定到依赖关系中.在你提交并推送到Heroku之前git rm Gemfile.lock.
最后,我最喜欢的解决方案是不使用自动测试.我不确定这是否适合你,但是当我使用RSpec和Cucumber时,我发现它很烦人.我意识到这最后一个建议是不回答的,但我不喜欢在测试中包括依赖于平台的宝石,只是因为当你进行分期时,像这样的小烦恼有一种突然出现的趋势.
我不确定为什么Rails教程仍在使用ZenTest和自动测试,我不知道有谁做了……可能会改变,一位朋友去了RailsConf的Rails Tutorial会话并且说迈克尔实际上是在注意勘误表教程,也许它在将来的版本中会有所不同.
最后请注意,出于好奇,如果您使用的是OS X,那么您是如何安装Ruby的?这是一个非常奇怪的地方.