60 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			60 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
|   | --- | |||
|  | title: Managing Ruby versions | |||
|  | localeTitle: إدارة إصدارات روبي | |||
|  | --- | |||
|  | ## تغير روبي بمرور الوقت
 | |||
|  | 
 | |||
|  | كانت روبي في تطور مستمر منذ 1990s ، ومثل العديد من اللغات ، كانت هناك تغييرات في بناء الجملة عبر الإصدارات ، لذا من المهم أن تكون واضحًا حول إصدار روبي الذي تتوقعه شفرتك. | |||
|  | 
 | |||
|  | ربما كان التغيير الأكثر وضوحا مع روبي 1.9. سابقا ، كتبنا يغسل مثل هذا: | |||
|  | 
 | |||
|  |  `  { :one => 1, :two => 2, :three => 3 }  | |||
|  | `  | |||
|  | 
 | |||
|  | هذا الاستخدام لمشغل 'hashrocket' ( `=>` ) كان شائعا جدا ، أن Ruby 1.9 قدم اختصارًا: | |||
|  | 
 | |||
|  |  `  { one: 1, two: 2, three: 3 }  | |||
|  | `  | |||
|  | 
 | |||
|  | تعمل هذه التعليمة البرمجية القديمة على أي إصدار ، ولكن سيتم تشغيل الجملة الأحدث فقط على روبي 1.9+. | |||
|  | 
 | |||
|  | ## كيف يسبب هذا المشاكل؟
 | |||
|  | 
 | |||
|  | على سبيل المثال ، قد تكون قررت استخدام Gem الذي يعتمد داخليًا عليه ميزات روبي 1.9 هذا يعني أن مشروعك الآن يعتمد أيضًا على روبي 1.9 الميزات. | |||
|  | 
 | |||
|  | إذا لم تحدد إصدار روبي الذي تحتاجه للمشروع ، فيمكن أن يكون الأمر كذلك مربكة عندما يعمل الكود على جهاز واحد ، ولكن ليس آخر. | |||
|  | 
 | |||
|  | كما هو الحال مع معظم اللغات ، يعتبر من الممارسات الجيدة تحديد إصدار روبي التي يتوقعها رمزك. هذا يجعل الأمر أسهل بكثير لإدارة متعددة مشاريع على جهاز التنمية الخاص بك ، كل توقع إصدار مختلف من روبي. | |||
|  | 
 | |||
|  | ## كيف يمكنني تحديد إصدار روبي؟
 | |||
|  | 
 | |||
|  | هناك نوعان من الأدوات التي تحظى بشعبية كبيرة ، لكن كلاهما وافق على ذلك مشاركة ملف مشترك. العديد من مشاريع Ruby (أو Rails) ستشمل بسيطة ملف `.ruby-version` ، الذي يحدد ببساطة رقم إصدار ، على _سبيل المثال_ : | |||
|  | 
 | |||
|  |  `2.4.2  | |||
|  | `  | |||
|  | 
 | |||
|  | الأدوات الشائعة لمساعدتك في إدارة إصدار روبي هي: | |||
|  | 
 | |||
|  | *   [روبي إصدار مدير (RVM)](https://rvm.io) | |||
|  | *   [rbenv](https://github.com/rbenv/rbenv) | |||
|  | 
 | |||
|  | دعونا ننظر في RVM. | |||
|  | 
 | |||
|  | ### باستخدام RVM
 | |||
|  | 
 | |||
|  | عادةً ما يتم تثبيت RVM ( [رابط](https://rvm.io) ) على Linux أو Unix أو MacOS الجهاز ، ومريحة للغاية لأنه خطاف في `cd` ( `c` hange `d` irectory) الأمر عند الانتقال إلى مشروع جديد ، تتم قراءة `.ruby-version` الخاص بك تلقائيا ، وأنت تحول تلقائيا إلى الإصدار الصحيح من روبي قبل البدء في العمل. | |||
|  | 
 | |||
|  | على سبيل المثال ، قد يكون لديك هذا التسلسل: | |||
|  | 
 | |||
|  |  `% 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) |