2016-12-23 13 views
16

Tôi muốn thử một ứng dụng Rails 4.2 trên Ruby 2.4.Có thể chạy ứng dụng Rails 4.2 trên Ruby 2.4 không?

Tuy nhiên, khi tôi thử làm điều đó, tôi gặp lỗi về phiên bản đá quý json 1.8.3 không cài đặt được.

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. 

mà tôi giả định là do việc hợp nhất Fixnum và Bignum thành Số nguyên.

Nếu tôi thêm vào Gemfile một ràng buộc mà json phải là phiên bản 2.0.0, thì nó phàn nàn rằng Rails 4.2 yêu cầu json ~> 1.7, cấm 2.0.0.

Tôi không may mắn trừ khi người duy trì Rails quyết định thay đổi phiên bản Rx không 5.x, hoặc người bảo trì đá quý json quyết định tạo phiên bản không phải là phiên bản 2.x mới của họ đá quý?

Trả lời

8

Nó bây giờ có thể với đường ray 4.2.8.rc1 (11 tháng 2 năm 2017)

4

Dường như không thể thực hiện tại thời điểm này (Mặc dù có vẻ lạ).

Xem Changelog for the JSON gem. Json 2.0.0 bổ sung khả năng tương thích cho ruby ​​2.4, nhưng đường ray 4.2 hạn chế json thành 1.x

16

Đá quý json có sửa chữa trên chi nhánh 1.8. Hy vọng rằng nó sẽ được phát hành như một viên ngọc sớm, nhưng trong khi chờ đợi, bạn có thể sử dụng nó trực tiếp trong Gemfile của bạn:

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

Rails cũng có merged a fix đến 4-2-stable chi nhánh khoảng một tuần sau khi chính thức phát hành 4.2.x đá quý mới nhất. Hy vọng rằng họ sẽ phát hành một viên ngọc mới sớm quá, nhưng điều này có thể giúp đỡ trong việc Gemfile của bạn:

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

Cuối cùng, bạn có thể cần phải tải arel từ một nguồn git cũng như:

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

Với những ba thay đổi tôi đã có thể khởi động ứng dụng của chúng tôi và truy vấn cơ sở dữ liệu, nhưng sau đó chạy vào các vấn đề liên quan thống nhất khác của Integer. Có vẻ như sự thay đổi này sẽ gây ra một số sóng.

+0

Kể từ khi đăng câu trả lời này , ruby ​​2.4 phiên bản tương thích của json ('1.8.5') và arel (' 6.0.4') đã được phát hành. Điều chính chúng tôi đang chờ đợi bây giờ là phát hành bản phát hành mới 4.2.x'. –

+1

.. và bây giờ đường ray 4.2.8 đã được phát hành, điều đó là đủ để các ứng dụng khởi động trên ruby ​​2.4. Có khả năng là một vài phụ thuộc cấp độ thứ hai và thứ ba sẽ in không dùng nữa, nhưng hy vọng chúng không gây tử vong –

4

ray Nâng cấp lên đường ray-4.2.8 .Đây là phiên bản 4.2.x đầu tiên chính thức hỗ trợ ruby-2.4

Các vấn đề liên quan