Вступ до фреймворку Rage: Сучасне, високопродуктивне рішення для Ruby

pic

У світі веб-розробки продуктивність і простота — це два ключові фактори, які розробники часто намагаються збалансувати. Коли мова йде про Ruby фреймворки, більшість розробників знайомі з Rails — фреймворком повного стека, який пропонує всеохоплююче рішення для веб-додатків. Однак з'явився новий гравець в екосистемі Ruby — Rage. Rage — це легкий, високопродуктивний Ruby фреймворк, призначений для API і мікросервісів. У цій статті ми розглянемо, що таке Rage, його основні функції та як він порівнюється з іншими фреймворками, такими як Rails.

Що таке Rage Framework?

Rage — це мінімалістичний, орієнтований на продуктивність Ruby фреймворк, який орієнтований на висококонкурентні додатки, такі як API та мікросервіси. Він побудований на сучасній моделі конкуренції, яка використовує fibers замість threads, що дозволяє ефективніше обробляти великомасштабні додатки з численними одночасними запитами. Хоча Rails відомий своєю багатофункціональністю та філософією “конвенція понад конфігурацію”, Rage пропонує спрощений, більш лаконічний підхід, ідеальний для розробників, які хочуть створювати швидкі та високопродуктивні додатки без накладних витрат повноцінного фреймворку.

Ключові характеристики Rage

  1. Конкуренція на основі Fiber:
  • Rage використовує модель конкуренції на основі Fiber в Ruby, що дозволяє ефективно обробляти тисячі одночасних з'єднань.
  • Це робить його відмінним вибором для додатків, орієнтованих на I/O (наприклад, API, веб-сервери).

2. Висока продуктивність:

  • Rage оптимізований для швидкості та може обробляти значно більше запитів на секунду в порівнянні з традиційними Ruby фреймворками, такими як Rails.

3. Легкий:

  • Rage мінімалістичний і не має важких абстракцій або накладних витрат, характерних для Rails. Це робить його ідеальним для мікросервісів і API, де не потрібна вся функціональність Rails.

4. Сумісність з Rack:

  • Rage сумісний з Rack, що дозволяє працювати з існуючим середовищем та інструментами Rack.

5. Зручний для розробників:

  • Незважаючи на орієнтацію на продуктивність, Rage прагне надати зручний досвід для розробників з чистим та інтуїтивно зрозумілим API.

6. Вбудована підтримка сучасних функцій Ruby:

  • Rage використовує сучасні функції Ruby, такі як патерн-матчинг, fibers і refinement.

Як Rage порівнюється з Rails

pic

Коли використовувати Rage

Rage — це відмінний вибір, коли:

  • Вам потрібна висока продуктивність і низька затримка.
  • Ви будуєте API або мікросервіси.
  • Ви хочете використовувати конкуренцію на основі Ruby’s Fiber.
  • Вам не потрібна вся функціональність Rails (наприклад, ActiveRecord, ActionMailer).

Як почати працювати з Rage

Ось приклад того, як налаштувати базовий додаток Rage:

  1. Встановіть Rage:
$ gem install rage-rb  
$ bundle
  1. Створіть простий додаток:
$ rage new my_app

**Запуск додатка:**

Запустіть сервер за допомогою:

rage s
```

Відвідайте http://localhost:3000, щоб побачити "It works!" у вашому браузері.

Приклад

Приклад контролера може виглядати так:

require "net/http"  

class PagesController < RageController::API  
 rescue_from SocketError do |_|  
 render json: { message: "error" }, status: 500  
 end  

 before_action :set_metadata  

 def show  
 page = Net::HTTP.get(URI("https://httpbin.org/json"))  
 render json: { page: page, metadata: @metadata }  
 end  

 private  

 def set_metadata  
 @metadata = { format: "json", time: Time.now.to_i }  
 end  
end

створіть маршрутизацію config/routes.rb

Rage.routes.draw do  
 get "page", to: "pages#show"  
end

перейдіть за посиланням http://localhost:3000/page

{  
 "page": "{\n \"slideshow\": {\n \"author\": \"Yours Truly\", \n \"date\": \"date of publication\", \n \"slides\": [\n {\n \"title\": \"Wake up to WonderWidgets!\", \n \"typeu003Cem\u003EWonderWidgets\u003C/em\u003E are great\", \n \"Who \u003Cem\u003Ebuys\u003C/em\u003E WonderWidgets\"\n], \n \"title\": \"Overview\", \n \"type\": \"all\"\n }\n ], \n \"title\": \"Sample Slide Show\"\n }\n}\n",  
 "metadata": {  
 "format": "json",  
 "time": 1738079537  
 }  
}

Тестування продуктивності

Rage створений для того, щоб перевершити традиційні Ruby фреймворки з точки зору кількості запитів на секунду (RPS) та затримки. Наприклад:

  • Rage може обробляти в 10 разів більше RPS порівняно з Rails за деякими тестами.
  • Модель конкуренції на основі Fiber зменшує накладні витрати та покращує масштабованість.

Обмеження Rage

  1. Екосистема:
  • Rage є відносно новим, тому його екосистема та спільнота менші порівняно з Rails.
  • Можливо, вам доведеться створювати більше з нуля або покладатися на сторонні бібліотеки.
  1. Крива навчання:
  • Якщо ви звикли до Rails, вам доведеться вивчити нові патерни та абстракції.
  1. Не є фреймворком повного стека:
  • Rage не призначений для додатків повного стека. Якщо вам потрібні такі функції, як серверне рендеринг, ActiveRecord або ActionMailer, Rails буде кращим вибором.

Висновок

Rage — це захоплюючий новий фреймворк для Ruby розробників, які потребують високої продуктивності та масштабованості. Він особливо підходить для API, мікросервісів та інших додатків, орієнтованих на I/O. Однак Rails залишається кращим вибором для додатків повного стека або проектів, що вимагають зрілої екосистеми.

Якщо ви зацікавлені у використанні Rage, перегляньте його GitHub репозиторій та документацію для отримання додаткової інформації!

Перекладено з: Introduction to the Rage Framework: A Modern, High-Performance Ruby Solution

Leave a Reply

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