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) |