Ответ 1
Вы можете создать новое приложение rails с определенной версией рельсов, например
rails _3.2.14_ new myApp
Вот мои локальные драгоценности:
$ gem list
*** LOCAL GEMS ***
actionmailer (4.0.0, 3.2.14)
actionpack (4.0.0, 3.2.14)
activemodel (4.0.0, 3.2.14)
activerecord (4.0.0, 3.2.14)
activerecord-deprecated_finders (1.0.3)
activeresource (3.2.14)
activesupport (4.0.0, 3.2.14)
arel (4.0.0, 3.0.2)
atomic (1.1.13)
builder (3.1.4, 3.0.4)
bundler (1.3.5)
bundler-unload (1.0.1)
erubis (2.7.0)
hike (1.2.3)
i18n (0.6.5)
journey (1.0.4)
json (1.8.0)
mail (2.5.4)
mime-types (1.24)
minitest (4.7.5)
multi_json (1.7.9)
polyglot (0.3.3)
rack (1.5.2, 1.4.5)
rack-cache (1.2)
rack-ssl (1.3.3)
rack-test (0.6.2)
rails (3.2.14)
railties (4.0.0, 3.2.14)
rake (10.1.0)
rdoc (3.12.2)
rubygems-bundler (1.2.2)
rubygems-update (2.0.7)
rvm (1.11.3.8)
sprockets (2.10.0, 2.2.2)
sprockets-rails (2.0.0)
thor (0.18.1)
thread_safe (0.1.2)
tilt (1.4.1)
treetop (1.4.15)
tzinfo (0.3.37)
Но когда я набираю rails -v
, я получаю следующее:
$ rails -v
Rails 4.0.0
$ which rails
/Users/polonium/.rvm/rubies/ruby-2.0.0-p247/bin/rails
Как я могу указать rvm для использования рельсов версии 3.2.14?
Заранее спасибо
Вы можете создать новое приложение rails с определенной версией рельсов, например
rails _3.2.14_ new myApp
Как мне указать rvm для использования rails версии 3.2.14?
рвм не имеет ничего общего с рельсами. rvm используется для управления несколькими установками ruby. И каждая из ваших установок ruby может быть связана с несколькими наборами гемов. Например, скажем, у вас установлен ruby 1.9.3 и вы создали два набора гемов для ruby 1.9.3: gemsetA и gemsetB. Если вы скажете rvm использовать ruby 1.9.3 с gemsetA, это означает:
Ваши программы ruby будут выполняться ruby 1.9.3.
Вашим программам ruby может потребоваться любой драгоценный камень в gemsetA (который затем позволяет вашей программе использовать методы (или классы), определенные в gemsetA), но любые драгоценные камни в gemsetB не могут быть просмотрены вашей программой ruby.
Вот конкретный пример:
~$ rvm list
rvm rubies
ruby-1.8.7-p370 [ i686 ]
* ruby-1.9.3-p194 [ x86_64 ]
=> ruby-2.0.0-p0 [ x86_64 ]
ruby-2.0.0-p247 [ x86_64 ]
# => - current
# =* - current && default
# * - default
~$ rvm use 1.9.3-p194
Using /Users/7stud/.rvm/gems/ruby-1.9.3-p194
,
~$ rvm gemset list (This lists only the gemsets for the current ruby version)
gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194)
=> (default)
global
programming
rails3tutorial
rails4
~$ rvm gemset use programming
Using ruby-1.9.3-p194 with gemset programming
После того, как я это сделаю, мои программы ruby будут выполняться с помощью ruby 1.9.3, и любые гемы из набора гемов программирования могут потребоваться в моей программе ruby. Вы можете использовать ярлык для выполнения обеих этих команд за один шаг:
rvm use ruby [email protected]
Вы просто комбинируете версию ruby и набор гемов с символом @между ними.
Но когда я печатаю рельсы -v, я получаю это:
$ rails -v Rails 4.0.0
Это потому, что текущий набор гемов содержит гем для рельсов 4.0.0. Если вы хотите видеть вывод $ rails -v
Rails 3.2.14
$ rails -v
Rails 3.2.14
, то вы должны указать rvm переключиться на набор гемов, который содержит гем rails 3.2.14.
Однако вы можете сделать так, чтобы rvm автоматически переключался на правильную версию rails и gemset для вашего проекта rails. В своем Gemfile добавьте комментарий после версии ruby:
ruby '2.0.0'
#ruby-gemset=railstutorial4_gems
Затем, когда вы переключаетесь в каталог, содержащий ваш проект rails, rvm автоматически переключает текущий ruby на ruby 2.0.0, а текущий gemset на railstutorial4_gems. Если вы измените каталоги из вашего приложения rails, rvm изменит текущий ruby и текущий gemset обратно на прежние.
Я только начинающий, но вот шаги, которые я использую для создания нового проекта, которые прямо из учебника по железной дороге (http://ruby.railstutorial.org/ruby-on-rails-tutorial-book)
1)
.../rails_projects$ rvm use <ruby version here>@<new gemset name here> --create
e.g.
.../rails_projects$ rvm use [email protected]_gemset --create
2)
.../rails_projects$ gem install rails --version 3.2.14
Поскольку текущим набором гемов является набор гемов myapp, эта команда устанавливает гем rails 3.2.14 в набор гемов myapp.
3)
.../rails_projects$ rails new myapp
.../rails_projects$ cd myapp
Текущий набор гемов все еще myapp_gemset.
4)
.../rails_projects/myapp$ rails -v
Rails 3.2.14
В случае, если кому-то интересно, что, черт возьми, означают следующие два набора гемов:
gemsets for ruby-1.9.3-p194 (found in /Users/7stud/.rvm/gems/ruby-1.9.3-p194)
=> (default)
global
rvm создает эти два набора гемов для каждой устанавливаемой вами версии ruby. После установки версии ruby, если вы сами не создаете набор гемов для этой версии ruby и устанавливаете гем, тогда этот гем переходит в набор гемов (по умолчанию). И, если вы хотите, чтобы все ваши наборы гемов содержали определенный гем, вы можете переключиться на глобальный набор гемов и установить его там.
Обновление: -------
Чтобы обеспечить совместимость с другими менеджерами версий ruby, вы можете указать версию ruby и имя набора гемов для вашего проекта в другом файле, а не в Gemfile:
$ cd ~/rails_projects/myapp
~/rails_projects/myapp$ echo 2.0.0 > .ruby-version
~/rails_projects/myapp$ echo myapp_gemset > .ruby-gemset
Вы все еще будете получать то же автоматическую версию рубина и gemset переключение, когда вы cd
в каталог проекта. Смотрите RVM документы здесь.
найденный вами путь /Users/polonium/.rvm/rubies/ruby-2.0.0-p247/bin/rails
- это не правильный путь, который вы нашли бы в стандартной установке rvm при правильном использовании rvm, что вы увидите: /Users/polonium/.rvm/gems/ruby-2.0.0-p247/bin/rails
чтобы он работал правильно, попробуйте этот поток:
rvm use 2.0.0
rvm gemset empty
rvm use @rails3 --create
gem install rails -v "~>3.2"
rvm use @rails4 --create
gem install rails -v "~>4"
Таким образом, теперь вы можете переключаться между этими двумя установками рельсов с помощью:
rvm use [email protected]
rails -v # rails 3.2...
rvm use [email protected]
rails -v # rails 4.0...
вам следует: gem install 'rails' -v '3.2.13'
Вы должны использовать чистый гемсет, если вы используете rvm, вы можете попробовать:
rvm gemset create Использование rvm gemset
Теперь у вас есть чистый гемсет, время установки рельсов,
gem install rails -v '3.2.13'
, а затем создайте приложение rails,
reils new app_name
"railties (4.0.0," проблема у вас есть. Я предполагаю, что она была установлена по ошибке?
Удалите эту версию, используя gem, удалите railties, а затем выберите опцию с 4.0.0.
Теперь команда "rails -v" вернет вашу ожидаемую версию "3.2.14"
Обязательно проверьте глобальный гемсет, сначала убедитесь, что вы находитесь в рубиновой версии, которую собираетесь использовать
$ruby -v
Затем переключитесь на глобальный гемсет (глобальный гемсет применим ко всем гемземам, поэтому не забудьте сохранить его чистым и универсальным... или глобальным, отсюда и название)
$rvm gemset use global
После этого проверьте список драгоценных камней для драгоценных камней, которые могут повлиять на него, как камень "railties", о котором говорит Харша, набрав
$gem list
Иногда глобальный гемсет может быть заполнен случайным драгоценным камнем, который затронет все другие гемзеты. Если вы обнаружите неуместную драгоценность, вы можете удалить ее просто с помощью
$gem uninstall examplegem
или для конкретной версии этого прохода gem в -v с версией в кавычках
$gem uninstall examplegem -v"3.2.1"
И прочитайте комментарий 7stud о создании и использовании RVM для изменения между различными gemset.
Вы можете добавить желаемую версию Rails:
$ gem install rails --version 3.2.14
А затем создайте приложение с этой версией:
$ rails _3.2.14_ new myapp
Наконец, вы можете проверить содержимое "Gemfile", чтобы подтвердить:
...
gem 'rails', '3.2.14'
...