Git Push Heroku не удается, потому что пытается установить разработку драгоценных камнейКоманда BUNDLE_WITHOUT не работает - PullRequest
3 голосов
/ 11 мая 2011

Я получаю сообщение об ошибке после ввода команды git push heroku.Изначально это выглядело как что-то, что нужно решить с помощью команды настройки heroku для комплектации без разработки: test gems.Однако я использовал эту команду, как описано в этой аналогичной статье [ Heroku пытается установить гемы разработки, даже после того, как я сказал ей не ], и она все еще не работает.

строка «Использование --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

1 Ответ

7 голосов
/ 28 мая 2011

Ну, проблема явно в том, что autotest-fsevent загружается, когда вы нажимаете на Heroku, который не основан на Дарвине.Несмотря на то, что у вас есть условие после оператора gem 'autotest-fsevent', гем все еще пытается загрузиться при развертывании в Heroku.Есть две вероятные причины для этого.

Во-первых, это требует другой драгоценный камень.Если ничего другого, autotest-growl также должен быть только для Дарвина.Я не уверен, что они связаны, но я бы все-таки перепроверил.

Следующая проблема - убедиться, что Gemfile.lock не выдвигается.Если вы в последний раз запускали bundle install на Дарвине, возможно, что драгоценный камень был заблокирован в зависимости таким образом.git rm Gemfile.lock до того, как вы совершите коммит и нажмете на Heroku.

Наконец, мое любимое решение - не использовать автотест.Я не уверен, если это вариант для вас, но я нашел это раздражает, когда я использовал его, я использую RSpec и Cucumber.Я понимаю, что это последнее предложение не дает ответа, но мне не нравится включать платформо-зависимые гемы даже в тестировании, только потому, что когда вы переходите к постановке, такие небольшие неприятности имеют тенденцию всплывать.

Я не уверен, почему в Rails Tutorial все еще используется ZenTest и автотест, я не знаю никого, кто это делает ... это может измениться, друг пошел на сессию Rails Tutorial в RailsConf и сказалНа самом деле Майкл замечал ошибки во время урока, так что, возможно, в следующей версии все будет иначе.

В качестве последнего замечания, из любопытства, если вы работаете в OS X, как вы установили Ruby?Это в очень странном месте.

...