Окунувшись в Ruby примерно год назад, я столкнулся со многими проблемами и незнакомыми концепциями в экосистеме Ruby. Такие вещи, как тестирование, гемы, кто есть кто в сообществе, рейк, rdoc, веб-вещи, такие как Sinatra и Rails, были очень запутанными. Это был полезный опыт, но поиск включал много проб и ошибок. Эта статья надеется немного прояснить ситуацию и дать ясное и всестороннее представление о Ruby, его сообществе, его экосистеме и инструментах, которые используют Rubyists.
Идея Рубина
Ruby — это динамический язык программирования с открытым исходным кодом, ориентированный на простоту и производительность. У него элегантный синтаксис, который легко читать и легко писать. — ruby-lang.org
Ruby — это язык, который подчеркивает простоту. Он пытается устранить многословие и беспорядок. Rubyists, как правило, предпочитают лаконичный код, который четко и кратко выражает намерения.
Например:
5.times do puts "This is beautiful and readable" end
или:
puts "car".upcase
Вы можете прочитать это. Я бы поставил мою последнюю зарплату, чтобы вы могли прочитать и понять, что она делает. Нет беспорядка и ненужного жаргона. Там нет ненужных скобок или символов. Это просто, ясно и кратко.
Это неотъемлемая часть самой природы сообщества Ruby. Многословие и беспорядок отвратительны для Rubyists (хотя некоторые все еще не понимают это). Есть также общепринятые руководства по стилю. Сообщество разработало эстетику, настолько утонченную, что они обращают внимание не только на намерения и производительность, но даже на то, как код Ruby размещается на экране.
Для полного представления о идиоматическом Ruby и о том, как писать код на Ruby. Красноречивый Ruby от Russ Olsen — замечательная ссылка.
Первичные Люди
Давайте посмотрим на некоторых из основных членов сообщества Ruby.
Юкихиро Мацумото: создатель Ruby
Юкихиро «Мац» Мацумото создал Ruby в середине 1990-х годов. Он — человек, стоящий за большинством решений, которые делают Ruby тем, чем он является сегодня. Матц по-прежнему возглавляет разработку эталонной реализации языка, MRI (для Ruby Interpreter Матца).
Вы можете следить за ним в Твиттере на @yukihiro_matz .
Дэвид Хайнмайер Ханссон: создатель Ruby on Rails
David Heinemeier Hansson создал Ruby on Rails (самый популярный веб-фреймворк Ruby) из своей работы над Basecamp. Он выпустил фреймворк как открытый исходный код в июле 2004 года. Он решительный и очень громкий о своих взглядах. Идеи DHH (как он известен в сообществе) — большая часть того, что сделало Rails тем, чем оно является.
Вы можете следить за ним в Твиттере на @dhh .
Аарон Паттерсон: основной вкладчик Ruby и Rails
Днем Аарон Паттерсон — программист с умеренными манерами для Red Hat, чей код на Ruby выглядит почти так же хорошо, как и он. Ночью он надевает костюм Pink Warrior, который дает ему возможность участвовать во многих проектах с открытым исходным кодом, таких как nokogiri, Ruby и Rails. Если вы видели, как кто-то целует Маца или DHH на конференции, это, вероятно, он. — Ruby on Rails Core
Я, вероятно, не мог объяснить прохладную странность Аарона лучше, чем это.
Вы можете найти его в Твиттере на @tenderlove и его блоге на http://tenderlovemaking.com .
В сообществе Ruby есть еще много удивительных людей. Вы встретите их в пути. В качестве домашней работы прочитайте о Сэнди Мец, ее замечательных презентациях и ее удивительной книге .
Управление драгоценными камнями и зависимостями
Менеджеры зависимостей предоставляют простой способ управления библиотеками, которые вы используете. Большинство современных языков программирования имеют выделенных менеджеров зависимостей. Например, в PHP есть Composer, в Node.JS есть npm, а в Ruby есть RubyGems .
Библиотека Ruby называется gem
. Вы можете установить гем в вашей системе (если у вас установлен Ruby) с помощью:
sudo gem install <gemname>
( вам может не понадобиться sudo
)
Эта команда установит библиотеку в глобальную установку Ruby, но что делать, если вы хотите установить определенные гемы только для одного проекта. А вот и Бандлер .
Bundler предоставляет согласованную среду для проектов Ruby, отслеживая и устанавливая точные гемы и версии, которые требуются.
Чтобы использовать Bundler, создайте Gemfile
в корневом Gemfile
вашего проекта и перечислите нужные вам гемы ( bundle init
создаст файл для вас).
Вот пример Gemfile
:
source "https://rubygems.org" gem "rails" gem "nokogiri" gem "odyssey"
Чтобы установить все гемы в Gemfile, запустите:
bundle install
из каталога проекта.
Вы даже можете легко создавать драгоценные камни с помощью упаковщика. Чтобы узнать больше, ознакомьтесь с RubyGems
тестирование
В отличие от многих других языков, сообщество Ruby уделяет большое внимание тестированию. Автоматические тесты позволяют вам запускать одну команду и знать, знать , что все в вашем приложении работает. Тесты улучшают ваш дизайн и дают вам простую проверку «все работает». Если вы не знаете, как писать тесты на Ruby, ознакомьтесь с этой презентацией SitePoint .
Если вы хотите стать компетентным разработчиком Ruby и выпустить свой код для всего мира, вам придется писать тесты. Поверьте, тестирование сделает вашу жизнь и жизнь ваших коллег намного лучше.
Рельсы, Синатра и Сеть
Если вы не заметили, Ruby — это язык программирования общего назначения, а не просто язык сценариев, такой как PHP. Таким образом, Ruby можно использовать практически для чего угодно. Но одно из самых популярных применений Ruby — это веб-разработка, отчасти потому, что Ruby On Rails
делает это невероятно простым.
Rails — это полнофункциональная платформа для веб-приложений. Это поощряет соглашение по конфигурации, что означает, что оно обеспечивает архитектуру и ожидает, что определенные вещи будут определенным образом. С этим соглашением приходит много власти. Благодаря феноменальному лидерству и ясному видению Rails является одной из самых популярных в мире сред веб-приложений.
Но что, если вам не нужен гигантский фреймворк с полным стеком? В случаях, когда вы просто хотите создать несколько маршрутов или когда вам не нужна мощность, которую предоставляет Rails, используйте Sinatra.
Sinatra — это микро-фреймворк, который дает вам большую гибкость, но не все возможности и соглашения, которые идут с Rails.
Есть много других веб-фреймворков Ruby, таких как Volt, Padrino и Lotus, которые набирают обороты, но Rails и Sinatra должны быть в вашем наборе инструментов.
Автоматизация с граблями
Есть много вещей, которые вы должны делать снова и снова при написании программного обеспечения, например:
- Очистка вашего Gemfile
- Инициализация Git-репозитория
- Настройка драгоценных камней для ваших наборов инструментов, таких как Bootstrap
С помощью Rake вы можете создать задачу под названием
Фреймворки, такие как Rails, предоставляют Rake-файлы по умолчанию, которые автоматизируют многие задачи, связанные с веб-разработкой. Например, в проекте Rails вы можете запустить:
rake routes
просмотреть все объявленные маршруты в вашем приложении Rails или
rake db:migrate
перенесет (создаст ваши таблицы и другие объекты базы данных) вашу базу данных.
Чтобы узнать больше о Rake, ознакомьтесь с Rake: автоматизировать все в SitePoint.
Завершение дела
Я надеюсь, что вы теперь более знакомы с сообществом и экосистемой Ruby. Это должно дать вам представление о мире Ruby. До сих пор вы просто бродили в море. Теперь, когда вы знаете, что вода приглашает, погрузитесь.