Ruby: не удалось установить гем через Bundler - PullRequest
0 голосов
/ 30 апреля 2020

У меня проблемы с получением приложения ruby для развертывания на Heroku. Когда я пу sh это через это журналы ошибок, которые я получаю. Даже моя команда ruby -v не будет работать. Не могу даже связать обновление или установить связку либо. Мой GemFile читает ('rails', '3.2.11'), (gem 'sass-rails', '~> 3.2.3') (gem 'coffee-rails', '~> 3.2.1') ​​и (gem 'annotate', '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 доставляет мне больше всего хлопот.

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

Rails 3.2 (и его зависимости, такие как ваша версия гема json) не совместимы с Ruby 2.6. Чтобы решить эту проблему, вы должны предпочтительно перейти на более новую версию Rails (например, Rails 6.0). Если у вас есть новое приложение rails, вы должны начать прямо с новой версии Rails. Если у вас есть существующее приложение, вам, вероятно, необходимо выполнить обновления кода (которые могут быть интенсивными), чтобы ваше приложение было совместимо с более новой версией rails.

Если вам нужно использовать такую ​​старую (и долгую раз не поддерживается) версия Rails, вам нужно использовать более старую версию Ruby. В Rails 3.2.11 новейшая поддерживаемая версия Ruby - Ruby 1.9.2, которая (помимо невероятно устаревшего) поддерживается только в стеке Heroku Cedar-14 (который, в свою очередь, будет удален 2 ноября 2020 года, когда вы определенно придется обновить ваше приложение)

Таким образом, если вам строго нужно придерживаться Rails 3.2, вам следует как минимум обновить до 3.2.22.5, где вы можете использовать Ruby 2.2 (оба из которых все еще отсутствуют поддержки уже). В Heroku вам необходимо использовать стек Heroku-16, который поддерживает Ruby до версии 2.2.10.

Тем не менее, вам определенно следует попытаться обновить свой стек, чтобы использовать версии программного обеспечения, обновленные менее 7 лет go ...

0 голосов
/ 30 апреля 2020

Попробуйте запустить bundle update json или, если это не поможет, попробуйте проверить, совместима ли ваша версия компоновщика с вашей версией rails

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...