منبع اصلی نوشتار زیر در این لینک قرار دارد

مدیریت جم های مورد نیاز با Bundler

معمولا وقتی نیاز باشد از جم های متنوعی در یک برنامه روبی استفاده کنیم، آنها را به این شکل در کد خود فراخوانی میکنیم :

require 'sinatra'
require 'highline/import'
require 'json/ext'

 

و در فایل راهنما، به کاربر برنامه می گوییم تا جم مورد نیاز را توسط دستور gem نصب نماید. اما، چرا جم ها را مستقل از کل سیستم روبی نصب نکنیم؟ تا فقط در دایرکتوری برنامه خودمان معتبر باشند، و کاربر دستورات کمتری را برای نصب جم های مورد نیاز وارد کند. برای این کار، از bundler استفاده میکنیم. (توجه کنید که هم دستور bundle و هم دستور bundler در واقع یکی هستند). برای این که از Bundle استفاده کنیم، نیاز داریم تا یک فایل به اسم Gemfile ایجاد کنیم. سپس درون جم فایل، باید این اطلاعات را وارد نماییم :

  1. سروری که جم ها روی آن قرار دارند
  2. نام جم ها
  3. نسخه مورد نظر جم های مورد نیاز

برای تعریف سرور، کافیست به این شکل عمل کنیم :

source 'https://rubygems.org'

 

به این شکل، Bundler میفهمد که ما از وبسایت rubygems بعنوان منبع جم ها باید استفاده کند. اکنون نیاز است تا جم های مورد نیاز را به Gemfile خود بدهیم. با فرض این که جم های سیناترا را نیاز داریم، در جم فایل چنین مینویسیم :

gem 'sinatra'
gem 'sinatra-assetpack'
gem 'tilt'
gem 'mongo'

 

خب، اکنون با اجرای دستور :

bundle install

جمهای مورد نیاز، در دایرکتوری برنامه ما نصب می شوند. اما هنوز یک مشکل داریم، برای مثال sinatra-assetpack ، با نسخه های ۲ به بعد tilt مشکل دارد، پس با این حساب باید نسخه این جم را پایین آوریم، پس در جم فایل این چنین تغییر ایجاد میکنیم :

gem 'sinatra'
gem 'sinatra-assetpack'
gem 'tilt', '1.4.1'
gem 'mongo'

با این کار، Bundler میفهمد که نسخه ۱.۴.۱ از جم tilt را باید نصب کند. اما اگر ندانید آخرین نسخه پایدار tilt چیست چطور؟  باید به شکل زیر عمل کنید :

gem 'sinatra'
gem 'sinatra-assetpack'
gem 'tilt', '< 2.0'
gem 'mongo'

به این شکل، bundler آخرین نسخه پایدار قبل از ۲.۰ را برای ما نصب میکند. در نهایت، جم فایل ما به این شکل در می آید :

source 'https://rubygems.org'
 
gem 'sinatra'
gem 'sinatra-assetpack'
gem 'tilt', '<2.0'
gem 'mongo'

برای اطلاعات بیشتر در مورد جم فایل، میتوانید از این پیوند استفاده کنید.



برچسب ها : , ,