2016-12-23 2 views
16

Я хочу попробовать приложение Rails 4.2 на Ruby 2.4.Возможно ли запустить приложение Rails 4.2 на Ruby 2.4?

Однако, когда я пытаюсь это сделать, я получаю ошибки о json gem версии 1.8.3, которые не могут быть установлены.

Gem::Ext::BuildError: ERROR: Failed to build gem native extension. 

    current directory: /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator 
/Users/agrimm/.rbenv/versions/2.4.0-rc1/bin/ruby -r ./siteconf20161223-91367-cql0ne.rb extconf.rb 
creating Makefile 

current directory: /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator 
make "DESTDIR=" clean 

current directory: /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/gems/json-1.8.3/ext/json/ext/generator 
make "DESTDIR=" 
compiling generator.c 
generator.c:861:25: error: use of undeclared identifier 'rb_cFixnum' 
    } else if (klass == rb_cFixnum) { 
         ^
generator.c:863:25: error: use of undeclared identifier 'rb_cBignum' 
    } else if (klass == rb_cBignum) { 
         ^
2 errors generated. 
make: *** [generator.o] Error 1 

make failed, exit code 2 

Gem files will remain installed in /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/gems/json-1.8.3 for inspection. 
Results logged to /Users/agrimm/.rbenv/versions/2.4.0-rc1/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-14/2.4.0-static/json-1.8.3/gem_make.out 

An error occurred while installing json (1.8.3), and Bundler cannot continue. 
Make sure that `gem install json -v '1.8.3'` succeeds before bundling. 

, который, как я полагаю, обусловлен объединением Fixnum и Bignum в Integer.

Если я добавлю в Gemfile ограничение, что json должен быть версией 2.0.0, то он жалуется, что Rails 4.2 требует json ~> 1.7, что запрещает 2.0.0.

Мне повезло, если разработчики Rails не решили внести изменения в версию Rails, отличную от версии 5.x, или разработчики json gem решили создать новую версию, отличную от 2.x. драгоценный камень?

ответ

4

Похоже, что в данный момент это будет невозможно (хотя это звучит странно).

См. Changelog for the JSON gem. Json 2.0.0 добавляет совместимость для ruby ​​2.4, но рельсы 4.2 ограничивают json до 1.x

16

У драгоценного камня json есть исправление на ветке 1.8. Надеюсь, что она будет выпущена в качестве драгоценного камня в ближайшее время, но в то же время вы можете использовать его непосредственно в Gemfile:

gem 'json', github: 'flori/json', branch: 'v1.8' 

Rails также имеет merged a fix к 4-2-stable ветви примерно через неделю после последнего официального выпуска 4.2.x самоцвета. Надеюсь, они выпустят новый драгоценный камень слишком скоро, но это может помочь в вашем Gemfile:

gem 'rails', github: 'rails/rails', branch: '4-2-stable' 

Наконец, возможно, потребуется загрузить arel из источника мерзавца, а также:

gem 'arel', github: 'rails/arel', branch: '6-0-stable' 

С тех три изменения я смог загрузить наше приложение и запросить базу данных, но затем столкнулся с другими проблемами, связанными с объединением Integer. Похоже, это изменение приведет к возникновению некоторых волн.

+0

Поскольку размещение этот ответ , были выпущены Ruby 2.4 совместимые версии json ('1.8.5') и arel (' 6.0.4'). Главное, чего мы сейчас ждем - это новая версия rails '4.2.x'. –

+1

.. и теперь рельсы 4.2.8 были выпущены, что должно быть достаточно для загрузки приложений на ruby ​​2.4. Вероятно, несколько зависимостей второго и третьего уровней будут печатать отсрочки, но, надеюсь, они не смертельны –

4

Upgrade рельсы на рельсы-4.2.8 .Это первая версия 4.2.x, которая официально поддерживает рубиновый 2,4

Смежные вопросы