web-dev-qa-db-ja.com

Rails 4.2アプリをRuby 2.4で実行できますか?

Rails 4.2 app on 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バージョン?

18
Andrew Grimm

Rails 4.2.8.rc1 (2017年2月11日)で可能になりました

14
Joshua

json gemの1.8ブランチが修正されました。うまくいけば、すぐにGemとしてリリースされますが、それまでの間はGemfileで直接使用できます。

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

Railsはまた、最新の公式4-2-stable gemリリースの約1週間後に、修正を _4.2.xブランチにマージしました 。うまくいけば、彼らもすぐに新しいgemをリリースするでしょうが、これはあなたのGemfileで役立つかもしれません:

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

最後に、gitソースからarelもロードする必要がある場合があります。

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

これらの3つの変更により、アプリを起動してデータベースにクエリを実行できましたが、他の整数の統合に関連する問題が発生しました。この変化が波を引き起こすようになるようです。

16
James Healy

Rails to Rails-4.2.8にアップグレードします。これは公式にRuby-2.4をサポートする最初の4.2.xバージョンです。

6
tessie

現時点では不可能のようです(奇妙に聞こえますが)。

JSON gemの変更ログ を参照してください。 Json 2.0.0はRuby 2.4の互換性を追加しますが、Rails 4.2はjsonを1.xに制限します

4
dgmora