在heroku上通过bundler安装linecache

发布于 2024-11-02 04:22:08 字数 6874 浏览 1 评论 0原文

我在 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.8 gems?

更新:

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 `<main>'


   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 `<top (required)>'
    from /usr/ruby1.9.2/bin/bundle:19:in `load'
    from /usr/ruby1.9.2/bin/bundle:19:in `<main>'
   FAILED: http://devcenter.heroku.com/articles/bundler

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

I am using Ruby 1.9.2 using RVM on a rails 3.0 application.

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

when I push to heroku, I get the following error:

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

Not sure why this is failing and why 1.8 gems from ruby 1.8.7 is being used for this ?

Updated:

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

I tried recreating the app with 1.9.2 stack on heroku as follows:

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

now I am getting the following error:

 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 `<main>'


   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 `<top (required)>'
    from /usr/ruby1.9.2/bin/bundle:19:in `load'
    from /usr/ruby1.9.2/bin/bundle:19:in `<main>'
   FAILED: http://devcenter.heroku.com/articles/bundler

! Heroku push rejected, failed to install gems via Bundler

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

猥琐帝 2024-11-09 04:22:08

感谢@matt 和@brandon 的帮助。这就是我可以修复它的方法。

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

    heroku create test-sushi-app --stackamboa-mri-1.9.2

  2. 设置以下环境变量:

    heroku 配置:添加 BUNDLE_WITHOUT="开发:测试"
    如 - http://wesgibbs.me/post 中所述/1506018375/heroku-bundle-without-config-variable-wants-colons

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

    组:开发,:测试
    如果 RUBY_VERSION =~ /1.9/
    gem 'ruby-debug19'
    别的
    gem 'ruby-debug'
    结尾
    修改

Thanks @matt and @brandon for your help. This is how I could fix it.

  1. via @matt - recreated the app with 1.9.2 using :

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

  2. Set the following environment variable :

    heroku config:add BUNDLE_WITHOUT="development:test"
    As discussed in - http://wesgibbs.me/post/1506018375/heroku-bundle-without-config-variable-wants-colons

  3. Modified Gemfile to include ruby-debug19 conditionally :

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

心碎无痕… 2024-11-09 04:22:08

是的,我也遇到过同样的问题。我只修改了 gem 文件中的以下语法,就解决了。非常感谢大家。

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

Yeah, I have also faced with the same sorts of problem..I have only modified the below syntax in the gem file and it worked it out. Thanks a lot all of you.

   group :development, :test do 
       if RUBY_VERSION =~ /1.9/ 
         gem 'ruby-debug19' 
       else 
         gem 'ruby-debug' 
       end 
   end
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文