Ruby on Rails
Heroku - позволяет Деплоить приложение одной строкой в консоли
В моделях RoR можно указывать атрибуты has_many и depends_on и потом в консоли (rails console) использовать что-то вроде ORM.
rspec - библиотека для тестирования Capybara - DSL для тестирования
Генерация контроллера: rails generate controller StaticPages home help
Генерация теста: rails generate integration_test static_pages
ERB = Embedded Ruby
Дефолтный шаблон (Master Page) хранится в view/layouts/application.html.erb. Он содержит команду <%=yield%>, которая вставляет содержимое дочерней страницы. Команда csrfmetatags предотвращает подделку межсайтовых запросов.
'' отличается от "" тем, что внутри '' не нужно экранировать спецсимволы
Интерполяция:
name = "bar"
puts "foo #{name}"
#foo bar
name.empty? - вопросительный знак в конце это просто соглашение для булевых методов
Есть метод nil?
unless = "Если-не"
Все объекты кроме nil равны true, nil == false.
return использовать необязательно, при его отсутствии будет возвращен результат выполнения последнего оператора
a = [42,8,17]
puts a.sort #[8,17,42]
puts a #[42,8,17]
a.sort! # бэнг-метод изменяет исходный массив
puts a #[8,17,42]
Добавлять в массив можно методом push или оператором <<
a.push 6
a << 7
Помимо массивов есть диапазоны. Пример диапазона: (0..9)
Преобразование диапазона в массив:
(0..9).to_a
Можно использовать диапазоны для доступа к массиву:
a = %w[foo bar baz quux]
=> ['foo','bar','baz', 'quux']
a[0..2]
=> ['foo','bar','baz']
a[2..-1] - От второго и до конца
Блоки - это лямбды.
(1..5).each{|x| puts 2*x}
=> 2 4 6 8 10
Способ без фигурных скобок:
(1..5).each do |x|
puts 2 * x
end
Хэши (словари)
d = {}
d["name"] = "Ivan"
a = { "name" => "Yury", "surname" => "Timofeev" }
a["email"]
=> nil
Знак => называется hashrocket
Символы
:title - символ
О символах можно думать как о строках без дополнительного багажа
Начиная с Ruby 1.9 введен новый синтаксис для хэшей с символами:
h1 = { :name => "Ivan", :last_name => "Petrov" }
h2 = { name: "Ivan", last_name: "Petrov" }
h1 == h2
=> true
Метод inspect() возвращает буквальное представление объекта Есть даже специальная функция p, где p :name == puts :name.inspect
Когда хэш - последний аргумент в вызове функции, фигурные скобки вокруг его обьявления необязательны.
base64 так называется, потому что его алфавит имеет длину 64: a-z, A-Z, 0-9, -, длинное тире
В Ruby есть оператор ||=, он по аналогии оператору += аналогичен записи x = x || y