Ответ 1
Теперь возможно с рельсами 4.2.8.rc1 (11 февраля 2017 года)
Я хочу попробовать приложение 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.2.8.rc1 (11 февраля 2017 года)
У драгоценного камня json
есть исправление на ветке 1.8
. Надеюсь, вскоре он будет выпущен как драгоценный камень, но пока вы можете использовать его непосредственно в своем Gemfile:
gem 'json', github: 'flori/json', branch: 'v1.8'
Rails также объединил исправление в ветку 4-2-stable
примерно через неделю после последней официальной версии выпуска 4.2.x
. Надеюсь, они скоро выпустят новый драгоценный камень, но это может помочь в вашем Gemfile:
gem 'rails', github: 'rails/rails', branch: '4-2-stable'
Наконец, вам может потребоваться загрузить arel
из источника git:
gem 'arel', github: 'rails/arel', branch: '6-0-stable'
С этими тремя изменениями я смог загрузить наше приложение и запросить базу данных, но затем столкнулся с другими проблемами, связанными с объединением Integer. Похоже, это изменение приведет к возникновению некоторых волн.
Похоже, в данный момент это будет невозможно (хотя это звучит странно).
См. Список изменений для JSON gem. Json 2.0.0 добавляет совместимость для ruby 2.4, но рельсы 4.2 ограничивают json до 1.x
Обновление рельсов до рельсов - 4.2.8. Это первая версия 4.2.x, которая официально поддерживает ruby-2.4