Привіт, Світ! Вітаю, Світ! Здрастуй, Світ: від Rack до Sinatra і до Rails

Минулого тижня у Flatiron School ми вивчали веб-фреймворки (web frameworks) для Ruby. Ми розпочали тиждень із Rack, потім перейшли до Sinatra, а далі — до Rails. Все це за один тиждень! Три фреймворки за тиждень? Чому?

Sinatra та Rails обидва використовують Rack для автоматизації багатьох операцій розробки веб-сервісів. Основна причина вивчення всіх цих фреймворків — зрозуміти, що відбувається "під капотом". Адже спочатку потрібно навчитися повзати, потім ходити, а вже потім бігати!

Нижче я продемонструю базові кроки для кожного з фреймворків, щоб рендерити статичну сторінку з текстом “Hello World!”.

Початковий етап: Rack

Спершу пройдемо через налаштування Rack.

  1. Спочатку створюємо щось (наприклад, клас), що відповідатиме методу call.

  2. Метод call повинен повертати масив із трьома елементами:

  • Код статусу HTTP, наприклад 200
  • Хеш із ключем "Content-Type" і відповідним значенням, наприклад Text/HTML
  • Щось, наприклад масив, що відповідає each і містить тип "Content-Type"

Нижче приклад, як це може виглядати. Ми можемо створити це в my_server.rb:

require 'rack'class MyServer   
 def call  
 return [200, {"Content-Type" =>"plain/text"}, ["Hello World!"]]  
 end   
end

Потім потрібно створити файл rackup із кодом налаштування сервера. Цей файл має мати розширення .ru.

require_relative'./my_server'  
run MyServer.new

Запустіть цей код, виконавши в командному рядку:

$rackup file_name.ru

Перейшовши на кореневий URL ‘/’, ви побачите Hello World!, надруковане вашим веб-сервером!

Наступний крок: Sinatra

Далі подивимось, як Sinatra спрощує процес роботи з Rack.

pic

  1. Спочатку нам потрібен файл config.ru, щоб вказати Rack необхідні середовища та запустити застосунок. Файл може виглядати так:
require 'sinatra'  
require_relative'./app.rb'  
run Application
  1. config.ru вимагає валідного контролера Sinatra для запуску. Контролер Sinatra — це Ruby-клас, що наслідує від Sinatra::Base і забезпечує сумісний із Rack інтерфейс. Потім ми визначаємо HTTP-метод і маршрут у методі, наприклад:
class Application< Sinatra::Base  
 get'/' do  
 "Hello, World!"  
 end  
end

Після запуску локального сервера для тестування застосунку в браузері ви побачите Hello World! на кореневому URL ‘/’.

Це набагато простіше… Sinatra знає, як обробляти код статусу та тип контенту! Але йдемо далі!

Наступний рівень: Rails

pic

Тепер ми дійшли до Rails! Rails зосереджується на фреймворку MVC, щоб зробити процес ще ефективнішим. Розпочнемо, створивши проект Rails командою rails new hello_world.

  1. Налаштуємо маршрут, відкривши файл config/routes.rb і додавши такий маршрут у блок draw:
get '/hello_world', to: 'static#hello_world'
  1. Додамо новий контролер для нашої статичної сторінки, створивши новий файл у застосунку: app/controllers/static_controller.rb. Щоб використовувати методи, вбудовані в систему контролерів Rails, контролер буде наслідувати від application controller. Потім включимо відповідний маршрут як метод:
class StaticController  Hello World! 

Тепер ви побачите Hello World! за маршрутом /hello_world!

Висновок

Хоча і Sinatra, і Rails використовують Rack, Sinatra ідеально підходить для розуміння, як працюють HTTP-запити та маршрутизація, тоді як Rails краще підходить для автоматизації цих процесів.

Rails також стандартизує процес веб-розробки за допомогою фреймворку MVC. Це робить перехід до інших застосунків на Rails простим! Усе має своє місце, і ви завжди знатимете, де це знайти! Позбавляючи розробників від рутинної роботи, Rails дозволяє зосередитися на вирішенні більших проблем! І я з нетерпінням чекаю можливості дізнатися більше про Rails і побачити, куди це мене приведе!

Перекладено з: Hello World, Hey World, Hi World: From Rack to Sinatra to Rails

Leave a Reply

Your email address will not be published. Required fields are marked *