💎 Ruby

Типы, операторы, циклы, методы, коллекции и гемы по задачам.

Шпаргалки · Программирование · #ruby #rails

IDE и запуск

RubyMine, VS Code. ruby app.rb, интерактив irb. Пакеты: gem (gem install x), Bundler (bundle install, Gemfile).

Типы данных

Тип Пример
Integer, Float 42, 3.14
String 'a', "x=#{x}"
Symbol :name
Array, Hash, Range [1], {a: 1}, 1..5
true, false, nil всё, кроме nil и false, истинно

Операторы

+ - * / % **, == != <=>, && || ! (и and or not), ||=, &. (безопасный вызов), .. / ....

Циклы

3.times { |i| puts i }
[1, 2].each { |x| puts x }
(1..5).each_with_index { |x, i| }
while cond; end
for x in arr do end

Методы

def add(a, b = 0) = a + b
square = ->(x) { x * x }
def hello(name:, greeting: 'Hi') = "#{greeting}, #{name}"

Встроенные

puts, p, gets, require, rand, sleep, Integer('5'), .to_s, .to_i, .nil?, .empty?, .freeze.

Асинхронность

Потоки Thread.new { }, Ractor, Fiber, гем async, фоновые задачи Sidekiq.

Коллекции

a = [3, 1, 2]
a.map { |x| x * 2 }.select(&:even?).sum
a.sort.reverse; a.sort_by { |x| -x }; a.group_by(&:odd?)
h = {a: 1}; h.fetch(:b, 0); h.transform_values { |v| v + 1 }

Гемы по задачам

Rails, Sinatra (веб), Sidekiq (фон), RSpec / Minitest (тесты), Rubocop (линтер), Nokogiri (HTML/XML), Devise (авторизация), Faraday (HTTP).