# Как установить Rails

Для работы с различными версиями Ruby необходимо использовать [RVM](http://beginrescueend.com/ "RVM: Ruby Version Manager - RVM Ruby Version Manager"): Ruby Version Manager.

Устанавливаем его:

```shell
$ bash -s stable < <(curl -s https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer)
```

Во время установки в файл `.profile` прописывается строка для использования данного менеджера версий, но если используется zsh, то необходимо самостоятельно вставить следующую строку себе в файл `~/.zshrc`:

```zsh
[[ -s "/Users/juev/.rvm/scripts/rvm" ]] && source "/Users/juev/.rvm/scripts/rvm"
```

После перезапуска терминала, можно начинать работать. Для начала установим требуемую версию Ruby:

```shell
$ rvm install 1.9.3
```

Для переключения версий Ruby используется следующий синтаксис:

```shell
$ rvm use system # для использования версии, установленной в системе
$ rvm use 1.9.3 # для использования установленной версии
```

Для того, чтобы указать, что конкретная версия Ruby используется по умолчанию, достаточно указать ключ `--default`:

```shell
$ rvm use system --default
```

Кстати, можно опускать ключевое слова `use` и писать просто номер версии, к примеру:

```shell
$ rvm 1.9.3
```

Посмотреть, какие версии доступны в данный момент в системе и какие из них используются по умолчанию, можно с помощью команды:

```shell
$ rvm list

rvm rubies

   ruby-1.8.7-p352 [ i686 ]
=* ruby-1.8.7-p357 [ i686 ]
   ruby-1.9.3-p0 [ x86_64 ]

# => - current
# =* - current && default
#  * - default
```

В показанном выше примере по умолчанию используется версия 1.8.7, что была установлена с помощью rvm и она же в данный момент времени является активной.

Итак, теперь переходим к составлению списка gem, что будут использоваться при работе. RVM позволяет не только управлять версиями Ruby, установленными в системе, но и использовать различные наборы гемов. После установки очередной версии Ruby создается соответствующий пустой набор.

Для того, чтобы импортировать системный набор гемов, достаточно использовать команду:

```shell
$ rvm system ; rvm gemset export system.gems ; rvm 1.8.7 ; rvm gemset import system
```

Или же воспользоваться возможностью переключения наборов:

```shell
$ rvm gemdir system
```

Вместо system можно использовать указание на определенные версии Ruby, что были установлены с помощью RVM. Так же можно создавать свои собственные наборы, используя команду:

```shell
$ rvm gemset create myproject
```

После чего для использования данного набора нужно после версии указывать и имя используемого набора гемов:

```shell
$ rvm 1.9.3@myproject
```

Теперь, когда мы создали набор с именем `myproject`, наполним его, установив рельсы:

```shell
$ gem install rails devise haml rails-haml
```

Данные пакеты будут установлены только в набор `myproject`, поэтому при переключении в системную версию руби, если там рельсы не были установлены, то мы теряем возможность с ними работать. Для того, чтоб не запоминать, какую версию Ruby мы использовали в проекте и какое имя мы дали нашему gemset, достаточно в директории проекта создать файл `.rvmrc`, в которой указываем строку переключения версии:

```shell
rvm 1.9.3@myproject
```

Теперь при переходе в директорию проекта у нас автоматически будет осуществляется переход на требуемую версию руби и выбор нужного набора пакетов. А при выходе из этой директории, будет осуществляться переход на использование версии руби, установленной по умолчанию.

Таким образом мы ничего не меняем в системе, так как вся установка RVM и всех версий руби осуществляется в домашнюю папку пользователя. При этом мы получаем возможность использовать различные версии руби в отдельных проектах. И при этом получаем незахламленные наборы пакетов руби, которые можно достаточно быстро переключать между собой и использовать их в случае необходимости.

