2016-07-21 18 views
14

Tôi muốn tạo ứng dụng Rails mới. Tôi đang sử dụng rvm với ruby-2.1.2. Tôi sử dụng bộ đá quý @global và lập kế hoạch sử dụng trình quản lý để quản lý phụ thuộc đá quý. Tuy nhiên, thất bại gem install rails:Cài đặt Rails không thành công: activesupport yêu cầu phiên bản Ruby> = 2.2.2

$ gem install rails 
Fetching: concurrent-ruby-1.0.3.pre3.gem (100%) 
Successfully installed concurrent-ruby-1.0.3.pre3 
Fetching: minitest-5.9.0.gem (100%) 
Successfully installed minitest-5.9.0 
Fetching: thread_safe-0.3.5.gem (100%) 
Successfully installed thread_safe-0.3.5 
Fetching: tzinfo-1.2.2.gem (100%) 
Successfully installed tzinfo-1.2.2 
Fetching: i18n-0.7.0.gem (100%) 
Successfully installed i18n-0.7.0 
Fetching: activesupport-5.0.0.gem (100%) 
ERROR: Error installing rails: 
    activesupport requires Ruby version >= 2.2.2. 

Vâng, đó là sự thật Tôi đang sử dụng ruby-2.1.2 và không ruby-2.2.2, nhưng không nên tôi vẫn được phép sử dụng ruby-2.1.2? Chúng ta có được phép sử dụng ruby-2.1.2 nữa không?

Tôi nghĩ có lẽ đó ActiveSupport 5 đã được cài đặt trong @global gemset và ActiveSupport 5 cần 2.2.2, nhưng thực sự không có ActiveSupport 5 trong @global gemset:

$ rvm gemdir 
/Users/myuser/.rvm/gems/[email protected] 
$ cd /Users/myuser/.rvm/gems/[email protected] 
$ cd gems 
$ ls 
bundler-unload-1.0.2  gem-wrappers-1.2.4  rake-10.1.0   rvm-1.11.3.9   tzinfo-1.2.2 
concurrent-ruby-1.0.3.pre3 i18n-0.7.0   rdoc-4.1.0   test-unit-2.1.2.0 
executable-hooks-1.3.2  minitest-5.9.0   rubygems-bundler-1.4.4  thread_safe-0.3.5 

Vậy làm thế nào tôi có thể ngăn chặn lỗi này xảy ra khi cố gắng sử dụng ruby-2.1.2?

Trả lời

25

Bạn được phép sử dụng bất kỳ phiên bản ruby ​​nào của bạn, tuy nhiên bạn không thể sử dụng bất kỳ phiên bản ruby ​​nào với phiên bản Rails mới nhất. Khi bạn thực hiện gem install rails, bạn sẽ nhận được phiên bản Rails mới nhất (Rails 5), phiên bản này không tương thích với Ruby 2.1.2.

Nếu bạn thực sự muốn sử dụng Ruby 2.1.2, hãy thử cách này: gem install rails -v 4.2.2.

Khi sử dụng gemset, vì tôi thích điều này được sắp xếp khá đẹp, tôi không bao giờ sử dụng toàn cầu. Tôi luôn tạo một gemset mới cho mọi dự án. Điều này đảm bảo rằng tôi có thể có nhiều dự án, mỗi một với một phiên bản ruby ​​và ray, mà không nhận được bất kỳ sự không tương thích giữa các đá quý. Đây là gemset là vùng làm việc Ruby on Rails của bạn. Nếu bạn tách chúng theo dự án, bạn sẽ giảm thiểu tỷ lệ cược của những điều kỳ quặc với sự không tương thích của đá quý.

+0

điểm đầu tiên của bạn trả lời câu hỏi của tôi. Tuy nhiên, điểm thứ hai của bạn tôi phải không đồng ý với. Mỗi khi bạn tạo một gemset mới, bạn sẽ có các bản sao của các gem tương tự nhau cho mỗi dự án. Toàn bộ mục đích của bundler là để giải quyết các vấn đề phụ thuộc và sử dụng Gemfile để tải các gem phù hợp, vì vậy những điều kỳ quặc với gem không tương thích sẽ không bao giờ xảy ra. – Donato

+2

@ Datoato không xuất hiện trong đầu tôi một cách ngẫu nhiên. Và đó không phải là điều ước của tôi. Bạn có thể đọc thông số kỹ thuật từ nguồn đáng tin cậy nhất: https://rvm.io/gemsets/basics Từ 'Cảnh báo!' session: "RVM cung cấp cho bạn một thư mục gem riêng biệt cho mỗi phiên bản Ruby và gemset. Điều này có nghĩa là các gem phải được cài đặt một cách rõ ràng cho mỗi phiên bản và gemset. RVM giúp bạn quản lý quá trình này; xem trang tài liệu RVM set." – GPrimola

6
gem install rails 

Lệnh trên sẽ sử dụng phiên bản mới nhất của ray, đó là bản phát hành ổn định của Rails 5, yêu cầu> = ruby ​​2.2.2.

Chúng tôi có thể sử dụng 2.1.2 với phiên bản Rails thấp hơn. Hãy xác định phiên bản tại thời điểm lắp đặt đường ray có thể giải quyết vấn đề của bạn, Ví dụ:

gem install rails --version 4.2.4 

hoặc

gem install rails -v 4.2.4 

Hãy cho tôi biết nếu nó hoạt động. Cảm ơn bạn.

0

Sử dụng RVM làm việc cho tôi, tôi đã theo here

curl -sSL https://rvm.io/mpapis.asc | gpg --import - &&\ 
curl -L get.rvm.io | bash -s stable &&\ 
source /etc/profile.d/rvm.sh && /usr/local/rvm/bin/rvm reload &&\ 
/usr/local/rvm/bin/rvm requirements run &&\ 
/usr/local/rvm/bin/rvm install 2.2.4 &&\ 
/usr/local/rvm/bin/rvm use 2.2.4 --default && ruby --version 

Môi trường của tôi được một container với CentOS Docker cài đặt

0

Nếu bạn đang sử dụng rbenv

Vui lòng kiểm tra rbenv được thiết lập đúng sử dụng kịch bản này rbenv-bác sĩ:

$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash 
Các vấn đề liên quan