web-dev-qa-db-fra.com

Est-il possible d'exécuter une application Rails 4.2 sur Ruby 2.4?

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?

18
Andrew Grimm

C'est désormais possible avec Rails 4.2.8.rc1 (11 février 2017)

14
Joshua

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.

16
James Healy

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

6
tessie

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

4
dgmora