Наша совместная команда Banwar.org

Связаться с нами

  • (097) ?601-88-87
    (067) ?493-44-27
    (096) ?830-00-01

Статьи

Як почати писати на Ruby on Rails: настройка оточення, поради по коду і корисні геми

  1. Ruby і Rails
  2. Налаштування оточення
  3. Установка Ruby Gems в проект
  4. Корисні Ruby Gems
  5. Рекомендації до написання коду
  6. Разом

Комп'ютерне програмування - це те, що можна вивчити тільки шляхом практики. Щоб добре і швидко вивчити мову програмування, необхідно використовувати його якомога частіше. Раз ви читаєте цю статтю, то ви вже для себе вирішили, що вивчення програмування - це корисна для вас інвестиція в майбутнє. Я спробую допомогти вам почати працювати з Ruby, використовуючи фреймворк Rails.

Ruby і Rails

Rails настільки тісно пов'язаний з самим Ruby, що часом важко відрізнити одне від іншого Rails настільки тісно пов'язаний з самим Ruby, що часом важко відрізнити одне від іншого. Але різниця велика: Ruby - це мова програмування, в той час як Rails - всього лише фреймворк, написаний для Ruby. Часто через зрівнювання цих речей відбуваються конфлікти, особливо часті випадки, коли розробників, що спеціалізуються на розробці на Ruby, Ханти, як розробників спеціалізуються на Ruby on Rails. Важливо розуміти, що Ruby - це не Rails. Документація Ruby доповнюється документацій Rails.

Фреймворк Rails вніс величезний вклад в розвиток мови Ruby, і саме останнім часом, разом з появою Rails, інтерес до Ruby став стрімко зростати. Так що, якщо у вас є бажання навчитися створювати різні web-програми, але не тільки на Rails, то можна одночасно вивчати і Ruby, і Rails.

На просторах інтернету існують тисячі статей, в яких описано створення RoR блогу за 15 хвилин (зізнаюся чесно: коли я починав, укластися в 15 хвилин жодного разу не виходило). Ви можете використовувати будь-який гайд, який вам сподобається. У своїй статті я приведу деякі спостереження, рекомендації і список основних гемов (або gems - так в рубай називаються бібліотеки), які бажано мати в своєму пет-проект і якими потрібно вміти користуватися, якщо ви плануєте працювати на RoR.

Для початку, хочу поділитися двома джерелами, які я застосовую в роботі:

Налаштування оточення

Насамперед потрібно налаштувати оточення. Кращими операційними системами будуть Linux (наприклад, Ubuntu) і Mac OS. Ситуація з Windows на даний момент не краща, і я б не рекомендував витрачати свій час і нерви, хоча в майбутньому все може змінитися. Нещодавно компанія Microsoft випустила оновлення для Windows 10, яке дозволяє встановити «Bash on Ubuntu on Windows Linux Subsystem». Але навіть саме формулювання звучить моторошно, і поки що все працює нестабільно, так що залишається сподіватися і чекати.

Хороший ресурс для настройки оточення - Go Rails . Тут описані налаштування для Ubuntu, Mac OS і для Windows. Ресурс в цілому корисний і гідний місця в скарбничці корисних посилань RoR-розробника.

Цікаве спостереження. Перші кілька разів настройки оточення рідко закінчуються успіхом, може знадобитися не одна спроба. У той же час всі ті помилки, які ви зробите на початку необхідні, щоб ніколи більше до них не повертатися. Найчастіше ці помилки відбуваються через пропуску одного з пунктів. Також, якщо ви використовуєте RVM, раджу використовувати файли .ruby-version і .ruby-gemset. Після встановлення, ви зможете створювати нові Rails-додатки і запускати сервер.

Корисна інформація. За замовчуванням rails сервер використовує 3000-й порт. Може виникнути ситуація, коли немає можливості натиснути Ctrl + C для зупинки сервера. На допомогу прийде відповідь з ресурсу Stack Overflow .

Установка Ruby Gems в проект

Нижче я приведу список гемов, вміння працювати з якими обов'язково для RoR-розробника будь-якого рівня. Вони дозволять створити своє перше додаток, що володіє достатнім функціоналом для того, щоб можна було задовольнити до 80% вимог замовників.

Для установки Ruby Gems (або гемов) в Rails-проект вам знадобиться утиліта Bundler . Вона управляє версіями гемов і їх залежностями. Список гемов, які застосовуються в проекті, перебуває у файлі gemfile.

Корисні Ruby Gems

Gem Devise - відмінний гем для створення аутентифікації в вашому додатку. Після установки і деяких махінацій у вас з'явиться можливість реєструватися в системі, логінитися і т. Д.

Gem PaperClip - гем для завантаження файлів і картинок. У користувачів, які зареєструвалися через гем Devise, повинна бути можливість додати аватарки.

Gem Kaminari - дозволить додати пагінацію в додаток, що дуже корисно. Погодьтеся, що одночасне завантаження тисяч коментарів під статтею зробить бігунок скролла тонкою смужкою, а пошук потрібного коментаря - скрутній завданням.

Gem twitter-bootstrap-rails - підключає інструментарій, розроблений компанією Twitter. Включає в себе різні стилі і верстку, застосування яких зробить ваше додаток більш приємним оку.

Gem jquery-rails - JavaScript - це добре, але роботодавці вимагають знання фреймворків, наприклад, jQuery. Використання його спростить роботу з JavaScript і дозволить зробити додаток більш динамічним.

Gem cancancan - керує правами доступу до різних ресурсів на сайті, замість того, щоб писати перевірки в кожному методі. Логіка, яка контролює доступ, виноситься в окремий файл.

Gems byebug ' / 'Pry-rails - геми для налагодження і дебаггінга. Дозволяють створювати брейкпоінт в додатку, додаючи в виклик методу, де це необхідно.

Gem rspec - потужний інструмент для написання автоматичних тестів.

Gem capistrano - інструмент для деплоя.

Gem mina - геми для деплоя. Локальний сервер - це добре, але толку від нього мало, потрібно, щоб вашим ресурсом користувалися інші люди. Також посилання на свій продукт можна буде вказати в резюме, що значно підвищить вашу цінність.

Gem rubocop - один з найважливіших гемов. У кожної мови - свій style guide (переваги до форматування тексту коду). В Ruby це rubocop. Він допоможе вам писати код так, щоб в вас не кидалися камінням люди, які будуть працювати з вашим кодом. Незважаючи на те, що rubocop - всього лише набір побажань до оформлення, на початкових стадіях він може навчити багато чому. Аналізуючи код, він виділяє ті місця, які оформлені невірно, а також пропонує рекомендації щодо його поліпшення. Саме ці рекомендації допоможуть вам краще вивчити Ruby. Також деякі правила можна відредагувати.

Рекомендації до написання коду

У rubocop вказана максимальна довжина рядка 80 символів, однак для сучасної веб-розробки цього недостатньо. Для більшості випадків 120 символів має вистачити.

Може виникнути питання (особливо у людей, які мають досвід роботи з іншими мовами програмування): чому відступ - це два пробілу, а не табуляція? Навколо цього питання часто спалахують гарячі дискусії. Моя порада: просто прийміть цей факт і не витрачайте час на роздуми і суперечки.

Існує обмеження кількості рядків в методі, і для цього є вагома причина. Потрібно дотримуватися принципу єдиної відповідальності (перша буква акронима SOLID). Якщо метод занадто великий - він виконує зайву роботу і вимагає рефакторінга.

Хороший приклад вказано в книзі Сенді Метц «Ruby. Об'єктно-орієнтоване проектування » :

def diameters wheels.collect do | wheel | wheel.rim + (wheel.tire * 2) end end

Даний метод не перевищує обмеження за кількістю рядків, однак порушує принцип єдиної відповідальності. У нього дві обов'язки: він здійснює обхід всіх елементів wheels і обчислює діаметр кожного колеса. Якщо розділити цей метод на два, кожен з яких буде виконувати лише одну дію, то вийде:

# Обхід всіх елементів масиву def diameters wheels.collect {| wheel | diameter (wheel)} end # обчислення діаметра одного колеса def diameter (wheel) wheel.rim + (wheel.tire * 2) end

Подібне розділення методів не тільки буде відповідати принципу єдиної відповідальності, а також буде простіше підтримувати такий код і не виходити за обмеження, накладені рубокопом.

Подібне обмеження існує і щодо класів. Сенс той же, однак бувають ситуації, коли клас виходить за рамки без можливості логічного поділу його на підкласи.

У реальному житті існують трохи інші ситуації. наприклад:

class Gear #. . . # Передаточне відношення в дюймах def gear_inches ratio * diameter # Діаметр колеса def diameter wheel.rim + (wheel.tire * 2) end #. . . end

В даному класі велосипедної передачі обчислюється передавальне відношення, яке використовується для порівняння велосипедів, що відрізняються як передачами, так і розмірами коліс. Також в ньому присутня метод, вираховує діаметр колеса, - логічніше було б його винести в клас Wheel. Однак чи варто створювати окремий клас заради одного методу, який використовується в єдиному випадку? Чи окупляться сили на це користю, яку принесе подібна зміна?

У реальній роботі подібні питання часто постають перед розробником. Кращим рішенням буде почекати надходження додаткової інформації. Можливо, доведеться взагалі прибрати розрахунок діаметра і замінити його готовим значенням, яке буде вводити користувач. Також можуть з'явитися додаткові вимоги, для яких будуть потрібні не тільки обчислення діаметра колеса, а й інших функцій, що стосуються колеса. Коли майбутні втрати від бездіяльності рівні вартості докладених зусиль сьогодні, відкладіть рішення. Приймайте його тільки тоді, коли надійшла до вас інформація вимагає зробити це негайно.

Разом

Якщо хороший спосіб вчитися програмуванню - це практика, то кращий полягає в тому, щоб знайти рішення проблеми. Якщо у вас є ідея програми, за допомогою якого ви можете вирішити цю проблему, ви будете набагато успішніші. Як тільки ви почнете вивчати основи, розберіться, що саме потрібно робити і просто застосуєте це на ділі. Всі хороші програмісти вчаться шляхом проб і помилок.

Може виникнути питання (особливо у людей, які мають досвід роботи з іншими мовами програмування): чому відступ - це два пробілу, а не табуляція?
Однак чи варто створювати окремий клас заради одного методу, який використовується в єдиному випадку?
Чи окупляться сили на це користю, яку принесе подібна зміна?

Новости

Banwar.org
Наша совместная команда Banwar.org. Сайт казино "Пари Матч" теперь доступен для всех желающих, жаждущих волнения и азартных приключений.