Ruby
Ruby — це динамічна, інтерпретована, об’єктно-орієнтована мова програмування, відома простим і виразним синтаксисом, зручністю для розробника, активною екосистемою бібліотек і популярністю у веброзробці завдяки фреймворку Ruby on Rails.
Ruby часто використовують для вебзастосунків, автоматизації, скриптів, CLI-інструментів, прототипування, тестування, DevOps-задач і внутрішніх бізнес-систем.
Основна ідея: Ruby створений як мова, у якій код має бути зрозумілим, виразним і приємним для програміста.
Загальний опис
Ruby поєднує простий синтаксис із потужними можливостями об’єктно-орієнтованого програмування, блоків, ітераторів, модулів, metaprogramming і динамічної типізації.
Ruby використовується для:
- веброзробки;
- backend-застосунків;
- Ruby on Rails;
- API;
- скриптів;
- автоматизації;
- CLI-інструментів;
- тестування;
- DevOps-задач;
- data processing у невеликих сценаріях;
- прототипування;
- внутрішніх адміністративних систем.
Перевага: Ruby дозволяє швидко писати зрозумілий код і часто скорочує шлях від ідеї до робочого застосунку.
Історія Ruby
Ruby був створений Юкіхіро Мацумото, також відомим як Matz, у 1990-х роках. Мова проєктувалася з фокусом на зручність і продуктивність програміста.
Ruby увібрав ідеї з різних мов:
- Perl;
- Smalltalk;
- Lisp;
- Eiffel;
- Ada;
- CLU;
- Python.
Особливе поширення Ruby отримав після появи Ruby on Rails, який зробив мову популярною для швидкої веброзробки.
Важливо: Ruby став відомим не лише через саму мову, а й через культуру розробки, де цінується простота, читабельність і convention over configuration.
Ruby on Rails
Ruby on Rails або Rails — це популярний web framework для Ruby.
Rails використовується для створення:
- вебзастосунків;
- REST API;
- SaaS-продуктів;
- адміністративних панелей;
- маркетплейсів;
- CRM;
- e-commerce;
- внутрішніх бізнес-систем;
- MVP;
- стартап-продуктів.
Rails відомий принципами:
- Convention over Configuration;
- Don’t Repeat Yourself;
- швидка розробка;
- інтеграція з базами даних;
- генератори коду;
- Active Record;
- MVC-архітектура.
Практична роль: Ruby on Rails зробив Ruby одним із найпопулярніших інструментів для швидкого створення вебзастосунків.
Перша програма на Ruby
Класичний приклад:
puts "Hello, world!"
Запуск:
ruby hello.rb
У Ruby не потрібно явно оголошувати функцію `main`. Код у файлі виконується зверху вниз.
Суть прикладу: Ruby дозволяє писати простий код із мінімумом boilerplate.
Синтаксис
Ruby має виразний і компактний синтаксис.
Приклад:
name = "Alice"
age = 25
puts "Name: #{name}, age: #{age}"
Особливості синтаксису:
- немає обов’язкових крапок із комою;
- блоки можуть писатися через `do ... end` або `{ ... }`;
- усе є об’єктом;
- методи можна викликати без дужок;
- рядки підтримують interpolation;
- код часто читається майже як англійський текст.
Практична роль: синтаксис Ruby орієнтований на читабельність і швидке написання коду.
Змінні
Ruby має динамічну типізацію. Тип змінної не потрібно оголошувати явно.
Приклад:
count = 10
price = 19.99
name = "Alice"
active = true
Тип змінної визначається під час виконання.
Суть динамічної типізації: програміст швидше пише код, але частина помилок типів може проявитися лише під час виконання.
Типи даних
Основні типи в Ruby:
- `Integer`;
- `Float`;
- `String`;
- `Symbol`;
- `Array`;
- `Hash`;
- `Boolean`;
- `NilClass`;
- `Range`;
- `Regexp`;
- `Time`;
- `Class`;
- `Module`.
Приклад:
number = 42
text = "Ruby"
items = [1, 2, 3]
user = { name: "Alice", age: 25 }
nothing = nil
Практична роль: базові типи Ruby зручні для швидкої роботи з текстами, списками, словниками й об’єктами.
String
String — це рядок тексту.
Приклад:
name = "Alice"
message = "Hello, #{name}!"
puts message
Ruby підтримує string interpolation через `#{...}`.
Перевага: Ruby має зручні методи для роботи з рядками, що робить мову корисною для скриптів і текстової обробки.
Symbol
Symbol — це легкий ідентифікатор, який часто використовується як ключ у Hash або як назва.
Приклад:
status = :active
user = {
name: "Alice",
status: :active
}
Symbols часто використовуються в Rails, конфігураціях, DSL і API.
Порада: Symbol добре підходить для імен і ключів, які не потрібно змінювати як текст.
Array
Array — це впорядкований список елементів.
Приклад:
numbers = [1, 2, 3, 4, 5]
numbers.each do |number|
puts number
end
Методи Array:
- `each`;
- `map`;
- `select`;
- `reject`;
- `find`;
- `reduce`;
- `sort`;
- `uniq`;
- `compact`.
Практична роль: Array у Ruby має багато зручних методів для обробки колекцій.
Hash
Hash — це структура key-value.
Приклад:
user = {
name: "Alice",
age: 25,
active: true
}
puts user[:name]
Hash часто використовується для:
- конфігурацій;
- параметрів;
- JSON-подібних структур;
- API-відповідей;
- об’єктів без окремого класу;
- options у методах.
Практична користь: Hash зручний для роботи з даними, де важливо швидко отримувати значення за ключем.
Умови
Ruby має звичні умовні конструкції.
Приклад:
age = 20
if age >= 18
puts "Adult"
else
puts "Minor"
end
Також є коротка форма:
puts "Adult" if age >= 18
Суть умов: Ruby дозволяє писати як класичні, так і дуже компактні перевірки.
Цикли
Ruby підтримує різні способи повторення.
Приклад `while`:
count = 3
while count > 0
puts count
count -= 1
end
Але в Ruby частіше використовують ітератори:
3.times do |i|
puts i
end
Важливо: Ruby-код часто виглядає ідіоматичніше з `each`, `map`, `select` і `times`, ніж із класичними циклами.
Методи
Метод у Ruby оголошується через `def`.
Приклад:
def add(a, b)
a + b
end
puts add(2, 3)
Ruby повертає останній вираз методу автоматично, якщо немає явного `return`.
Суть методу: метод у Ruby може бути коротким і виразним, без зайвої службової конструкції.
Класи
Ruby є об’єктно-орієнтованою мовою. Класи створюються через `class`.
Приклад:
class User
def initialize(name)
@name = name
end
def greet
"Hello, #{@name}!"
end
end
user = User.new("Alice")
puts user.greet
У цьому прикладі:
- `User` — клас;
- `initialize` — конструктор;
- `@name` — instance variable;
- `greet` — метод об’єкта.
Практична роль: класи в Ruby використовуються для моделювання об’єктів, бізнес-логіки, сервісів і доменних сутностей.
Об’єкти
У Ruby майже все є об’єктом.
Приклади:
puts 10.class
puts "hello".class
puts [1, 2, 3].class
puts nil.class
Навіть числа, рядки й `nil` мають методи.
Суть Ruby OOP: Ruby послідовно застосовує об’єктну модель майже до всіх значень.
Instance variables
Instance variables зберігають стан конкретного об’єкта й починаються з `@`.
Приклад:
class Counter
def initialize
@value = 0
end
def increment
@value += 1
end
end
Практична роль: instance variables дозволяють об’єкту зберігати власний стан.
attr_reader, attr_writer і attr_accessor
Ruby має зручні помічники для доступу до полів.
Приклад:
class User
attr_reader :name
attr_accessor :email
def initialize(name, email)
@name = name
@email = email
end
end
- `attr_reader` створює getter;
- `attr_writer` створює setter;
- `attr_accessor` створює getter і setter.
Практична користь: ці методи зменшують boilerplate для доступу до даних об’єкта.
Modules
Module у Ruby використовується для групування методів, namespace або mixins.
Приклад namespace:
module MathUtils
def self.add(a, b)
a + b
end
end
puts MathUtils.add(2, 3)
Приклад mixin:
module Loggable
def log(message)
puts "[LOG] #{message}"
end
end
class Service
include Loggable
end
service = Service.new
service.log("Started")
Суть module: модулі дозволяють організовувати код і повторно використовувати поведінку без класичного множинного наслідування.
Mixins
Mixin — це спосіб додати методи модуля до класу.
У Ruby mixins часто використовуються замість множинного наслідування.
Приклад:
module Trackable
def track
puts "Tracked"
end
end
class Order
include Trackable
end
Order.new.track
Порада: mixins корисні для спільної поведінки, але надмірне використання може зробити походження методів неочевидним.
Blocks
Block — це фрагмент коду, який можна передати методу.
Приклад:
[1, 2, 3].each do |number|
puts number
end
Коротка форма:
[1, 2, 3].each { |number| puts number }
Blocks є однією з ключових особливостей Ruby.
Практична роль: blocks роблять Ruby дуже зручним для роботи з колекціями, DSL, callbacks і ресурсами.
Iterators
Ruby широко використовує ітератори.
Приклади:
numbers = [1, 2, 3, 4, 5]
doubled = numbers.map { |n| n * 2 }
even = numbers.select { |n| n.even? }
sum = numbers.reduce(0) { |acc, n| acc + n }
puts doubled.inspect
puts even.inspect
puts sum
Суть ітераторів: Ruby заохочує описувати, що зробити з колекцією, а не вручну керувати індексами.
Proc і Lambda
Proc і lambda дозволяють зберігати блок коду як об’єкт.
Приклад Proc:
printer = Proc.new { |message| puts message }
printer.call("Hello")
Приклад lambda:
multiply = ->(a, b) { a * b }
puts multiply.call(2, 3)
Практична роль: Proc і lambda корисні для callbacks, functional-style коду й передачі поведінки як даних.
Exception handling
Ruby використовує exceptions для обробки помилок.
Приклад:
begin
result = 10 / 0
rescue ZeroDivisionError => e
puts "Error: #{e.message}"
ensure
puts "Done"
end
Основні частини:
- `begin`;
- `rescue`;
- `ensure`;
- `raise`.
Важливо: exceptions потрібно використовувати для помилкових ситуацій, а не для звичайного flow control.
Nil
`nil` означає відсутність значення.
Приклад:
user = nil
if user.nil?
puts "No user"
end
Ruby має зручний safe navigation operator:
user&.name
Увага: `nil` є частим джерелом помилок, тому варто явно обробляти випадки відсутності значення.
Metaprogramming
Metaprogramming — це можливість програми створювати або змінювати код під час виконання.
Ruby підтримує metaprogramming через:
- `define_method`;
- `method_missing`;
- `send`;
- `class_eval`;
- `instance_eval`;
- dynamic dispatch;
- modules;
- hooks.
Приклад:
class User
[:name, :email].each do |field|
define_method(field) do
instance_variable_get("@#{field}")
end
end
def initialize(name, email)
@name = name
@email = email
end
end
Критично: metaprogramming дуже потужний, але надмірне використання може зробити код складним для читання, пошуку й debugging.
DSL
Ruby часто використовують для створення DSL — domain-specific language.
Приклади DSL у Ruby-екосистемі:
- Rails routes;
- RSpec tests;
- Rake tasks;
- Sinatra routes;
- configuration files;
- deployment scripts.
Приклад DSL-подібного синтаксису:
describe User do
it "has a name" do
expect(user.name).to eq("Alice")
end
end
Практична роль: Ruby добре підходить для DSL, тому що має гнучкий синтаксис, blocks і metaprogramming.
RubyGems
RubyGems — це система пакетів для Ruby.
Пакет у Ruby називається gem.
Gems використовуються для:
- web frameworks;
- database adapters;
- authentication;
- testing;
- background jobs;
- API clients;
- parsing;
- automation;
- deployment;
- logging;
- security.
Встановлення gem:
gem install rails
Практична роль: RubyGems дає доступ до великої екосистеми бібліотек Ruby.
Bundler
Bundler керує залежностями Ruby-проєкту.
Залежності описуються у файлі `Gemfile`.
Приклад:
source "https://rubygems.org"
gem "rails"
gem "pg"
gem "puma"
gem "rspec"
Встановлення залежностей:
bundle install
Практична користь: Bundler допомагає фіксувати версії бібліотек і робити середовище проєкту відтворюваним.
Gemfile.lock
Gemfile.lock фіксує точні версії встановлених gems.
Це потрібно для:
- відтворюваних builds;
- однакових версій у команді;
- стабільного deployment;
- зменшення ризику несподіваних оновлень;
- security audit.
Важливо: у застосунках `Gemfile.lock` зазвичай потрібно зберігати в системі контролю версій.
irb
irb або Interactive Ruby — це інтерактивна консоль Ruby.
Запуск:
irb
У `irb` можна:
- швидко перевіряти код;
- тестувати методи;
- експериментувати з синтаксисом;
- перевіряти об’єкти;
- навчатися Ruby.
Практична роль: irb зручний для швидких експериментів і навчання Ruby.
pry
pry — популярна альтернативна консоль і debugging tool для Ruby.
Pry використовується для:
- інтерактивного debugging;
- inspecting об’єктів;
- перегляду методів;
- зупинки виконання;
- експериментів у runtime.
Перевага: pry часто зручніший за стандартний irb для debugging і дослідження коду.
rbenv і RVM
rbenv і RVM — інструменти для керування версіями Ruby.
Вони дозволяють:
- встановлювати різні Ruby versions;
- перемикатися між версіями;
- мати окремі версії для проєктів;
- відтворювати середовище;
- тестувати сумісність.
Порада: для командних проєктів варто явно фіксувати версію Ruby, наприклад у `.ruby-version`.
Rake
Rake — це build automation tool для Ruby.
Rake використовується для:
- задач збірки;
- міграцій;
- тестів;
- імпорту даних;
- автоматизації;
- скриптів підтримки;
- deployment tasks.
Приклад `Rakefile`:
task :hello do
puts "Hello from Rake"
end
Запуск:
rake hello
Практична роль: Rake дозволяє описувати повторювані задачі Ruby-синтаксисом.
Active Record
Active Record — це ORM, який став популярним завдяки Ruby on Rails.
Active Record дозволяє працювати з таблицями бази даних як з Ruby-об’єктами.
Приклад:
user = User.find(1)
user.email = "alice@example.com"
user.save
Active Record використовується для:
- моделей;
- міграцій;
- асоціацій;
- validations;
- database queries;
- persistence;
- callbacks.
Практична роль: Active Record зменшує кількість ручного SQL у типових вебзастосунках.
Sinatra
Sinatra — легкий Ruby-фреймворк для вебзастосунків.
Приклад:
require "sinatra"
get "/" do
"Hello from Sinatra"
end
Sinatra підходить для:
- невеликих вебсервісів;
- API;
- прототипів;
- webhooks;
- internal tools;
- простих backend-застосунків.
Висновок: Rails підходить для повноцінних вебзастосунків, а Sinatra — для легших і простіших сервісів.
Тестування
Ruby має сильну культуру тестування.
Популярні інструменти:
- RSpec;
- Minitest;
- Capybara;
- FactoryBot;
- SimpleCov;
- Shoulda Matchers;
- VCR;
- WebMock.
Приклад Minitest:
require "minitest/autorun"
def add(a, b)
a + b
end
class AddTest < Minitest::Test
def test_add
assert_equal 5, add(2, 3)
end
end
Перевага: Ruby-екосистема має зрілі інструменти для unit, integration і acceptance testing.
RSpec
RSpec — популярний testing framework для Ruby.
Приклад:
RSpec.describe User do
it "has a name" do
user = User.new("Alice")
expect(user.name).to eq("Alice")
end
end
RSpec відомий DSL-стилем, який читається майже як опис поведінки.
Практична роль: RSpec зручний для behavior-driven testing і добре інтегрується з Rails-проєктами.
RuboCop
RuboCop — linter і formatter для Ruby.
RuboCop допомагає:
- підтримувати стиль коду;
- знаходити типові помилки;
- автоматично виправляти частину проблем;
- контролювати complexity;
- перевіряти Rails-specific правила;
- стандартизувати код у команді.
Запуск:
rubocop
Практична користь: RuboCop допомагає підтримувати єдиний стиль Ruby-коду в команді.
Web development
Ruby найбільш відомий у web development завдяки Rails.
Ruby у веброзробці використовується для:
- backend;
- REST API;
- monolith applications;
- SaaS;
- admin panels;
- e-commerce;
- marketplaces;
- startup MVP;
- internal business tools.
Типовий стек:
- Ruby;
- Ruby on Rails;
- PostgreSQL;
- Redis;
- Sidekiq;
- Puma;
- Nginx;
- Hotwire або React/Vue;
- RSpec;
- Docker.
Практична роль: Ruby on Rails особливо сильний для швидкого створення бізнес-застосунків із базою даних, авторизацією, формами й адміністративною логікою.
Background jobs
У Ruby/Rails часто використовують background jobs.
Популярні інструменти:
- Sidekiq;
- Resque;
- Delayed Job;
- GoodJob;
- Active Job.
Background jobs потрібні для:
- email-розсилок;
- імпорту даних;
- генерації звітів;
- обробки файлів;
- webhook processing;
- scheduled tasks;
- інтеграцій;
- довгих операцій.
Важливо: довгі або нестабільні задачі не варто виконувати прямо в web request. Їх краще переносити в background jobs.
Ruby і DevOps
Ruby використовується в DevOps і infrastructure automation.
Приклади:
- Chef;
- Puppet;
- deployment scripts;
- Rake tasks;
- automation tools;
- log processing;
- internal scripts;
- CI utilities.
Практична роль: Ruby добре підходить для автоматизації, якщо потрібен читабельний скрипт із доступом до багатої екосистеми gems.
Ruby і Python
Ruby часто порівнюють із Python.
| Критерій | Ruby | Python |
|---|---|---|
| Основний стиль | Виразний, об’єктно-орієнтований, DSL-friendly | Простий, явний, універсальний |
| Веброзробка | Дуже сильний Rails | Django, Flask, FastAPI |
| Data science / AI | Обмежена екосистема | Дуже сильна екосистема |
| Скрипти | Зручний | Дуже популярний |
| Культура | Developer happiness, convention over configuration | Readability, explicitness, broad ecosystem |
Висновок: Ruby часто обирають для Rails і виразного backend-коду, Python — для ширшого спектра задач, особливо data science, AI й automation.
Ruby і JavaScript
Ruby і JavaScript часто зустрічаються разом у web development.
| Критерій | Ruby | JavaScript |
|---|---|---|
| Основна роль | Backend, Rails, scripts | Frontend, Node.js, full-stack |
| Виконання | Server-side runtime | Browser і Node.js |
| Веб | Rails backend | React, Vue, Angular, Node.js |
| Синтаксис | Виразний і DSL-friendly | Event-driven і browser-native |
Практичний висновок: Ruby часто відповідає за backend, а JavaScript — за frontend, хоча обидві мови можуть використовуватися ширше.
Ruby і PHP
Ruby on Rails часто порівнюють із PHP-фреймворками.
| Критерій | Ruby / Rails | PHP / Laravel |
|---|---|---|
| Основна роль | Швидка веброзробка | Швидка веброзробка |
| Культура | Convention over configuration | Developer-friendly web framework ecosystem |
| Deployment | Може бути складнішим для початківців | Часто простіший на shared hosting |
| Екосистема | Rails, gems | Laravel, Composer, широка hosting-підтримка |
Висновок: Rails і Laravel мають схожий фокус на продуктивності веброзробника, але належать до різних мовних екосистем.
Ruby і Java
Ruby і Java мають різну філософію.
| Критерій | Ruby | Java |
|---|---|---|
| Типізація | Динамічна | Статична |
| Синтаксис | Компактний | Більш формальний |
| Швидкість розробки | Дуже висока для вебзастосунків | Висока в enterprise-екосистемі, але більше boilerplate |
| Runtime | Ruby VM | JVM |
| Enterprise | Є, але менше за Java | Дуже сильна enterprise-екосистема |
Висновок: Ruby часто обирають за швидкість і виразність, Java — за масштабну enterprise-екосистему, типізацію й JVM-інфраструктуру.
Переваги Ruby
Основні переваги Ruby:
- читабельний синтаксис;
- висока продуктивність розробника;
- Ruby on Rails;
- потужні blocks;
- зручні collections;
- активна gem-екосистема;
- DSL-friendly стиль;
- metaprogramming;
- хороша культура тестування;
- швидке прототипування;
- зручність для MVP;
- developer happiness;
- гнучкість.
Головна перевага: Ruby дозволяє швидко писати виразний і зрозумілий код, особливо для вебзастосунків і бізнес-логіки.
Обмеження Ruby
Ruby має обмеження.
Можливі проблеми:
- нижча продуктивність порівняно з C, Rust, Go або Java в CPU-bound задачах;
- динамічна типізація може приховувати помилки до runtime;
- великі Rails-проєкти можуть ставати складними;
- metaprogramming може ускладнювати debugging;
- залежність від gems потребує security control;
- менша популярність у AI/Data Science;
- concurrency має свої особливості;
- startup time може бути важливим для деяких сценаріїв.
Помилка: вважати Ruby повільним або непридатним для бізнесу лише через стереотипи. Для багатьох вебзастосунків продуктивність розробки важливіша за максимальну швидкість виконання.
Коли варто використовувати Ruby
Ruby добре підходить для:
- Ruby on Rails застосунків;
- SaaS;
- MVP;
- внутрішніх бізнес-систем;
- адміністративних панелей;
- API;
- e-commerce;
- маркетплейсів;
- automation scripts;
- DevOps-скриптів;
- тестових DSL;
- швидкого backend-прототипування.
Практична порада: Ruby варто обирати, коли важливі швидкість розробки, зрозуміла бізнес-логіка, Rails-екосистема й хороша культура тестування.
Коли Ruby може бути невдалим вибором
Ruby може бути не найкращим вибором для:
- high-performance CPU-bound систем;
- embedded;
- системного програмування;
- realtime low-latency задач;
- mobile native development;
- великих AI/ML pipeline;
- проєктів, де вся команда працює в іншому стеку;
- задач, де потрібна сильна статична типізація з першого дня.
Важливо: Ruby сильний у своїй ніші, але не є універсальним вибором для всіх видів програмного забезпечення.
Безпека Ruby-застосунків
Ruby і Rails-застосунки потребують звичайних практик безпеки.
Потрібно контролювати:
- dependency vulnerabilities;
- SQL injection;
- XSS;
- CSRF;
- mass assignment;
- unsafe deserialization;
- secrets;
- session security;
- authentication;
- authorization;
- background jobs;
- file uploads;
- logging sensitive data.
Критично: Rails має багато захисних механізмів, але неправильний код, небезпечні gems або помилки доступів все одно можуть створювати вразливості.
Приватність даних
Ruby-застосунки часто працюють із користувацькими й бізнес-даними.
Необхідно контролювати:
- персональні дані;
- паролі;
- токени;
- API keys;
- cookie secrets;
- session data;
- email;
- файли користувачів;
- logs;
- backups;
- third-party gems;
- background job payloads.
Правило: секрети не повинні зберігатися в коді, Git-репозиторії або відкритих логах.
Хороші практики Ruby
Рекомендовано:
- писати прості методи;
- уникати надмірного metaprogramming;
- використовувати Bundler;
- фіксувати версії залежностей;
- писати тести;
- запускати RuboCop;
- перевіряти security advisories;
- не ігнорувати `nil`;
- не робити занадто великі класи;
- використовувати service objects там, де це доречно;
- логувати помилки;
- не зберігати secrets у коді;
- підтримувати зрозумілу структуру проєкту;
- регулярно оновлювати gems.
Головне правило: хороший Ruby-код має бути читабельним, простим, протестованим і без зайвої магії.
Типові помилки початківців
Поширені помилки:
- плутанина між String і Symbol;
- надмірне використання monkey patching;
- ігнорування `nil`;
- занадто великі класи;
- слабка обробка exceptions;
- залежність від глобального стану;
- відсутність тестів;
- неправильне використання blocks;
- непотрібне metaprogramming;
- незафіксовані версії gems;
- ігнорування performance проблем у запитах до бази;
- N+1 queries у Rails;
- логування секретів.
Небезпека: Ruby дозволяє писати дуже гнучкий код, але без дисципліни ця гнучкість може перетворитися на складну для підтримки “магію”.
Приклади задач на Ruby
Обробка списку
numbers = [1, 2, 3, 4, 5]
squares = numbers.map { |number| number * number }
puts squares.inspect
Фільтрація даних
users = [
{ name: "Alice", active: true },
{ name: "Bob", active: false },
{ name: "Carol", active: true }
]
active_users = users.select { |user| user[:active] }
puts active_users.inspect
Клас сервісу
class PriceCalculator
def initialize(price, tax_rate)
@price = price
@tax_rate = tax_rate
end
def total
@price + (@price * @tax_rate)
end
end
calculator = PriceCalculator.new(100, 0.2)
puts calculator.total
Проста обробка помилки
def read_file(path)
File.read(path)
rescue Errno::ENOENT
"File not found"
end
puts read_file("missing.txt")
Rake task
task :report do
puts "Generating report..."
end
Підказка: Ruby-код часто стає кращим, коли використовує колекції, blocks і маленькі методи замість довгих процедур.
Джерела
- Офіційний сайт Ruby.
- Ruby Documentation.
- Ruby on Rails Guides.
- RubyGems Documentation.
- Bundler Documentation.
- RSpec Documentation.
- Minitest Documentation.
- RuboCop Documentation.
- Sinatra Documentation.
- Active Record Documentation.
- Документація rbenv і RVM.
Висновок
Ruby — це динамічна об’єктно-орієнтована мова програмування, яка робить акцент на читабельності, виразності й продуктивності розробника. Вона особливо відома завдяки Ruby on Rails, який став одним із найвпливовіших web frameworks для швидкого створення бізнес-застосунків.
Ruby добре підходить для веброзробки, MVP, SaaS, API, автоматизації, скриптів, тестування й внутрішніх бізнес-систем. Водночас для системного програмування, embedded, AI/ML або дуже високопродуктивних CPU-bound задач зазвичай краще підходять інші мови.
Головна думка: Ruby — це мова для швидкої, виразної й зручної розробки, особливо у вебі, але її гнучкість потребує дисципліни, тестів і хорошої архітектури.
Див. також
- Програмування
- Мова програмування
- Ruby on Rails
- Rails
- Backend
- Web development
- API
- MVC
- Active Record
- Gem
- RubyGems
- Bundler
- RSpec
- Sinatra
- Python
- JavaScript
- PHP
- Java
- Налагодження коду
- Логування
- Бізнес-логіка
- Безпека застосунків