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