Je veux essayer une application Rails 4.2 sur Ruby 2.4.
Cependant, lorsque j'essaie de le faire, j'obtiens des erreurs concernant l'échec de l'installation de la version 1.8.3 de json gem.
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.
ce que je suppose est dû à l'unification de Fixnum et Bignum en Integer.
Si j'ajoute au Gemfile une contrainte que json doit être la version 2.0.0, alors il se plaint que Rails 4.2 nécessite json ~> 1.7, ce qui interdit 2.0.0.
Suis-je malchanceux à moins que les responsables de Rails décident de modifier une version non 5.x de Rails ou que les responsables de la gem json décident de créer un nouveau non-2 Version .x de leur joyau?
C'est désormais possible avec Rails 4.2.8.rc1 (11 février 2017)
Le json
gem a un correctif sur le 1.8
branche. J'espère qu'il sera bientôt publié sous forme de gemme, mais en attendant, vous pouvez l'utiliser directement dans votre Gemfile:
gem 'json', github: 'flori/json', branch: 'v1.8'
Rails a également fusionné un correctif vers le 4-2-stable
succursale environ une semaine après le dernier fonctionnaire 4.2.x
libération de gemme. J'espère qu'ils publieront bientôt un nouveau joyau, mais cela pourrait aider dans votre Gemfile:
gem 'Rails', github: 'Rails/rails', branch: '4-2-stable'
Enfin, vous devrez peut-être également charger arel
à partir d'une source git:
gem 'arel', github: 'Rails/arel', branch: '6-0-stable'
Avec ces trois changements, j'ai pu démarrer notre application et interroger la base de données, mais j'ai ensuite rencontré d'autres problèmes liés à l'unification d'Integer. On dirait que ce changement va provoquer des vagues.
Mettre à niveau Rails vers Rails-4.2.8. Il s'agit de la première version 4.2.x qui prend officiellement en charge Ruby-2.4
Il semble que ce ne sera pas possible pour le moment (bien que cela semble étrange).
Voir le Changelog pour la gemme JSON . Json 2.0.0 ajoute la compatibilité pour Ruby 2.4, mais Rails 4.2 restreint json à 1.x