ruby on rails - ¿Es posible ejecutar una aplicación Rails 4.2 en Ruby 2.4?
ruby-on-rails ruby-on-rails-4 (4)
Quiero probar una aplicación Rails 4.2 en Ruby 2.4.
Sin embargo, cuando intento hacerlo, recibo errores acerca de la versión 1.8.3 de json gem que no se pudo instalar.
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.
que asumo se debe a la unificación de Fixnum y Bignum en Integer.
Si agrego al Gemfile una restricción de que json tiene que ser la versión 2.0.0, entonces se queja de que Rails 4.2 requiere json ~> 1.7, lo que prohíbe 2.0.0.
¿Estoy fuera de suerte a menos que los mantenedores de Rails decidan hacer un cambio a una versión que no sea 5.x de Rails, o los mantenedores de la gema json decidan hacer una nueva versión que no sea 2.x de su gema?
Actualice los rieles a rieles-4.2.8. Esta es la primera versión 4.2.x que admite oficialmente ruby-2.4
Ahora es posible con rieles 4.2.8.rc1 (11 de febrero de 2017)
La gema json
tiene una solución en la rama 1.8
. Esperamos que se publique como una gema pronto, pero mientras tanto, puedes usarlo directamente en tu Gemfile:
gem ''json'', github: ''flori/json'', branch: ''v1.8''
Rails también ha fusionado una solución para la rama 4-2-stable
aproximadamente una semana después del último lanzamiento oficial de la gema 4.2.x
Con suerte, también lanzarán una nueva gema pronto, pero esto podría ayudar en su Gemfile:
gem ''rails'', github: ''rails/rails'', branch: ''4-2-stable''
Finalmente, es posible que también arel
cargar un arel
desde una fuente de git:
gem ''arel'', github: ''rails/arel'', branch: ''6-0-stable''
Con esos tres cambios pude iniciar nuestra aplicación y consultar la base de datos, pero luego me topé con otros problemas relacionados con la unificación de enteros. Parece que este cambio va a causar algunas olas.
Parece que no será posible en este momento (aunque suene extraño).
Ver el registro de cambios para la gema JSON . Json 2.0.0 agrega compatibilidad para ruby 2.4, pero los rieles 4.2 restringen json a 1.x