62 lines
3.8 KiB
Markdown
62 lines
3.8 KiB
Markdown
---
|
||
title: Managing Ruby versions
|
||
localeTitle: Управление версиями Ruby
|
||
---
|
||
## Ruby со временем изменилась
|
||
|
||
Ruby был в постоянном развитии с 1990-х годов и, как и многие языки, произошли синтаксические изменения в разных версиях, поэтому важно быть четкими о том, какую версию Ruby ожидает ваш код.
|
||
|
||
Вероятно, наиболее заметные изменения произошли с Ruby 1.9; ранее мы писали хэши:
|
||
|
||
```ruby
|
||
{ :one => 1, :two => 2, :three => 3 }
|
||
```
|
||
|
||
Это использование оператора «hashrocket» ( `=>` ) было настолько распространенным, что Ruby 1.9 при условии сокращения:
|
||
```
|
||
{ one: 1, two: 2, three: 3 }
|
||
```
|
||
|
||
Этот старый код запускается на любой версии, но новый синтаксис будет работать только на Ruby 1.9+.
|
||
|
||
## Как это вызывает проблемы?
|
||
|
||
Например, вы, возможно, решили использовать драгоценный камень, который Возможности Ruby 1.9; это означает, что ваш проект теперь также зависит от Ruby 1.9 функции.
|
||
|
||
Если вы не укажете, какую версию Ruby требуется вашему проекту, это может быть очень путают, когда код работает на одной машине, но не другой.
|
||
|
||
Как и в большинстве языков, считается хорошей практикой указывать версию Ruby, который ожидает ваш код. Это упрощает управление несколькими проектов на вашей машине разработки, каждый из которых ожидает другую версию Рубин.
|
||
|
||
## Как указать мою версию Ruby?
|
||
|
||
Есть несколько инструментов, которые популярны для этого, но оба согласились совместно использовать общий файл. Многие проекты Ruby (или Rails) будут включать в себя простой `.ruby-version` , который просто указывает номер версии, _например_ :
|
||
```
|
||
2.4.2
|
||
```
|
||
|
||
Популярные инструменты, которые помогут вам управлять вашей версией Ruby:
|
||
|
||
* [Менеджер версий Ruby (RVM)](https://rvm.io)
|
||
* [rbenv](https://github.com/rbenv/rbenv)
|
||
|
||
Давайте посмотрим на RVM.
|
||
|
||
### Использование RVM
|
||
|
||
RVM обычно устанавливается ( [ссылка](https://rvm.io) ) на Linux, Unix или MacOS машина, и очень удобна, поскольку она перехватывает в `cd` ( `c` hange `d` directory) поэтому, когда вы переходите к новому проекту, ваша `.ruby-version` читается автоматически, и вы автоматически переключаетесь на правильную версию Ruby прежде чем вы начнете работать.
|
||
|
||
Например, у вас может быть такая последовательность:
|
||
|
||
```shell
|
||
% cd ~/projects/older-project
|
||
% ruby --version
|
||
|
||
ruby 2.3.5p376 (2017-09-14 revision 59905) [x86_64-darwin16]
|
||
|
||
% cd ~/projects/newer-project
|
||
% ruby --version
|
||
|
||
ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-darwin16]
|
||
```
|
||
|
||
(Эти примеры взяты из машины MacOS) |