Синтаксис ruby ​​on rails. Вступ до Ruby on Rails. Розробка на Ruby on Rails від Злих Марсіан

Це керівництво розкриває встановлення та запуск Ruby on Rails.

Після його прочитання, ви дізнаєтесь:

  • Як встановити Rails, створити новий додаток на Rails і приєднати вашу програму до бази даних.
  • Загальна структура застосування на Rails.
  • Основні принципи MVC (Model, View Controller – «Модель-представлення-контролер») та дизайну, заснованого на RESTful.
  • Як швидко генерувати початковий код програми на Rails.

Допущення у цьому посібнику

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

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

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

Що таке Rails?

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

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

Філософія Rails включає два важливі провідні принципи:

  • Don't Repeat Yourself: DRY - це принцип розробки ПЗ, який свідчить, що "Кожен шматочок інформації повинен мати єдине, надмірне, авторитетне уявлення в системі". Не пишіть ту саму інформацію знову і знову, код буде легше підтримувати, і він буде більш розширюваним і менш хибним.
  • Convention Over Configuration:у Rails є думки про найкращі способи робити безліч речей у веб-додатку, і за умовчанням виставлені ці угоди, замість того, щоб змушувати вас по дрібницях правити численні конфігураційні файли.

Створення нового проекту Rails

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

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

Нижченаведені приклади використовують $ для позначення рядка введення терміналу в UNIX-подібних операційних системах, хоча він може бути налаштований по-іншому. Якщо використовується Windows, рядок буде виглядати на зразок c:\source_code>

3.1. Установка Rails

Перед встановленням Rails необхідно перевірити, щоб у системі були встановлені необхідні попередні залежності. До них відносяться Ruby та SQLite3.

Відкрийте програми для командного рядка. На macOS відкрийте Terminal.app, на Windows оберіть "Run" у меню Start і напишіть "cmd.exe". Будь-які команди, що починаються зі знака долара $, повинні бути запущені в командному рядку. Переконайтеся, що у вас встановлено поточну версію Ruby:

$ ruby ​​-v ruby ​​2.5.0

Rails вимагає, щоб було встановлено Ruby версії 2.5.0 або новіше. Якщо номер версії менший за цю, потрібно буде встановити нову копію Ruby.

Щоб швидко встановити Ruby та Ruby on Rails в системі, користувачі Windowsможуть використовувати Rails Installer. Додаткові методи встановлення для більшості операційних систем можна побачити на ruby-lang.org.

Якщо ви працюєте у Windows, необхідно встановити Ruby Installer Development Kit .

Вам також знадобиться встановлення бази даних SQLite3.

Багато популярних UNIX-подібних ОС поставляються з прийнятною версією SQLite3. У Windows, якщо ви встановлювали Rails за допомогою Rails Installer, у вас вже встановлено SQLite. Інші користувачі можуть звернутися до інструкцій із встановлення на сайті SQLite3. Перевірте, що він правильно встановлений і міститься у вашому PATH:

$sqlite3 --version

Програма має повідомити свою версію.

Для встановлення Rails використовуйте команду gem install, представлену RubyGems:

$ gem install rails

Щоб перевірити, що все встановлено правильно, потрібно виконати таке:

$ rails --version

Якщо виводиться щось на зразок Rails 6.0.0, можна продовжувати.

3.2. Створення програми Blog

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

Для використання цього генератора відкрийте термінал, увійдіть до папки, в якій у вас є права на створення файлів і напишіть:

$ rails new blog

Це створить додаток на Rails з ім'ям Blog у директорії blog та встановить геми, залежно від яких згадані у Gemfile при використанні bundle install .

При використання Windows Subsystem for Linux, є деякі обмеження на повідомлення файлової системи, що означає, що слід відключити геми spring і listen , що можна зробити, запустивши rails new blog --skip-spring --skip-listen .

Можна подивитися всі можливі опції командного рядка, які приймає білдер програми на Rails, запустивши rails new-h.

Після того, як ви створили додаток blog, перейдіть до його папки:

У директорії blog є кілька автоматично згенерованих файлів та папок, що задають структуру програми на Rails. Більша частина роботи в цьому самовчителі буде відбуватися в папці app, але зараз пробіжимося за функціями кожної папки, які створює Rails у новому додатку за замовчуванням:

Файл/Папка Призначення
app/ Містить контролери, моделі, завірюхи, хелпери, розсилювачі, канали, завдання та ассети вашої програми. Ми розглянемо цю папку докладніше.
bin/ Містить Rails скрипти які стартують вашу програму, також директорія може містити інші скрипти які ви використовуєте для налаштування, оновлення, деплою або запуску.
config/ Конфігурації маршрутів, бази даних вашої програми тощо. Докладніше це розкрито в Конфігурування додатків на Rails
config.ru Конфігурація Rack для серверів, що базуються на Rack, що використовуються для запуску програми. Докладніше про Rack дивіться на сайті Rack.
db/ Містить поточну схему бази даних, а також міграції бази даних.
Gemfile
Gemfile.lock
Ці файли дозволяють вказати, які залежності від гемов потрібні для вашої програми на Rails. Ці файли використовують гемом Bundler. Докладніше про Bundler дивіться на сайті Bundler.
lib/ Зовнішні модулі для вашої програми.
log/ Файли логів програми.
package.json Цей файл дозволяє вказати, які залежності npm необхідні для Rails. Цей файл використовується Yarn. Докладніше про Yarn дивіться на сайті Yarn.
public/ Єдина папка, яка доступна ззовні як є. Містить статичні файли та скомпіловані асети.
Rakefile Цей файл знаходить та завантажує завдання, які можуть бути запущені у командному рядку. Певна задача доступна у всіх компонентах Rails. Замість зміни Rakefile можна додати свої власні завдання, додавши файли в директорію lib/tasks програми.
README.md Це вступний мануал для вашої програми. Його слід відредагувати, щоб розповісти іншим, що ваше додаток робить, як його налаштувати, і т.п.
storage/ Файли Active Storage для сервісу Disk. Це розкривається у посібнику Огляд Active Storage.
test/ Юніт-тести, фікстури та інший апарат тестування. Це розкривається у посібнику Тестування додатків на Rails
tmp/ Тимчасові файли (такі як файли кешу та pid)
vendor/ Місце для коду сторонніх розробників. У типовому додатку Rails включає зовнішні геми.
.gitignore Цей файл повідомляє git, які файли (явно чи шаблоном) йому слід ігнорувати. Докладніше про ігнорування файлів дивіться GitHub-Ignoring files.
.ruby-version Цей файл містить дефолтну версію Ruby.

Hello, Rails!

Для початку, давайте виведемо на екран якийсь текст. Для цього потрібний запущений сервер вашої програми на Rails.

4.1. Запуск веб-сервера

Фактично у вас вже є функціональний додаток на Rails. Щоб переконатися, потрібно запустити веб-сервер на машині. Це можна здійснити, запустивши наступну команду з директорії blog:

Якщо ви використовуєте Windows, ви повинні передавати скрипти з bin папки безпосередньо в інтерпретатор Ruby, тобто ruby ​​bin\rails server .

Стиснення ассетів JavaScript вимагає середовища виконання JavaScript у вашій системі, і його відсутність призведе до помилки execjs під час стиснення ассетів. Зазвичай macOS і Windows поставляються із встановленим середовищем виконання JavaScript. therubyrhino - рекомендоване середовище виконання для користувачів JRuby, воно додається в Gemfile, якщо програма генерується під JRuby. Можна дізнатися все про підтримувані середовища виконання в ExecJS

Це запустить Puma, веб-сервер, що розповсюджується з Rails за промовчанням. Щоб побачити програму в дії, відкрийте вікно браузера та пройдіть за адресою http://localhost:3000. Ви повинні побачити дефолтну інформаційну сторінку Rails:

Щоб зупинити веб-сервер, натисніть Ctrl+C у терміналі, де його запущено. Щоб переконатися, що сервер зупинено, ви повинні знову побачити курсор командного рядка. Для більшості UNIX-подібних систем, включаючи macOS, це буде символ долара $ . У режимі development, Rails в основному не вимагає зупинки сервера; усі зміни, які Ви робите у файлах, автоматично підхоплюються сервером.

Сторінка "Welcome Aboard" - це своєрідний тест для нової програми на Rails: вона показує, що ваші програми налаштовані досить правильно для відображення сторінки.

4.2. Скажіть "привіт", Рейки

Щоб Rails сказав "Привіт", потрібно створити, як мінімум, контролері завірюху(Уявлення).

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

Призначенням завірюхи є відображення цієї інформації в форматі, що легко читається. Необхідно відзначити важливу відмінність, що місцем, у якому збирається інформація, є контролер, а не завірюха. В'юха повинна тільки відображати цю інформацію. За замовчуванням шаблони в'юх пишуться мовою, названою eRuby (Embedded Ruby), яка конвертується циклом запитів до Rails до відправки користувачеві.

Для створення нового контролера потрібно запустити генератор "controller" і сказати йому, що ви хочете контролер з ім'ям "Welcome" з екшном на ім'я "index", ось так:

$ rails generate controller Welcome index

Rails створить кілька файлів та маршрут.

Create app/controllers/welcome_controller.rb route get "welcome/index" invoke erb create app/views/welcome create app/views/welcome/index.html.erb invoke test_unit create test/controllers/welcome_controller_test.rb helpers/welcome_helper.rb invoke test_unit invoke assets invoke scss create app/assets/stylesheets/welcome.scss

Найбільш важливими з них є, зрозуміло, контролер, розташований в app/controllers/welcome_controller.rb і завірюха, розташована в app/views/welcome/index.html.erb .

Відкрийте файл app/views/welcome/index.html.erb у текстовому редакторі. Видаліть весь існуючий у файлі код і замініть його на наступний рядок коду:

Якщо ще раз надіслати форму, ви побачите щось на кшталт наступного:

"First Article!", "text"=>"This is my first article.") permitted: false>

Тепер цей екшн відображає параметри статті, що прийшли з форми. Однак це все ще марно. Так, ви бачите параметри, але насправді нічого не робите з ними.

5.4. Створення моделі Article

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

$ rails generate model Article title:string text:text

За допомогою цієї команди ми повідомляємо Rails, що хочемо модель Article з атрибутом titleрядкового типу та атрибутом textтекстовий тип. Ці атрибути автоматично додадуться до таблиці articles і прив'яжуться до моделі Article.

Rails у відповідь створить низку файлів. Зараз нам цікаві тільки app/models/article.rb та db/migrate/20140120191729_create_articles.rb (у вас ім'я може трохи відрізнятися). Останній є відповідальним за створення структури бази даних, тому ми і розглянемо його далі.

Active Record досить кмітливий, щоб автоматично зв'язати імена шпальт з атрибутами моделі, що означає, що всередині моделей Rails не потрібно оголошувати атрибути, Active Record зробить це автоматично.

5.5. Запуск міграції

Як ви вже бачили, rails generate model створив файл міграції бази даниху директорії db/migrate. Міграції – це клас Ruby, розроблений для того, щоб було просто створювати та модифікувати таблиці бази даних. Rails використовує команди rake для запуску міграцій, і можливе скасування міграції після того, як вона була застосована до вашої бази даних. Ім'я файлу міграції включає тимчасову мітку, щоб бути впевненим, що вони виконуються в послідовності, в якій вони створювалися.

Якщо Ви заглянете у файл db/migrate/YYYYMMDDHHMMSS_create_articles.rb (пам'ятаєте, у вас файл має трохи інше ім'я), ось що там виявите:

Class CreateArticles< ActiveRecord::Migration def change create_table:articles do |t| t.string:title t.text:text t.timestamps end end end

Ця міграція створює метод change , що викликається під час запуску цієї міграції. Екшни, визначене в цій міграції, також є оборотним, що означає, що Rails знає, як скасувати зміни, зроблені цією міграцією, якщо ви вирішите їх скасувати пізніше. Коли ви запустите цю міграцію, вона створить таблицю articles з рядковим стовпцем та текстовим стовпцем. Вона також створить два поля тимчасових міток для відстеження часу створення та оновлення статті.

Зараз нам потрібно використовувати команду rails, щоб запустити міграцію:

$ rails db:migrate

Rails виконає цю команду міграції та повідомить, що він створив таблицю Articles.

CreateArticles: migrating ================================================ === -- create_table(:articles) -> 0.0019s == CreateArticles: migrated (0.0020s) =========================== ==============

Так як ви працюєте за умовчанням у середовищі development, ця команда буде застосована до бази даних, визначеної у розділі development файлу config/database.yml . Якщо хочете виконати міграції в іншому середовищі, наприклад у production, слід явно передати її за виклику команди: rails db:migrate RAILS_ENV=production .

5.6. Збереження даних у контролері

Повернімося до ArticlesController , нам потрібно змінити екшн create , щоб використовувати нову модель Article для збереження даних у базі даних. Відкрийте app/controllers/articles_controller.rb та змініть екшн create наступним чином:

Def create @article = Article.new(params[:article]) @article.save redirect_to @article end

Ось що відбувається: кожна модель Rails може бути ініціалізована за допомогою відповідних атрибутів, які будуть автоматично прив'язані до відповідних стовпців бази даних. У першому рядку ми якраз це і робимо (пам'ятаєте, що params[:article] містить цікаві для нас атрибути). Потім @article.save відповідає за збереження моделі до бази даних. Нарешті, ми перенаправляємо користувача на екшн show, який визначимо пізніше.

Ви, можливо, задаєтеся питанням, чому A в Article.new заголовна, хоча решта посилань на статті в цьому посібнику використовують рядкове написання. У цьому контексті ми посилаємося на клас на ім'я Article, який визначений у app/models/article.rb. Імена класів у Ruby повинні починатися з великої літери.

Тепер, коли є валідації при виклику @article.save на невалідній статті, буде повернуто false . Якщо знову відкрити app/controllers/articles_controller.rb , ви побачите, що ми не перевіряємо результат виклику @article.save в екшні create . Якщо у цій ситуації @article.save не вдасться, нам потрібно знову показати форму користувачеві. Для цього замініть екшни new і create в app/controllers/articles_controller.rb на ці:

Def new @article = Article.new end def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end end private def article_params params.require(:article).permit(:title , :text) end

Тепер екшн new створює нову змінну екземпляра на ім'я @article , і ви побачите, навіщо це, через пару абзаців.

Зауважте, що в екшні create ми використовували render замість redirect_to , коли save повертає false . Метод render використаний, щоб об'єкт @article був переданий назад у шаблон new , коли він буде відрендерований. Цей рендеринг виконується в рамках того ж запиту, що і надсилання форми, тоді як redirect_to повідомляє браузеру виконати інший запит.

5.11. Оновлення статей

Ми розкрили частину "CR" від CRUD. Тепер сфокусуємось на частині "U", оновленні (updating) статей.

Першим кроком слід додати екшн edit в ArticlesController , зазвичай між екшнами new і create , як показано.

Def new @article = Article.new end def edit @article = Article.find(params[:id]) end def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end end

Завірюха міститиме форму, схожу на ту, яку ми використовували при створенні нових статей. Створіть файл з ім'ям app/views/articles/edit.html.erb і додайте до нього наступне:

Editing article

<%= form_with(model: @article, local: true) do |form| %> <% if @article.errors.any? %>

<%= pluralize(@article.errors.count, "error") %>

    <% @article.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>

<%= form.label:title %>
<%= form.text_field:title %>

<%= form.label:text %>
<%= form.text_area:text %>

<%= form.submit %>

<% end %> <%= link_to "Back", articles_path %>

Зараз ми вказуємо формі на екшн update, який поки що не визначений, але скоро ми це зробимо.

Передача об'єкта статті до методу form_with автоматично встановить URL для надсилання форми відредагованої статті. Ця опція повідомляє Rails, що ми хочемо, щоб ця форма була відправлена ​​за допомогою PATCH , методу HTTP, від якого очікується, що він використовується для оновленняресурсів відповідно до протоколу REST.

Потім потрібно створити екшн update в app/controllers/articles_controller.rb. Додайте його між екшном create та методом private:

Def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end end def update @article = Article.find(params[:id]) if @article.update(article_params) redirect_to @article else render "edit" end end private def article_params params.require(:article).permit(:title, :text) end

Новий метод update використовується, коли хочете оновити запис, який вже існує, і він приймає хеш, що містить атрибути, які ви хочете оновити. Як і раніше, якщо буде помилка поновлення статті, ми хочемо знову показати форму користувачеві.

Ми наново використовували метод article_params, який визначили раніше для create екшна.

Не обов'язково передавати всі атрибути в update. Наприклад, якщо було викликано @article.update(title: "A new title") , Rails оновить лише атрибут title , залишивши всі інші атрибути недоторканими.

<% @articles.each do |article| %> <% end %>
Title Text
<%= article.title %> <%= article.text %> <%= link_to "Show", article_path(article) %> <%= link_to "Edit", edit_article_path(article) %>

Також додамо до шаблону app/views/articles/show.html.erb , щоб посилання "Edit" також було на сторінці статті. Додайте наступне в кінці шаблону:

... <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

І ось як виглядає наш додаток зараз:

5.12. Використання партіалів для очищення повторення у завірюхах

Наша сторінка edit дуже схожа на сторінку new, фактично вони використовують один і той самий код для відображення форми. Давайте приберемо це дублювання, використавши партіал завірюхи. За згодою, файли партіалів починаються зі знака підкреслення.

Створіть новий файл app/views/articles/_form.html.erb з таким вмістом:

<%= form_with model: @article, local: true do |form| %> <% if @article.errors.any? %>

<%= pluralize(@article.errors.count, "error") %>prohibited this article from being saved:

    <% @article.errors.full_messages.each do |msg| %>
  • <%= msg %>
  • <% end %>
<% end %>

<%= form.label:title %>
<%= form.text_field:title %>

<%= form.label:text %>
<%= form.text_area:text %>

<%= form.submit %>

<% end %>

Давайте зараз оновимо завірюху app/views/articles/new.html.erb , щоб використовувати цей новий партіал, переписавши її повністю:

New article

<%= render "form" %> <%= link_to "Back", articles_path %>

І те саме для завірюхи app/views/articles/edit.html.erb:

Edit article

<%= render "form" %> <%= link_to "Back", articles_path %>

5.13. Видалення статей

Тепер ми готові розкрити частину "D" від CRUD, видалення з бази даних. Дотримуючись угоди REST, маршрут для видалення статей у результатах виведення rails routes наступний:

DELETE /articles/:id(.:format) articles#destroy

Метод роутингу delete має бути використаний для маршрутів, що знищують ресурси. Якщо його залишити звичайним маршрутом get , стане можливим створювати такі зловмисні URL:

look at this cat!

Ми використовуємо метод delete для знищення ресурсів, і цей маршрут пов'язується з екшном destroy в app/controllers/articles_controller.rb, який ще не існує. Метод destroy зазвичай останній екшн CRUD в контролері, і подібно до інших публічних екшн CRUD, він повинен бути розташований перед будь-якими private або protected методами. Давайте його додамо:

Def destroy @article = Article.find(params[:id]) @article.destroy redirect_to articles_path end

Повністю ArticlesController у файлі app/controllers/articles_controller.rb має виглядати так:

Class ArticlesController< ApplicationController def index @articles = Article.all end def show @article = Article.find(params[:id]) end def new @article = Article.new end def edit @article = Article.find(params[:id]) end def create @article = Article.new(article_params) if @article.save redirect_to @article else render "new" end end def update @article = Article.find(params[:id]) if @article.update(article_params) redirect_to @article else render "edit" end end def destroy @article = Article.find(params[:id]) @article.destroy redirect_to articles_path end private def article_params params.require(:article).permit(:title, :text) end end

Можна викликати destroy на об'єктах Active Record, коли ви бажаєте видалити їх із бази даних. Зауважте, що нам не потрібно додавати завірюху для цього екшну, тому що ми перенаправляємо на екшн index .

Listing Articles

<%= link_to "New article", new_article_path %> <% @articles.each do |article| %> <% end %>
Title Text
<%= article.title %> <%= article.text %> <%= link_to "Show", article_path(article) %> <%= link_to "Edit", edit_article_path(article) %> <%= link_to "Destroy", article_path(article), method: :delete, data: { confirm: "Are you sure?" } %>

Тут ми використовуємо link_to іншим чином. Ми передаємо іменований маршрут як другий аргумент, і налаштування як інший аргумент. Опції method: :delete і data: ( confirm: "Are you sure?" ) використовуються як атрибути html5, тому при натисканні посилання Rails спочатку покаже користувачеві діалог підтвердження, а потім відправить посилання за допомогою методу delete . Це виконується за допомогою JavaScript rails-ujs , який автоматично включається в макет програми (app/views/layouts/application.html.erb) при генерації програми. Без цього файлу діалог підтвердження не буде показано.

Наші вітання, тепер ви можете створювати, переглядати все та окремо, оновлювати та знищувати статті.

Додаємо другу модель

Настав час додати другу модель до програми. Друга модель оброблятиме коментарі до статей.

6.1. Генеруємо модель

Ми маємо намір використовувати той самий генератор, що ми використовували раніше при створенні моделі Article. На цей раз ми створимо модель Comment, що містить посилання на статтю. Запустіть наступну команду у терміналі:

$ rails generate model Comment commenter:string body:text article:references

Ця команда генерує чотири файли:

Спочатку поглянемо на app/models/comment.rb:

Class Comment< ApplicationRecord belongs_to:article end

Це дуже схоже на модель Article, яку ми бачили раніше. Різниця у рядку belongs_to:article , яка встановлює зв'язок Active Record. Ви ознайомитеся зі зв'язками у наступному розділі посібника.

Ключове слово (:references), використане команді bash, це спеціальний тип даних для моделей. Він створює новий стовпець у базі даних з ім'ям представленої моделі з доданим _id , який може містити числові значення. Щоб краще зрозуміти, проаналізуйте файл db/schema.rb після міграції.

Крім моделі, Rails також зробив міграцію для створення відповідної таблиці бази даних:

Class CreateComments< ActiveRecord::Migration def change create_table:comments do |t| t.string:commenter t.text:body t.references:article, null: false, foreign_key: true t.timestamps end end end

Рядок t.references створює числовий стовпець з ім'ям article_id , індекс для нього, та обмеження зовнішнього ключа, що вказує на стовпець id таблиці articles . Далі запускаємо міграцію:

$ rails db:migrate

Rails досить кмітливий, щоб виконувати лише ті міграції, які ще не були запущені для поточної бази даних, у нашому випадку Ви побачите:

CreateComments: migrating =============================================== == -- create_table(:comments) -> 0.0115s == CreateComments: migrated (0.0119s) ============================ ============

6.2. Зв'язуємо моделі

Зв'язки Active Record дозволяють легко оголошувати відносини між двома моделями. У випадку з коментарями та статтями, ви можете описати стосунки так:

  • Кожен коментар належить одній статті.
  • Одна стаття може мати багато коментарів.

Фактично це дуже близько до синтаксису, який використовує Rails для оголошення цього зв'язку. Ви вже бачили рядок коду в моделі Comment (app/models/comment.rb), яка робить кожен коментар таким, що належить статті:

Class Comment< ApplicationRecord belongs_to:article end

Вам потрібно відредагувати app/models/article.rb, додавши інший бік зв'язку:

Class Article< ApplicationRecord has_many:comments validates:title, presence: true, length: { minimum: 5 } [...] end

Ці два оголошення автоматично роблять доступним велика кількістьможливостей. Наприклад, якщо у вас є змінна примірник @article , що містить статтю, ви можете отримати всі коментарі, що належать цій статті, в масиві, викликавши @article.comments .

6.3. Додаємо маршрут для коментарів

Як у випадку з контролером welcome, нам потрібно додати маршрут, щоб Rails знав, за якою адресою ми хочемо пройти, щоб побачити коментарі. Знову відкрийте файл config/routes.rb та відредагуйте його так:

Resources:articles do resources:comments end

Це створить comments як вкладений ресурсв articles. Це інша сторона захоплення ієрархічних відносин, що існують між статтями та коментарями.

6.4. Генеруємо контролер

Маючи модель, звернемо увагу на створення відповідного контролера. Знову будемо використовувати той же генератор, що використовували раніше:

$ rails generate controller Comments

Створяться чотири файли та порожня директорія:

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

Спочатку ми розширимо шаблон Article show (app/views/articles/show.html.erb), щоб він дозволяв додати новий коментар:

Title: <%= @article.title %>

Text: <%= @article.text %>

Add a comment:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

Це додасть форму на сторінку відображення статті, яка створює новий коментар при виклику екшну create в CommentsController . Тут виклик form_with використовує масив, що створить вкладений маршрут, такий як /articles/1/comments.

Давайте напишемо create в app/controllers/comments_controller.rb:

Class CommentsController< ApplicationController def create @article = Article.find(params[:article_id]) @comment = @article.comments.create(comment_params) redirect_to article_path(@article) end private def comment_params params.require(:comment).permit(:commenter, :body) end end

Тут все трохи складніше, ніж ви бачили у контролері для статей. Це побічний ефект вкладення, який ви налаштували. Кожен запит до коментаря відстежує статтю, до якої коментар приєднаний, таким чином спочатку вирішуємо питання з отриманням статті, викликавши find на моделі Article.

Крім того, код користується перевагою деяких методів, доступних для зв'язків. Ми використовуємо метод create на @article.comments , щоб створити та зберегти коментар. Це автоматично пов'язує коментар так, що він належить до певної статті.

Як тільки ми створили новий коментар, ми повертаємо користувача на оригінальну статтю, використовуючи хелпер article_path(@article) . Як ми вже бачили, він викликає екшн show в ArticlesController , який, у свою чергу, рендерит шаблон show.html.erb . У цьому місці ми хочемо відображати коментарі, тому давайте додамо наступне в app/views/articles/show.html.erb.

Title: <%= @article.title %>

Text: <%= @article.text %>

Comments

<% @article.comments.each do |comment| %>

Commenter: <%= comment.commenter %>

Comment: <%= comment.body %>

<% end %>

Add a comment:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

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

Рефакторинг

Тепер, коли ми маємо працюючі статті та коментарі, поглянемо на шаблон app/views/articles/show.html.erb . Він став довгим та незручним. Давайте скористаємося партіалами, щоб розвантажити його.

7.1. Рендеринг колекцій партіалів

Спочатку зробимо партіал для коментарів, який показує всі коментарі для статті. Створіть файл app/views/comments/_comment.html.erb і помістіть до нього наступне:

Commenter: <%= comment.commenter %>

Comment: <%= comment.body %>

Потім можна змінити app/views/articles/show.html.erb ось так:

Title: <%= @article.title %>

Text: <%= @article.text %>

Comments

<%= render @article.comments %>

Add a comment:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

Тепер це відрендерит партіал app/views/comments/_comment.html.erb по разу для кожного коментаря в колекції @article.comments. Так як метод render перебирає колекцію @article.comments, він призначає кожен коментар локальної змінної з ім'ям, як у партіалу, у нашому випадку comment, яка нам доступна в партіалі для відображення.

7.2. Рендеринг форми у партіалі

Давайте також перемістимо розділ нового коментаря до свого партіалу. Знову ж таки, створіть файл app/views/comments/_form.html.erb , що містить:

<%= form_with(model: [ @article, @article.comments.build ], local: true) do |form| %>

<%= form.label:commenter %>
<%= form.text_field:commenter %>

<%= form.label:body %>
<%= form.text_area:body %>

<%= form.submit %>

<% end %>

Потім змініть app/views/articles/show.html.erb таким чином:

Title: <%= @article.title %>

Text: <%= @article.text %>

Comments

<%= render @article.comments %>

Add a comment:

<%= render "comments/form" %> <%= link_to "Edit", edit_article_path(@article) %> | <%= link_to "Back", articles_path %>

Другий render лише визначає шаблон партіалу, який ми хочемо рендерити, comments/form . Rails досить кмітливий, щоб підставити підкреслення у цей рядок і зрозуміти, що Ви хотіли рендерувати файл _form.html.erb у директорії app/views/comments .

Об'єкт @article доступний у будь-яких партіалах, що рендеруються у завірюсі, тому що ми визначили його як змінну екземпляра.

Видалення коментарів

Іншою важливою особливістю блогу є можливість видалення спаму. Щоб зробити це, потрібно вставити деяке посилання у завірюсі та екшн destroy в CommentsController .

Commenter: <%= comment.commenter %>

Comment: <%= comment.body %>

<%= link_to "Destroy Comment", , method: :delete, data: { confirm: "Are you sure?" } %>

Натискання цієї нового посилання"Destroy Comment" запустить DELETE /articles/:article_id/comments/:id в нашому CommentsController , який потім буде використовуватися для знаходження коментаря, який ми хочемо видалити, тому давайте додамо екшн destroy в наш контролер (app/controllers/comments_controller.rb) :

Class CommentsController< ApplicationController def create @article = Article.find(params[:article_id]) @comment = @article.comments.create(comment_params) redirect_to article_path(@article) end def destroy @article = Article.find(params[:article_id]) @comment = @article.comments.find(params[:id]) @comment.destroy redirect_to article_path(@article) end private def comment_params params.require(:comment).permit(:commenter, :body) end end

Дія destroy знайде статтю, яку ми переглядаємо, виявить коментар у колекції @article.comments і потім прибере його з бази даних і поверне нас назад на перегляд статті.

8.1. Видалення пов'язаних об'єктів

Якщо видаляєте статтю, пов'язані з нею коментарі також повинні бути видалені, інакше вони просто займатимуть місце в базі даних. Rails дозволяє використовувати опцію dependent на зв'язку для досягнення цього. Модифікуйте модель Article, app/models/article.rb , таким чином:

Class Article< ApplicationRecord has_many:comments, dependent: :destroy validates:title, presence: true, length: { minimum: 5 } [...] end

Безпека

9.1. Базова автентифікація

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

Rails надає базову автентифікаційну систему HTTP, яка добре працює у цій ситуації.

У ArticlesController нам потрібен спосіб блокувати доступ до різних екшнів, якщо користувач не автентифікований. Тут ми можемо використовувати метод Rails http_basic_authenticate_with , що дозволяє доступ до необхідних екшн, якщо це дозволить це.

Щоб використовувати систему аутентифікації, ми визначимо її нагорі нашого ArticlesController в app/controllers/articles_controller.rb . У нашому випадку ми хочемо, щоб користувач був автентифікований для кожного екшну, крім index і show , тому напишемо так:

Class ArticlesController< ApplicationController http_basic_authenticate_with name: "dhh", password: "secret", except: [:index, :show] def index @articles = Article.all end # пропущено для краткости

Ми також хочемо дозволити лише автентифікованим користувачам видаляти коментарі, тому в CommentsController (app/controllers/comments_controller.rb) ми напишемо:

Class CommentsController< ApplicationController http_basic_authenticate_with name: "dhh", password: "secret", only: :destroy def create @article = Article.find(params[:article_id]) # ... end # пропущено для краткости

Тепер, якщо спробуєте створити нову статтю, зустрінетесь з викликом базової аутентифікації HTTP:

Також для програм на Rails доступні інші методи аутентифікації. Двома популярними доповненнями для Rails, серед інших, є Devise та Authlogic.

9.2. Інші думки про безпеку

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

Якщо ви припускаєтеся помилки в цій галузі, найбільш звичайним симптомом є чорний ромб зі знаком питання всередині, що з'являється в браузері. Іншим звичайним симптомом є символи, такі як "ü", що з'являються замість "ü". Rails робить ряд внутрішніх кроків для пом'якшення загальних випадків тих проблем, які можуть бути автоматично виявлені та виправлені. Однак, якщо є зовнішні дані, що не зберігаються в UTF-8, це може призвести до таких проблем, які не можуть бути автоматично виявлені Rails і виправлені.

Два найбільш звичайні джерела даних, які не в UTF-8:

  • Ваш текстовий редактор: Більшість текстових редакторів (такі як TextMate) за замовчуванням зберігають файли як UTF-8. Якщо ваш текстовий редактор так не робить, це може призвести до того, що спеціальні символи, введені у ваші шаблони (такі як é) з'являться як ромб із знаком питання в браузері. Це також стосується файлів перекладу i18N. Більшість редакторів, які не встановлюють за умовчанням UTF-8 (такі як деякі версії Dreamweaver), пропонують спосіб змінити умовчання на UTF-8. Зробіть так.
  • Ваша база даних: Rails за умовчанням перетворює дані з вашої бази даних на UTF-8 на кордоні. Однак, якщо ваша база даних не використовує всередині UTF-8, вона може не спроможна зберігати всі символи, які введе ваш користувач. Наприклад, якщо ваша база даних усередині використовує Latin-1, і ваш користувач вводить російські, івритські або японські символи, дані будуть втрачені як тільки потраплять до бази даних. Якщо можливо, використовуйте UTF-8 як внутрішнє сховище у базі даних.

До написання даного тексту автора підштовхнуло вивчення низки знайдених у Всесвітній Мережі матеріалів, які цілком можна було б позначити однією і тією самою рубрикою/тегом: Як я вивчив Ruby(або Ruby on Rails, PHP, JS, C++, etc) за три дні.

Ну чи таке інше. Автору, у свою чергу, відразу ж пригадався (неконтрольовані асоціації) ряд анекдотів, об'єднаних знову ж таки загальною тематикою, що полягає в оціночній характеристиці дій, які можливо виконати здуру... можливим процитувати ці шедеври тут; відповідно, нічого не залишається, як запропонувати увазі читача власноручно написаний варіант доки з циклу Як із задоволенням і відносно швидко навчитися працювати в Ruby on Rails.

Робочий приклад описаного в статті коду, серед інших Rails Examples - завжди можна знайти в тестовому блозі автора на herokuapp.com, welcome.

Методика проста, і автор зовсім не претендує тут на лаври першовідкривача: необхідно, щоб було цікаво, а результати б не змусили на себе чекати. Не заважає також спробувати пограти на своїх слабкостях, часом адже і марнославство здатне бути на користь справі; підсумки розробки повинні бути такими, щоб їх можна було з гордістю пред'явити читачам, друзям та колегам в Мережі, задеплоївши кудись на Herokuабо Amazon, також - щоб можна було знову і знову до них повертатися, перебудовуючи та удосконалюючи, форуми та StackOwerflow нам усім на допомогу. Ось я і говорю, чому б не написати, для початку, свій блог на Ruby on Rails?

Відштовхнутися пропоную від відмінної доки Getting Started with Rails або його російськомовної адаптації Rails для початківців, також Build a Blog with Ruby on Rails, а також на допомогу матеріали цього блогу, посилання на які легко знаходяться в лівому сайдбарі. А далі - все, далі магія, спочатку все розписано як по нотах, відкриваємо консоль - і вперед... автор вважає своїм обов'язком зробити лише кілька пояснень і технічних рекомендацій, покликаних полегшити адепту пошук і набуття Світлої Сторони Сили, і не більше того. Це тільки ваш бій, сміливіше вперед і повертайтеся з перемогою.

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

Почнемо з твердження, що ці методи цілком здатні (як варіант) виглядати так, як показано далі, але аж ніяк не так, як в оригіналі:

app/controllers/posts_controller.rb

# Update action updates post з новою інформацією def update if @post.update_attributes(post_params) flash[:notice] = "Successfully updated post!" redirect_to posts_path else flash[:alert] = "Error updating post!" render:edit end end # The show action renders the individual post after retrieving the id def show end # .destroy flash[:notice] = "Successfully deleted post!" redirect_to posts_path else flash[:alert] = "Error updating post!" end end

А втім, спробуйте і так, чому ні. Ідемо далі.

Другий блог, хоч і складніший (додані редактор статей CKEditorі devise, гнучке засіб для аутентифікації в rails-додатках), чомусь позбавлений в оригіналі можливості залишати коментарі. Вам доведеться власноруч заповнити цей недолік: дійте за аналогією з описом створення першого блогу, будуть потрібні лише зовсім незначні зміни: просто кажучи, замість articleі articlesпершого блогу будуть у вас postі postsу блозі другому, ось і вся, по суті, різниця. Будьте уважні, і все вийде.

Recaptchaдо коментарів прив'язати доведеться також самостійно: так-так, це вам не Joomla, звикайте. Втім, титанічних зусиль не потрібно, процес підключення Recaptchaдетально описаний у статті Підключаємо Recaptcha в Rails application. Далі зовсім не зайве відрегулювати deviseтаким чином, щоб блог працював (хоча б спочатку!) в однокористувальному режимі, дозволяючи численним своїм читачам режим READ ONLY, іншими словами - заборонимо для початку реєстрацію нових користувачів. У Мережі досить різних рецептів на предмет того, як це зробити, але, на мій погляд, найбільш грамотний хак такого роду знаходиться у Wiki devise, в матеріалі під назвою How To: Set up devise as a single user system . А саме: створюємо новий контролер:

app/controllers/registrations_controller.rb:

Class RegistrationsController< Devise::RegistrationsController before_action:one_admin_registered?, only: [:new, :create] protected def one_admin_registered? if ((Admin.count == 1) & (admin_signed_in?)) redirect_to root_path elsif Admin.count == 1 redirect_to new_admin_session_path end end end

потім перевизначаємо його в routes.rb, і це все:

#devise_for:admins devise_for:admins, controllers: ( registrations: "registrations")

CKEDITOR.editorConfig = function(config) ( // config.enterMode = 2; //disabled

Completely config.enterMode = CKEDITOR.ENTER_BR // натисніть ENTER KEY input
config.shiftEnterMode = CKEDITOR.ENTER_P; //pressing the SHIFT + ENTER KEYS input

Config.autoParagraph = false; // stops automatic insertion of

On focus);

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

config/application.rb

Config.assets.precompile += Ckeditor.assets config.assets.precompile += %w(ckeditor/*) config.autoload_paths += %W(#(config.root)/app/models/ckeditor)

Інакше CKEditorвідмовиться працювати на новому місці.

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

Мова з'явилася в 1995 році і вважається молодою мовою в порівнянні з Сі або C++, які з'явилися в 1972 і 1983 році відповідно. Мова має низку переваг та специфічних можливостей, які реалізовані виключно в ньому, якщо брати до порівняння інші популярні мови програмування.

План курсу

Під час відеокурсу ви вивчите мову Ruby без використання додаткових фреймворків. Додаткові курси з Rubyви можете знайти на .

За курс ми вивчимо як встановити та працювати з мовою, вивчимо синтаксис Рубі(Змінні, цикли, умовні оператори), а також більш складні речі: ОВП, робота з файлами, винятки, методи і торкнемося ще безліч інших тем.


Встановлення Ruby на Windows

Для встановлення Рубі на Віндовс використовуйте RubyInstaller, який можна завантажити на офіційному сайті за цим посиланням . Завантажуйте останню версіюта встановлюйте її як звичайну програму. Після завершення встановлення перед вами буде схоже вікно:

На цьому вікні простежте, щоб галочка обов'язково була проставлена, тоді далі відкриється інше додаток для встановлення Rubyу систему.

У вікні, введіть по черзі 1 і натисніть Enter, дочекавшись кінця установки натисніть 2 і Enter і в кінці виконайте третю команду натиснувши 3 і Enter.

Установка Рубі на Мак

На маку Рубі встановлено за замовчуванням, тому вам не потрібно нічого додатково робити. Ви можете перевірити версію мови у терміналі за допомогою наступної команди:

Якщо версія застаріла, можна виконати завантаження нової. Для початку потрібно завантажити менеджер версій Ruby. Це робиться через термінал за допомогою команди:

Curl-L https://get.rvm.io | bash-s stable

Після встановлення менеджера необхідно перезапустити термінал. Виконайте таку команду:

Rvm list known

Після перезапуску ви можете встановити ту версію, яку ви хочете. У нашому випадку було встановлено версію 2.4.2:

Rvm install ruby-2.4.2

В кінці ви можете ще раз перевірити версію і якщо вона, як і раніше, стара, то просто встановіть за замовчуванням нову версію.

Одна з перших та найбільш докладних навчальних книг з Rails в інтернеті. Головна перевага - докладне охоплення найнеобхідніших питань, регулярні оновлення та безкоштовність основного змісту.

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

2. Railscasts

Інший відомий на весь інтернет навчальний ресурс. На ньому виросло не одне покоління Rails розробників. Теж англійською.

Побудований не як цілісний навчальний курс, а у вигляді серії скрінкастів – короткі уроки на конкретну тему. Уроків дуже багато, можна знайти майже будь-яку тему.

На жаль, проект у 2013 році перестав оновлюватись.

3. Rails для Зомбі

Відв'язне введення в рейки для новачків у стилі гри квесту з атмосферою зомбі. Дуже популярно серед новачків.

Зручно, що вам не потрібно нічого встановлювати на свій комп'ютер. Усі завдання вирішуються у браузері. Крок за кроком ви проходите гру і починаєте розуміти ази Ruby on Rails.

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

3. Udemy

Велика колекція відеокурсів. Серед них безліч по ruby ​​і ruby ​​on rails. Немає сенсу наводити конкретні посилання - вибирайте на свій смак за ціною чи популярністю.

Формат Udemy передбачає досить короткі курси з акцентом на уроки відео. Не чекайте на серйозні домашні завдання або оперативну підтримку викладачів.

4. Ruby Бурса

Потужний короткостроковий курс з основ Rails розробки. Досвідчені викладачі, гарна програма.

На курсі бажано особисту присутність студента і проходить він лише у великих українських містах.

5. Розробка на Ruby on Rails від Злих Марсіан

Триденний інтенсив від однієї з найдосвідченіших у Росії Ruby on Rails команд.

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

6. Онлайн-інтенсив Ruby on Rails від «Хорошого програміста»

Свіжий проект від команди, відомої в Youtube своїми курсами з Ruby для новачків.

3-місячна інтенсивна програма розрахована на повних новачків і обіцяє зробити з вас junior програміста з портфоліо, не мало не мало, з 12 тлумачних додатків.

Курс складається з відео-уроків, практичних завдань, підтримки викладачів, регулярних вебінарів.

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

Головна перевага будь-якого веб-дизайнера – це бути в змозі зрозуміти – і навіть організувати – те, що відбувається «за лаштунками».

Принаймні вам слід взяти кілька уроків програмування. Я не говорю про мови front-end, типу HTML і CSS - ви, напевно, вже знаєте багато з цього матеріалу. Я говорю про back-end речі.

Якщо ви знаєте, як закласти фундамент, тоді ви зможете краще зрозуміти, як спроектувати решту сайту. Справа в тому, що вивчення програмування зробить із вас більш ерудованого дизайнера. Крім того, кому б не хотілося найняти дизайнера, який знає все від проектування до розробки сайту?

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

Отже, з чого найкраще розпочати? Відповідь одна: Ruby on Rails є однією з найкращих мов програмування та фреймворком для вивчення основ проектування.

Чому Ruby найкращий вибір?

Для початківців, Ruby є однією з найпростіших мов для засвоєння, особливо якщо у вас є деякий досвід написання HTML або CSS, який більшість дизайнерів є.

Однією з перших програм, яку ви зробите, починаючи вивчати якусь мову - це ганебний «Привіт світ!», який включає виведення цих слів на екран.

З мовами типу C ++, може бути десь від п'яти до семи рядків коду, щоб відобразити ці два слова. А ось якщо використовувати Ruby, там буде лише одна лінія та одна команда.

Puts "hello, world!"

От і все! Це все, що вам потрібно, щоб надрукувати слова "Привіт, мир!" на екрані. Досить легко, правда?

Ruby on Rails також дуже «суха» мова. Будучи одним із принципів розвитку, DRY (сухий) означає "Don't Repeat Yourself" (Не повторюйся!) - тобто, не програмуйте елемент знову, коли ви можете використовувати той, що ви вже створили. Це робить Ruby дуже легким і часто використовується для розробки мовою програмування, оскільки він націлений на швидке та ефективне виконання проекту.

Ruby чи Rails?

Ruby – це мова програмування. Rails – це фреймворк, який використовує Ruby, щоб виконати свою роботу. Фреймворк Ruby on Rails – це колекція збірних або попередньо написаного коду, що допомагає прискорити процес створення нових проектів. Спочатку він був створений, щоб розробити засіб управління проектами Basecamp. Крім Basecamp, є й інші популярні веб-програми, побудовані за допомогою Rails, як наприклад, 500px, ThemeForest і MyFitnessPal.

Як тільки ви зрозумієте, як працювати з мовою Ruby, і змусите матеріал працювати у фреймворку Ruby On Rails, ви зможете почати створювати веб-програми.

Ruby – на піку популярності!

Завдяки вибуху популярності мобільних пристроївта техніки, яка завжди на зв'язку, Ruby неймовірно популярний зараз. І, мабуть, так буде й надалі. Індекс TIOBE оцінює Ruby, як 13-у найпопулярнішу мову програмування. Відповідно до нових тенденцій, за даними Indeed.com, Ruby також відчуває на подив високий попит.

TIOBE Index

У будь-якому випадку, щоб ви не вибрали – попит чи популярність – Ruby досить популярний. Це робить його одним з найкращих місцьдля починання, тому що, як тільки ви розібралися в цій мові, ви можете отримати роботу досить швидко. І це перш ніж ви приступите до вивчення іншої мови, щоб розширити свої навички.

Ruby має надійну опору!

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

Завдяки фреймворку Ruby On Rails вже є тонни попередньо існуючого коду, який ви можете використовувати у власних проектах. Ruby Gems, бібліотека фреймворків Ruby, має понад 600 000 бібліотек, з яких можна вибрати потрібне.

Щоразу, коли ви вивчаєте щось нове, вам потрібно багато документації та підтримки. Є тонна місць, де можна знайти навчальні матеріали, підручники, інструкції і навіть Q & A форуми. Якщо ви зіткнулися з проблемою, простий веб-пошук, ймовірно, усуне її. Це важливо.

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

Ruby "допускає" більше контролю над дизайном

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

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

Ви не зіткнетеся з проблемами, подібного роду, якщо ви програмуватимете самі. Не обов'язково залежати від інших, щоб отримати закінчений проект, і ви будете краще розуміти, що може бути досягнуто з точки зору розробки. Звичайно, було раз чи два, коли цілі вашого проекту були надто високі для одного програміста чи команди розробників? Коли ви вивчаєте мову подібну до Ruby, ви можете насолоджуватися простотою розуміння потреб, і можливостей, з іншого боку.

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

Де вчитись Ruby?

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

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

Один з моїх улюблених ресурсів - і абсолютно безкоштовний - для навчання Rails - це Підручник Rails Майкла Хартла. Він проведе вас від простого до складного проекту у власному темпі навчання, і ви можете почати з самого початку абсолютно без знань Ruby on Rails.

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