روبی (Ruby)
روبی Ruby
زبان برنامه نویسی قدرتمند و پویایی است که از سال ۱۹۹۰ میلادی با ورود سبک جدیدی از زبان های برنامه نویسی شی گرا دنیای نرم افزاری را به خود خیره کرد. این زبان با الهام گرفتن از سینتکس زبان های پرل ، لیسپ ،پایتون و اسمالتاک توانسته سبکی را ارائه دهد که برای دوستکاران برنامه نویسی بی دردسر و شیرین باشد. شاید به جرات این زبان در شی گرایی بی همتاست و سبک مورد استفاده از آن به مراتب شیرین تر و ساده تر از رقبایش Python , C++ , Java
است.
روبی را یوکیهیرو ماتسوموتو (Yukihiro Matsumoto
یا به اختصار Matz) ژاپونی به گونه ای ارائه داشته که پارادایمهای گوناگون برنامهنویسی مانند برنامهنویسی تابعی، شیء گرا و بازتابی را پشتیبانی کند . این گستردگی در روبی همراه با قابلیت هایی چون متغیرهای پویا و مدیریت حافظه خودکار همراه شد و توانست خیلی از برنامه نویسان را به خود شیفته کند.
Matz
دربارهٔ انگیزهاش برای ساخت روبی گفته :
در جستجوی زبانی بودم که از پایتون شیءگراتر و از پِرل قدرتمندتر باشد. برای همین تصمیم گرفتم خودم آن را بسازم . او در کنفراسی در باره روبی این چنین سخن گفته: روبی برای افزایش توان تولید و تفریح برنامهنویسان طراحی شده است و از اصل رابط کاربری خوب پیروی میکند. او تأکید میکند که طراحی سامانهها باید بیشتر روی نیاز انسانها متمرکز باشد تا رایانهها. اغلب مردم، به ویژه برنامهنویسان، روی ماشینها تمرکز میکنند. آنها فکر میکنند 'با انجام این کار ماشینها سریعتر میشوند، ماشینها در اجرا موثرتر میباشند و ...' آنها بر ماشین تمرکز میکنند، اما در حقیقت ما نیاز داریم که به انسانها توجه کنیم، اینکه چگونه آنها به برنامهنویسی توجه دارند و یا چگونه به اجرای برنامههای ماشین دقت میکنند.روبی برای تعقیب هدف کمترین غافلگیری بیان شدبه این معنی که زبان باید طوری رفتار کند که کمترین گیجکنندگی را برای استفادهکنندههای آن داشته باشد. ماتسوموتو همچنین اظهار میدارد که هدف اولین طراحی او درست کردن زبانی که خودش از آن لذت ببرد بود. این کار با کم کردن کار برنامهنویس و ابهامات منطقی میباشد. اما کمترین غافلگیری هنوز خیلی به بیان زبان برنامهنویسی روبی نزدیک است. افراد ناشی شاید این را به این معنا تعبیر کنند که رفتارهای روبی سعی در متصل کردن اشتراکات رفتارهای دیگر زبانها را دارد. در بحث ماه می ۲۰۰۵ در روزنامه 'کامپ. لنگ. روبی' ماکسوموتو تلاش کرد که روبی را از مینیمم غافلگیری دور کند. توضیح اینکه هر شانس طراحی بعضیها را متعجب میکند. او از استاندارد خود برای ارزیابی غافلگیری استفاده کرد. ماتسوموتو این را در یک گزارش مطرح ساخت. 'همه یک پیشینه شخصی دارند، بعضیها از جانب پایتون میآیند بعضیهای دیگه از پرل و آنها ممکن است از بعضی از جنبههای متفاوت زبان غافلگیر شوند. سپس آنها به من میگویند ما از بعضی از جنبههای زبان غافلگیر شدیم، بنابرین روبی قانون کمترین غافلگیری را زیر پا گذاشته است. صبر کنید... هدف کمترین غافلگیری فقط برای شما نیست. این هدف به معنای کمترین غافلگیری ممکن برای بیان من میباشد. این به معنای کمترین غافلگیری بعد از آموزش کامل زبان است. برای مثال من قبل از اینکه روبی را طراحی کنم یک برنامهنویس سیپلاسپلاس بودم. من منحصراً دو، سه سال در سیپلاسپلاس برنامه نوشتم و بعد از دو سال برنامهنویسی با آن، هنوز مرا متعجب میکرد.
شاید سخنان Matz راجب روبی شما را کمی شگفت زده و روشن کند اما می خواهم مقداری از امکانات روبی را برایتان نام ببرم.
- کاملاً شی گرا
- داینامیک
- نحو کوتاه و انعطافپذیر
- چهار سطح از حوزه دید متغیر شامل:
global, class ,instance ,local
- مدیریت استثناء
- پشتیبانی از
iterators و closures
(بر اساس تبادل بلوکهای کد) - پشتیبانی محلی از
regular expressions
(شبیه پرل) در سطح زبان - سربارگزاری عملگرها
- جمعآوری زباله خودکار
- قابلیت حمل بالا
- در همه سیستمعامل ها قابل پیادهسازی است
- پردازش استثناء
- سربار اپراتور
- پشتیبانی شراکتی از
multi-threading
در تمام پلتفرمهای با استفاده ازgreen threads
- پشتیبانی کامل از یونیکد و رمزنگاریهای شخصیت چند گانه (از نسخه ۱٫۹)
- کتابخانههای اشتراکی/DLL در اکثر پلتفرمها
introspection
,reflection
وmeta-programming
- اتصال بومی API ها در C
- پوسته تعاملی روبی
REPL
- بسته مدیریت متمرکز از طریق
RubyGems
- کتابخانه استاندارد بزرگ
- پشتیبانی از تزریق نیازمندی
continuations و generators
چگونه روبی را نصب کنیم ؟
نصب روبی در تمامی سیستم عامل ها ساده و آسان است اما همان گونه که عرض کردیم ، فرض را بر این میگیریم که شما هیچگونه آشنایی با مباحث ندارید . اما اگر به لازم نمی دانید نصب روبی را از ما فرا بگیرید می توانید از روی این قسمت بگذرید .
به هر حال ما قصد داریم نحوه نصب روبی در سیستم عامل های Unix Like
و MS Windows
را به شما آموزش دهیم.
نصب بر روی سیستم عامل های Unix Like
غالباً نسخه ای پایدار بر روی تمامی سیستم عامل ها به شکل پیشفرض وجود دارد ، اما به شکل کلی برای نصب روبی از سه روش استفاده می شود.
- نصب از طریق منابع نرم افزای سیستم عامل ها (Repository)
- منابع مستقل ( Rbenv و RVM )
- نصب از طریق فایل قابل نصب
هر سه روش روبی را به شکل کامل نصب خواهند کرد اما تفاوت آن ها بر روی چگونگی نصب و ورژن مورد استفاده از روبی است . برای مثال همین امروز نسخه 2.0.0
از روبی روی ریپازیتوری مک موجود بود اما آخرین نسخه پایدار روبی برای نصب ، نسخه 2.3.0
است و باید توجه داشته باشید نسخه نصب شده مورد نیاز شما است یا خیر .
برای نصب روبی بر روی این سیستم عامل ها لازم است دستور یا دستوراتی را روی Shell
یا Terminal
آن ها وارد کنید که در ادامه طریقه نصب روبی بر روی بسیاری از آن ها را عرض خواهم کرد .
نصب روبی توسط منابع نرم افزای سیستم عامل ها (OS Repository)
- نصب روبی بر روی Mac-OS X
brew install ruby
نسخه ای که نصب شد 2.0.0 بود.
- نصب روبی بر روی
Debian
وUbuntu
sudo apt-get install ruby-full
نسخه ای که برای من نصب شد 1.9.3 بود.
- نصب روبی بر روی
Arch Linux
وManjaro
sudo pacman -S ruby
نسخه ای که برای من نصب شد 1.9.3 بود.
- نصب روبی بر روی
Fedora
وCentOS
sudo yum install ruby
نسخه نصب شده عموماً نسخه ای به روز از روبی خواهد بود اما نسخه نصب شده برای من نسخه ی 2.2.3 بود.
- نصب روبی بر روی
Solaris
pkg install runtime/ruby-18
نسخه نصب شده برای من نسخه قدیمی 1.8.7 بود.
- نصب روبی توسط منابع مستقل (
Rbenv
وRVM
)
همان گونه که مشاهده فرمودین اکثر توزیع ها بر روی ریپازیتوری خود نسخه ای قدیمی یا آخربن نسخه پایدار روبی را بر روی ریپازیتوریشان داشتند .
اما شاید ما بخواهیم برای پروژه های مختلف مان از نسخه ای خاص یا به روز استفاده کنیم .
یعنی اگر پروژه ای دارید که با نسخه 1.8.7
نوشته اید اما نسخه سیستم شما بالا تر است و امکان بازگشت ندارید یا اینکه کلا می خواهید از نسخه ای به روز یا حتی بتا و بالا تر از نسخه ریپازیتوری بهره مند شوید ، باید از منابع مستقل (RVM
یا Rbenv
) استفاده کنید.
- نصب روبی از طریق Rbenv (پیشنهاد ما)
Rbenv
یکی از منابع مستقل برای ارائه نسخه های مختلف روبی است که میتوان با استفاده از Command line
، نسخه هایی مختلف از روبی را بر روی سیستم نصب کرد و به شکل مستقل از آن ها استفاده کرد.
برای نصب روبی از طریق Rbenv
ابتدا باید روبی موجود روی سیستم خود را پاک کنید.
همچنین از وجود GIT بر روی سیستم خود مطمئن شوید و سپس مراحل زیر را به ترتیب انجام دهید:
- دانلود و نصب
Rbenv
در دایرکتری به نام.rbenv
git clone https://github.com/rbenv/rbenv.git ~/.rbenv
cd ~/.rbenv && src/configure && make -C src
- ست کردن Rbenv بر روی Bash
echo 'export PATH='$HOME/.rbenv/bin:$PATH'' >> ~/.bash_profileecho 'export PATH='$HOME/.rbenv/bin:$PATH'' >> ~/.bashrc
- ست کردن
Rbenv
بر رویZSH
echo 'export PATH='$HOME/.rbenv/bin:$PATH'' >> ~/.bash_profileecho 'export PATH='$HOME/.rbenv/bin:$PATH'' >> ~/.zshrc
- برای راه اندازی Rbenv از دستور زیر استفاده کنید
~/.rbenv/bin/rbenv init
شل را بسته و دباره باز کنید و برای اطمینان از صحت فرایند نصب از دستور زیر استفاده کنید
type rbenv
- برای استفاده از روبی و امکان دانلود ورژه های آن از دستور زیر استفاده کنید
git clone https://github.com/rbenv/ruby-build.git ~/.rbenv/plugins/ruby-build
- یک بار شل را بسته و دباره باز کنید
اینک شما می توانید نسخه های مختلف از Ruby
را نصب کند.
برای مشاهده لیست نسخه های موجود در Rbenv
از دستور زیر استفاده می کنند.
rbenv install -l
- برای نصب نسخه های مورد نیاز از دستوراتی شبیه به دستورات زیر باید استفاده کرد.
rbenv install 2.4.0-devrbenv install 1.8.7-p352
- برای اطلاع از نسخه های نصب شده از دستور زیر استفاده می کنند.
rbenv versions
- برای استفاده از نسخه ای به صورت عمومی از دستوری شبیه دستور زیر استفاده کنید.
rbenv global 2.4.0-dev
- برای استفاده از روبی بر روی پروژه ای خاص به شکل محلی از دستوری شبیه به دستور زیر را استفاده می کنند.
rbenv local 1.8.7-p352
- برای خارج کردن شدن از حالت محلی از دستور زیر باید استفاده کرد .
rbenv local --unset
بی شک Rbenv
قوی ترین منبع مستقل برای نصب روبی می باشد. گفتنی ها را عرض کردم اما برای اطلاع بیشتر از نهوه نصب یا کارکرد Rbenv
به سایت رسمی rbenv
سر بزنید.
نصب روبی از طریق RVM
RVM
یک ابزار برای نصب روبی از طریف Command Like
است که با استفاده از دستوراتش میتواند محیطی برای استفاده از روبی را فراهم آورد .(قبل هر چیز از نصب بودن ابزار های curl
و gpg
در سیستم خود مطمئن باشید).
- برای نصب نسخه ی پایدار
RVM
میتوان دستور زیر را اعمال کرد:
gpg --keyserver hkp://keys.gnupg.net --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3\curl -sSL https://get.rvm.io | bash -s stable
- برای نصب نسخه ی دولپمنت و ناپایدار RVM میتوان دستور زیر را اعمال کرد:
curl -sSL https://get.rvm.io | bash
- برای نصب ورژنی خاص از
RVM
از دستوری شبیه دستور زیر را وارد کنید:
curl -sSL https://get.rvm.io | bash -s -- --version latest\curl -sSL https://get.rvm.io | bash -s -- --branch [owner/][repo]
- برای اشکال زدایی
RVM
از دستور زیر استفاده می کنند:
curl -sSL https://get.rvm.io | bash -s -- --trace
curl -sSL https://get.rvm.io | bash -s -- --ignore-dotfilesecho 'source $HOME/.rvm/scripts/rvm' >> ~/.bash_profile
- برای قرار دادن
RVM
بر روی یوزری خاص از دستوری شبیه دستور زیر استفاده کنید:
rvm user gemsets
- ترمینال را بسته و دوباره باز کنید و دستور زیر را جهت راه اندازی اولیه
RVM
تایپ کنید
source ~/.rvm/scripts/rvm
برای فهمیدن صحت فرایند نصب از دستور زیر استفاده کنید (در خوجی باید شاهد پیغامی شبیه به این باشید «rvm is a function»
تا از صحت نصب آن مطمئن شوید).
type rvm | head -n 1
- برای قهمیدن از ورژن های روبی موجود در
RVM
از دستور زیر استفاده می کنیم:
rvm list known
- برای نصب نسخه مورد نظرمان و استفاده از آن به شکل محلی باید دستوراتی شبیه دستورات زیر را وارد می کنیم:
rvm install 2.2.2
rvm use 2.2.2
- برای استفاده از همان ورژن به صورت پیشفرض از دستور زیر استفاده کنید:
rvm use 2.2.2 --default
- برای قهمیدن از نسخه روبی پیشفرض شده از دستور زیر استفاده می کنیم:
ruby -v
- روش نصب
RVM
را عرض کردم اما برای اطلاع از فرایند نصب آن به سایتrvm
مراجعه کنید تا متوجه تنزیمات دیگر آن شوید .
نصب روبی از طریق فایل قابل نصب
یکی دیگر از راه های دیگر جهت نصب روبی استفاده از فایل قابل نصب است . به گونه ای که شما ابتدا فایل را از بخش دانلود در سایت رسمی روبی www.ruby-lang.org دانلود می کنید و پس از unzip
کردن آن مراحل زیر را انجام می دهید.
- پس از
unzip
کردن فایل،Terminal
را باز کنید و به دایرکتوریunzip
شده بروید.(بر فرض مثال دایرکتوری ما به اسمruby-1.9.0
است که در دایرکتوریDownload
قرار گرفته)
cd ~/Download/ruby-1.9.0
- پس از رفتن به دایرکتوری مورد نظر دستورات زیر را به ترتیب جهت نصب وارد
Terminal
کنید:
./configure
make
sudo make install
- یک بار Terminal را بسته و دوباره باز کنید و سپس دستور زیر را برای مطلع شدن از صحت نصب روبی وارد کنید:
ruby -v
نصب بر روی ویندوز
نصب روبی در Windows
بسیار ساده است . به گونه ای که با نصب فقط یک فایل بر روی سیستمتان امکان پذیر است . فایل نصبی روبی در ویندوز را rubyinstaller
می گویند که بسیار ساده و قابل فهم Ruby را نصب می کند.
برای تهیه فایل قابل نصب روبی باید به بخش Download
, موجود سایت rubyinstaller
بروید و نسخه مورد استفاده خود را نصب کنید.
روبی آن ریلز Ruby on Rails
به فریم ورک یا چارچوب نرمافزاری تحت وبی گفته می شود که توسط فردی به اسم دیوید هاینمیر هانسن در۱۳ دسامبر ۲۰۰۵ که برگرفته از پروژهٔ بیسکمپ ( یک ابزار مدیریت پروژه توسط شرکت 37Signals
حالا تبدیل به یک شرکت تولید نرمافزارهای وب شده است) بودخلق شد . این فریم ورک با زبان روبی و متن باز توسعه داده شده. هدف از خلق ریلز ایجاد یک چارچوب نرمافزاری تحت وب است که از روش توسعه سریع ، برنامهنویسان وب را کمک می کند تا نرم افزار تحت وب خود را هر چه سریعتر توسعه دهند
این پروژه آن قدر اعتبار یافته که شرکت اپل از سال ۲۰۰۷ اعلام کرد روبی آن ریلز به عنوان یک چارچوب پیشفرض در سیستمعامل Mac OSX
نسخهٔ ۱۰.۵ قرار خواهد گرفت.
ریلز مانند دیگر چارچوبهای وب، ریلز هم از معماری مدل-نما-کنترلگربرای سازماندهی برنامهنویسی نرمافزار، استفاده میکند.
روبی آن ریلز شامل ابزاری است که کارهای تکراری و مشترک توسعهٔ نرمافزار را بسیار ساده میکند.
ابزاری مانند داربست، تعدادی از مدلها و نماها را به صورت خودکار که برای هر وبسایت نیاز است را میسازد. همچنین شامل یک وب سرور ساده WEBRick
و یک ابزار ساخت سیستم Rake
است. ریلز و این ابزار، با یکدیگر یک محیط توسعهٔ پایهای را فراهم میکنند.
برنامههای روبی آن ریلز برای اجرا شدن نیاز به یک وب سرور دارند. در هنگام نوشتن این مطلب Mongrel
، بر WEBRick
ترجیح داده میشود اما شما میتوانید از وب سرورهای دیگری مانند لایتی, Abyss
, آپاچی و خیلی دیگر از وب سرورها استفاده کنید. از سال ۲۰۰۸ به بعد، وب سرور پسنجر (به انگلیسی: Passenger
) از لحاظ استفاده شدن جای وب سرور Mongrel
را گرفت. به تازگی، وب سرور Unicorn
محبوبیت خوبی برای انتشار (به انگلیسی: Deployment
) پیدا کرده است. یکی از ویژگیهای باارزش ریلز استفاده از کتابخانههای بزرگ جاوااسکریپت Prototype
و script.aculo.us برای آژاکس است. در ابتدا ریلز از پروتکل دسترسی آسان به اشیاء برای دسترسی به خدمات وب استفاده میکرد، اما بعد آن جایگزین خدمات وب RESTful
شد. از نسخه ۲٫۰، روبی آن ریلز به صورت پیشفرض خروجیهای HTML
و XML
را ارائه میدهد. دومی، ابزاری برای خدمات وب RESTful
است.
فلسفه ریلز
روبی آن ریلز بر مفهوم قرارداد بهجای تنظیمات و اصل توسعه سریع خودت را تکرار نکن تاکید بسیاری دارد. 'قرارداد بهجای تنظیمات' یعنی توسعهدهندگان فقط نیاز دارند که قسمتهای نامتعارف برنامهٔ خود را مشخص کنند. به عنوان مثال اگر کلاسی به نام Sale
در مدل داشتیم، جدول متناظر آن در پایگاهدادهها به صورت پیشفرض sales نام دارد. اما شما میتوانید از قراردادها استفاده نکنید، به عنوان مثال میتوانید جدولی به نام products sold
داشته باشید، اما توسعهدهندگان مجبورند که کدهای برنامهٔ خود را برای این جدول بنویسند. در حالت کلی قراردادها برای کمتر کد نوشتن و مدیریت برنامه است. «خودت را تکرار نکن» یعنی تمام اطلاعات شما در یکجای مشخص قرار دارند. به عنوان مثال، با استفاده از ماژول اکتیو رکورد در ریلز، برنامهنویس دیگر نیازی به تعریف کردن نامهای ستونهای پایگاهداده در تعریف کلاس را ندارد. اما روبی آن ریلز میتواند با استفاده از نام کلاس، اطلاعات را از پایگاهداده استخراج کند.
چگونه روبی آن ریلز را نصب کنیم؟
نصب روبی آن ریز خیلی آسان است و شما فقط می بایست موارد زیر را رعایت بفرمایید:
مطمئن شوید که روبی بر روی سیستم عاملتان نصب است(ترجیحاً ورژن بالای ۲.۲.۲).
از نصب بودن SQLite3
بر روی سیستم خود اتمینان حاصل نمایید
باید به اینترنت دسترسی داشته باشید.
پس از اتمینان از موارد بالا ، دستور زیر را برای نصب ریلز وارد Command Line
خود کنید .
gem install rails
یک بار کامند لاین خود را بسته و باز کنید تا کامند لابن دستورات ریلز را در نظر بگیرد برای اینکه بدانیم ریلز نصب شده یا نه ، می بایست دستور زیر را وارد کامند لاین کنیم:
rails -v
اگر مشاهده کردید که خطایی به شما می دهد ، ممکن است به علت تحریم ها یا فیلترینگ ایران نصب نشده باشد . به هر حال در زمان نصب ریلز و تمام GEM
ها در روبی از پراکسی یا آنتی فیلتر استفاده نمایید.