在heroku上通过bundler安装linecache

我在rails 3.0应用程序上使用RVM使用Ruby 1.9.2。

which ruby /home/ved/.rvm/rubies/ruby-1.9.2-p136/bin/ruby 

当我推送到heroku时,我收到以下错误:

 Installing linecache19 (0.5.12) /usr/ruby1.8.7/lib/ruby/site_ruby/1.8/rubygems installer.rb:164:in `install': linecache19 requires Ruby version >= 1.9.2(Gem::InstallError) 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 

不确定为什么会失败以及为什么使用ruby 1.8.7的1.8gem?

更新:

 ved@ved-ubuntu:~/rails_projects/grabber$ which bundle /home/ved/.rvm/gems/ruby-1.9.2-p136@rails3/bin/bundle ved@ved-ubuntu:~/rails_projects/grabber$ which rake /home/ved/.rvm/gems/ruby-1.9.2-p136@global/bin/rake ved@ved-ubuntu:~/rails_projects/grabber$ which gem /home/ved/.rvm/rubies/ruby-1.9.2-p136/bin/gem 

我尝试在heroku上使用1.9.2堆栈重新创建应用程序,如下所示:

 heroku create test-sushi-app --stack bamboo-mri-1.9.2 

现在我收到以下错误:

  Installing linecache19 (0.5.12) with native extensions /usr/ruby1.9.2/lib/ruby/1.9.1 /rubygems/installer.rb:483:in `rescue in block in build_extensions': ERROR: Failed to build gem native extension. (Gem::Installer::ExtensionBuildError) /usr/ruby1.9.2/bin/ruby extconf.rb checking for vm_core.h... no checking for vm_core.h... no Requesting http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.gz Downloading http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.2-p180.tar.gz *** extconf.rb failed *** Could not create Makefile due to some reason, probably lack of necessary libraries and/or headers. Check the mkmf.log file for more details. You may need configuration options. Provided configuration options: --with-opt-dir --without-opt-dir --with-opt-include --without-opt-include=${opt-dir}/include --with-opt-lib --without-opt-lib=${opt-dir}/lib --with-make-prog --without-make-prog --srcdir=. --curdir --ruby=/usr/ruby1.9.2/bin/ruby --with-ruby-dir --without-ruby-dir --with-ruby-include --without-ruby-include=${ruby-dir}/include --with-ruby-lib --without-ruby-lib=${ruby-dir}/lib /usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:243:in `mkdir': Permission denied /usr/ruby1.9.2/include/ruby-1.9.1/ruby-1.9.2-p180 (Errno::EACCES) from /usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:243:in `fu_mkdir' from /usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:217:in `block (2 levels) in mkdir_p' from /usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:215:in `reverse_each' from /usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:215:in `block in mkdir_p' from /usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:201:in `each' from /usr/ruby1.9.2/lib/ruby/1.9.1/fileutils.rb:201:in `mkdir_p' from /disk1/tmp/build_2q887zcrpytf9/.bundle/gems/ruby/1.9.1/gems/ruby_core_source -0.1.5/lib/ruby_core_source.rb:59:in `block in create_makefile_with_core' from /usr/ruby1.9.2/lib/ruby/1.9.1/tempfile.rb:320:in `open' from /disk1/tmp/build_2q887zcrpytf9/.bundle/gems/ruby/1.9.1/gems/ruby_core_source- 0.1.5/lib/ruby_core_source.rb:51:in `create_makefile_with_core' from extconf.rb:19:in `' Gem files will remain installed in /disk1/tmp/build_2q887zcrpytf9/.bundle/gems/ruby /1.9.1/gems/linecache19-0.5.12 for inspection. Results logged to /disk1/tmp/build_2q887zcrpytf9/.bundle/gems/ruby/1.9.1 /gems/linecache19-0.5.12/ext/trace_nums/gem_make.out from /usr/ruby1.9.2/lib/ruby/1.9.1/rubygems/installer.rb:486:in `block in build_extensions' from /usr/ruby1.9.2/lib/ruby/1.9.1/rubygems/installer.rb:446:in `each' from /usr/ruby1.9.2/lib/ruby/1.9.1/rubygems/installer.rb:446:in `build_extensions' from /usr/ruby1.9.2/lib/ruby/1.9.1/rubygems/installer.rb:198:in `install' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler /source.rb:95:in `install' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler /installer.rb:55:in `block in run' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler /spec_set.rb:12:in `block in each' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler /spec_set.rb:12:in `each' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/spec_set.rb:12:in `each' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/installer.rb:44:in `run' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/installer.rb:8:in `install' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/cli.rb:225:in `install' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/vendor/thor/task.rb:22:in `run' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/vendor/thor/invocation.rb:118:in `invoke_task' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/vendor/thor.rb:246:in `dispatch' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/lib/bundler/vendor/thor/base.rb:389:in `start' from /usr/ruby1.9.2/lib/ruby/gems/1.9.1/gems/bundler-1.0.7/bin/bundle:13:in `' from /usr/ruby1.9.2/bin/bundle:19:in `load' from /usr/ruby1.9.2/bin/bundle:19:in `' FAILED: http://devcenter.heroku.com/articles/bundler 

! Heroku推被拒绝,无法通过Bundler安装gem

感谢@matt和@brandon的帮助。 这就是我如何解决它。

  1. 通过@matt – 使用1.9.2重新创建应用程序:

    heroku创建test-sushi-app –stack bamboo-mri-1.9.2

  2. 设置以下环境变量:

    heroku config:添加BUNDLE_WITHOUT =“development:test”正如 – http://wesgibbs.me/post/1506018375/heroku-bundle-without-config-variable-wants-colons中所述

  3. 修改Gemfile以有条件地包含ruby-debug19:

    group :development, :test do if RUBY_VERSION =~ /1.9/ gem 'ruby-debug19' else gem 'ruby-debug' end end

是的,我也面临着同样的问题。我只修改了gem文件中的以下语法,并将其解决了。 非常感谢大家。

  group :development, :test do if RUBY_VERSION =~ /1.9/ gem 'ruby-debug19' else gem 'ruby-debug' end end