繁体   English   中英

Ruby:无法通过 Bundler 安装 gem

[英]Ruby: Failed to install gems via Bundler

我在将 ruby 应用程序部署到 Heroku 上时遇到问题。 当我推动它时,这是我得到的错误日志。 甚至我的 ruby -v 命令也不起作用。 甚至不能捆绑更新或捆绑安装。 我的 GemFile 读取 ('rails', '3.2.11'), (gem 'sass-rails', '~> 3.2.3') (gem 'coffee-rails', '~> 3.2.1') 和 (gem '注释','2.5.0')(宝石'better_errors')(宝石'binding_of_caller')。 对于混乱的格式,我深表歉意,但任何帮助都有效!

remote:        
remote:        current directory:
remote:        /tmp/build_b6e9988ad2a1c287bcb95782c7a546cd/vendor/bundle/ruby/2.6.0/gems/json-1.8.0/ext/json/ext/generator
remote:        /tmp/build_b6e9988ad2a1c287bcb95782c7a546cd/vendor/ruby-2.6.6/bin/ruby -I
remote:        /tmp/build_b6e9988ad2a1c287bcb95782c7a546cd/vendor/ruby-2.6.6/lib/ruby/2.6.0 -r
remote:        ./siteconf20200430-264-zpgrl6.rb extconf.rb
remote:        creating Makefile
remote:        
remote:        current directory:
remote:        /tmp/build_b6e9988ad2a1c287bcb95782c7a546cd/vendor/bundle/ruby/2.6.0/gems/json-1.8.0/ext/json/ext/generator
remote:        make "DESTDIR=" clean
remote:        
remote:        current directory:
remote:        /tmp/build_b6e9988ad2a1c287bcb95782c7a546cd/vendor/bundle/ruby/2.6.0/gems/json-1.8.0/ext/json/ext/generator
remote:        make "DESTDIR="
remote:        compiling generator.c
remote:        In file included from generator.c:1:0:
remote:        ../fbuffer/fbuffer.h: In function ‘fbuffer_to_s’:
remote:        ../fbuffer/fbuffer.h:175:47: error: macro "rb_str_new" requires 2 arguments, but
remote:        only 1 given
remote:             VALUE result = rb_str_new(FBUFFER_PAIR(fb));
remote:                                                       ^
remote:        ../fbuffer/fbuffer.h:175:20: warning: initialization makes integer from pointer
remote:        without a cast [-Wint-conversion]
remote:             VALUE result = rb_str_new(FBUFFER_PAIR(fb));
remote:                            ^~~~~~~~~~
remote:        generator.c: In function ‘generate_json’:
remote:        generator.c:840:25: error: ‘rb_cFixnum’ undeclared (first use in this function);
remote:        did you mean ‘mFixnum’?
remote:             } else if (klass == rb_cFixnum) {
remote:                                 ^~~~~~~~~~
remote:                                 mFixnum
remote:        generator.c:840:25: note: each undeclared identifier is reported only once for
remote:        each function it appears in
remote:        generator.c:842:25: error: ‘rb_cBignum’ undeclared (first use in this function);
remote:        did you mean ‘rb_cFixnum’?
remote:             } else if (klass == rb_cBignum) {
remote:                                 ^~~~~~~~~~
remote:                                 rb_cFixnum
remote:        generator.c: At top level:
remote:        cc1: warning: unrecognized command line option ‘-Wno-self-assign’
remote:        cc1: warning: unrecognized command line option ‘-Wno-parentheses-equality’
remote:        cc1: warning: unrecognized command line option ‘-Wno-constant-logical-operand’
remote:        cc1: warning: unrecognized command line option ‘-Wno-cast-function-type’
remote:        Makefile:244: recipe for target 'generator.o' failed
remote:        make: *** [generator.o] Error 1
remote:        
remote:        make failed, exit code 2
remote:        
remote:        Gem files will remain installed in
remote:        /tmp/build_b6e9988ad2a1c287bcb95782c7a546cd/vendor/bundle/ruby/2.6.0/gems/json-1.8.0
remote:        for inspection.
remote:        Results logged to
remote:        /tmp/build_b6e9988ad2a1c287bcb95782c7a546cd/vendor/bundle/ruby/2.6.0/extensions/x86_64-linux/2.6.0/json-1.8.0/gem_make.out
remote:        
remote:        An error occurred while installing json (1.8.0), and Bundler cannot continue.
remote:        Make sure that `gem install json -v '1.8.0' --source 'https://rubygems.org/'`
remote:        succeeds before bundling.
remote:        
remote:        In Gemfile:
remote:          coffee-rails was resolved to 3.2.2, which depends on
remote:            railties was resolved to 3.2.11, which depends on
remote:              rdoc was resolved to 3.12.2, which depends on
remote:                json
remote: 
remote:  !
remote:  !     Failed to install gems via Bundler.
remote:  !
remote:  !     Push rejected, failed to compile Ruby app.
remote: 
remote:  !     Push failed
remote: Verifying deploy...
remote: 

任何帮助表示赞赏,似乎 JSON 给我带来了最大的麻烦。

尝试运行bundle update json或者如果它没有帮助,请尝试检查您的捆绑器版本是否与您的 rails 版本兼容

Rails 3.2(及其依赖项,例如您的json gem 版本)与 Ruby 2.6 不兼容。 要解决此问题,您最好升级到更新版本的 Rails(例如 Rails 6.0)。 如果你有一个新的 Rails 应用程序,你应该直接从一个新的 Rails 版本开始。 如果您有一个现有的应用程序,您可能需要执行代码升级(这可能是密集的),以使您的应用程序与较新的 rails 版本兼容。

如果你必须使用这么旧的(并且长期不受支持的)Rails 版本,你需要使用旧版本的 Ruby。 在 Rails 3.2.11 中,最新支持的 Ruby 版本是 Ruby 1.9.2 (除了非常过时)仅在 Heroku 的Cedar-14堆栈上受支持(反过来,它将在 2020 年 11 月 2 日至 2020 年 11 月 2 日至升级您的应用程序)

因此,如果您必须严格遵守 Rails 3.2,您至少应该升级到 3.2.22.5,您可以在其中使用 Ruby 2.2(两者都已不再支持)。 在 Heroku 上,您需要使用Heroku-16堆栈,该堆栈支持 Ruby 到版本 2.2.10。

尽管如此,您绝对应该尝试升级您的堆栈以使用不到 7 年前更新的软件版本......

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM