2016-07-21 7 views
14

Chcę utworzyć nową aplikację Rails. Używam rvm z ruby-2.1.2. Jestem użytkownikiem gemsetu @global i planuję użyć bundler do zarządzania zależnościami gem. Jednak gem install rails zawiedzie:Instalacja Railsów kończy się niepowodzeniem: activesupport wymaga wersji 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. 

Tak, to prawda używam ruby-2.1.2 i nie Ruby 2.2.2, ale nie powinny nadal mieć możliwość korzystania Ruby 2.1.2? Czy nie wolno nam już używać Ruby-2.1.2?

Myślałem może, że ActiveSupport 5 został już zainstalowany w @global gemset i że ActiveSupport 5 wymagane 2.2.2, ale w rzeczywistości nie ma ActiveSupport 5 w @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 

jaki sposób można zapobiec ten błąd wystąpił podczas próby użycia ruby-2.1.2?

Odpowiedz

25

Możesz używać dowolnej wersji testamentu ruby, jednak nie możesz używać żadnej wersji ruby ​​z najnowszą wersją Railsów. Gdy robisz gem install rails otrzymujesz najnowszą wersję Railsów (Rails 5), która w ogóle nie jest kompatybilna z Ruby 2.1.2.

Jeśli naprawdę chcesz używać Ruby 2.1.2, spróbuj tego: gem install rails -v 4.2.2.

Jako że korzystanie z gemsetów, ponieważ lubię to dość zorganizowane, nigdy nie używam globalnego. Zawsze tworzę nowy gemset dla każdego projektu. Ta gwarancja, że ​​mogę mieć wiele projektów, z których każdy ma wersję z rubinami i szynami, bez żadnych niezgodności między klejnotami. To gemset jako przestrzeń robocza Ruby on Rails. Jeśli podzielisz je według projektu, zminimalizujesz szanse na dziwactwa związane z niekompatybilnością klejnotów.

+0

Twój pierwszy punkt odpowiada na moje pytanie. Jednak twoja druga uwaga, z którą muszę się nie zgodzić. Za każdym razem, gdy utworzysz nowy gemset, będziesz miał duplikaty klejnotów podobnych do każdego projektu. Celem programu bundler jest rozwiązanie problemów z zależnościami i użycie Gemfile do załadowania odpowiednich klejnotów, więc dziwactwa z niekompatybilnością gem nigdy się nie zdarzą. – Donato

+2

@Donato, który nie wyszedł mi z głowy losowo. I nie było to moje życzenie. Możesz przeczytać specyfikację z najbardziej zaufanego źródła: https://rvm.io/gemsets/basics Z "Ostrzeżenia!" session: "RVM daje ci oddzielny katalog gemów dla każdej wersji Ruby i gemset. * Oznacza to, że klejnoty muszą być jawnie zainstalowane dla każdej wersji i gemset. RVM pomaga ci zarządzać tym procesem, zobacz stronę dokumentacji zestawu RVM." – GPrimola

6
gem install rails 

Powyższa komenda użyje najnowszej wersji torów, czyli stabilnej wersji Rails 5, które wymagają> = ruby ​​2.2.2.

Możemy użyć wersji 2.1.2 z niższą wersją Railsów. Proszę podać wersję w momencie zamontowania szyn może rozwiązać problem, na przykład:

gem install rails --version 4.2.4 

lub

gem install rails -v 4.2.4 

Daj mi znać, czy działa. Dziękuję.

0

Korzystanie RVM pracował dla mnie, ja już po instrukcje 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 

Moje środowisko został pojemnik Docker z CentOS zainstalowany

0

Jeśli używasz rbenv

upewnij się, że rbenv jest prawidłowo skonfigurowana za pomocą tego skryptu rbenv-Lekarz:

$ curl -fsSL https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-doctor | bash 
Powiązane problemy