Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time

rubyschool

Rubyschool.us list of contents (Russian)

полезные ссылки: -регулировка скорости видео на Vimeo (расширение для Chrome) https://goo.gl/C78s5P

Урок 1

  • что такое Ruby
  • что такое Ruby on Rails
  • настраиваем окружение
  • устанавливаем программы

Примечание: Установить файловый менеджер far: Windows Linux

Если планируете перейти на Linux, то необходимо выбрать Linux Mint Cinnamon (English)

RubyInstaller это ruby-окружение для Windows

Урок 2

  • puts, print, gets. #, \n
  • переменные
  • специальные символы
  • .chomp, .to_i, .to_s

Урок 3

  • irb
  • типы данных: string, fixnum, float, integer
  • class, array. Hash
  • задача про сопротивление (закон Ома)
  • преобразование типов данных (to_i переводим в to_s)

Урок 4

  • интерполяция строк - #{}
  • поддержка русского языка в Windows (#encoding: 866 + ANSI)
  • удаление символа (.chomp!)
  • методы
  • пайпы ||
  • задачи на преобразование типов и интерполяцию строк
  • дз: вывести числа 1..10, определить чётные и нечётные

Урок 5

  • методы (продолжение): upto, capitalize, strip, whitespace
  • \n \t \r
  • .times (считает от 0)
  • .upto (считает от 1)
  • задача: вывести на экран ряд цифр с помощью upto
  • задача: “Привет #{name}, в вашем имени #{name.length} букв”

Урок 6

  • блоки
  • sleep, .times, do...end, rand
  • задания про upto, times, sleep
  • задача: рассчитать накопления (сколько будем откладывать и сколько месяцев)
  • formating disk, Matrix
  • дз: доделать задачу про накопления

Урок 7

  • if...end, операторы сравнения, exit
  • задача: алгоритм "вы довольны зарплатой?" (Да/Нет)
  • задача: посчитать, сколько гостей придёт
  • задача: сделать игру "однорукий бандит"

Урок 8

  • 1_000_000
  • калькулятор
  • if/else
  • задача: игра - угадываем число
  • break, while true, ranges, each
  • разница между .. и ...
  • rand

Урок 9

  • функции и методы (def)
  • глобальные переменные (@)
  • символы (:)
  • массивы, добавление в массивы

Урок 10

  • инициализация массивов (продолжение)
  • задачи: двигаем робота, удаляем/добавляем учеников в список
  • loop do

Урок 11

  • разбор дз камень-ножницы-бумага
  • хэши (hash)

Урок 12

  • отличия хэшей от массивов
  • задача: создаем словарик
  • задача: переделываем “однорукого бандита” с использованием хэшей
  • функции (описание и их вызов)
  • дз: “Tic-Tac-Toe” (крестики-нолики)

Урок 13

  • повторяем хэши
  • использование if в одну строку
  • merge
  • сохранение в файл >, >>
  • немного об HTML

Урок 14

  • введение в ООП
  • классы
  • объекты
  • attr_reader, attr_accessor

Урок 15

  • задачи с классами: самолеты и аэропорты, альбомы и песни
  • наследование
  • дз: сделать программу с классами Artist - Album - Song

Урок 16

  • статические методы
  • lambda-функции
  • yield
  • наследование
  • типы переменных

Урок 17

  • мета-программирование (send)
  • чтение и запись в файлы
  • получение списка папок и файлов в каталогах

Урок 18

  • GET/POST запросы
  • задача: программа для подбора пароля

Примечание: Для 18 урока используйте докер-контейнер, который устанавливается командой: docker rm xxx; docker run -it --name xxx -p 4567:4567 ro31337/rubybook-save-the-world После этого у вас будет доступен локальный сервер по адресу http://localhost:4567

Если непонятно, что написано, то читаем ниже:

  • скачиваешь программу Docker, устанавливаешь
  • из консоли запускаешь команду - вот эту длинную, что на сайте rubyschool.us (см.сноску для 18 урока). Если ты на винде, то запускай по отдельности то, что разделено точкой с запятой (даже если дает ошибку): docker rm xxx, потом docker run -it --name xxx -p 4567:4567 ro31337/rubybook-save-the-world
  • что-то качается и у тебя будет доступен адрес из браузера http://localhost:4567

Урок 19

  • установка DevKit на Windows
  • установка Sinatra
  • Helloworld на Синатре

Урок 20

  • установка и работа с Git
  • установка Ungit на Windows
  • продолжение работы с Sinatra

Урок 21

  • ещё немного HTML-разметки
  • основы CSS
  • Bootstrap
  • установка готового небольшого приложения Sinatra с включенным Bootstrap'ом

Урок 22

  • Рома создает репозиторий. а все копируют себе
  • ещё немного теории по git
  • доделываем приложение BarberShop для записи к парикмахеру (теперь уже с использованием Bootstrap)

Урок 23

  • доработка приложения BarberShop
  • немножко JS, jQuery
  • делаем colorpicker при помощи jQuery плагина

Урок 24

  • немного подробнее о коде из предыдущего jQuery плагина и просто JS и jQuery
  • валидация
  • сохранение значений в полях формы

Урок 25

  • настройка git для пушей без запроса пароля (по ключу ssh)
  • установка SQLite3
  • немного про синтаксис SQL
  • создание БД и таблиц

Урок 26

  • связываем приложение BarberShop с SQLite
  • устанавливаем datetimepicker
  • выборка из БД, вывод информации

Примечание: Для работы datetimepicker необходимо использовать файл builder\jquery.datetimepicker.full.js

Урок 27

  • разбираем домашнее задание
  • выводим из БД в веб (в таблицу)
  • создаем вторую таблицу, добавляем туда значения
  • делаем выборку из БД, заносим в выпадающее меню

Урок 28

  • повторение
  • новое приложение-блог (Leprosorium)
  • прием параметра из ссылки

Примечание: Если Win10x64 выдает: `require': cannot load such file -- sqlite3/sqlite3_native (LoadError) Нужно выполнить в консоли gem uninstall sqlite3 --all gem install sqlite3 --platform=ruby

Урок 29

  • введение в ActiveRecord
  • rake
  • tux
  • migrations

Урок 30

  • продолжение ActiveRecords
  • валидация при помощи ActiveRecord

Урок 31

  • общая инфа по HTTP и запросам
  • javascript

Урок 32

  • повторение материала про классы
  • работаем с localstorage
  • создаём магазин пиццы
  • разбираем вопросы, которые могут задавать на интервью при приёме на работу

Урок 33

  • продолжаем разбор вопросов, которые могут задавать на интервью при приёме на работу
  • немного про yield
  • пишем PizzaShop

Урок 34

  • небольшое объяснение про операторы для краткой записи операций x += 1; x ||= 1

  • продолжаем делать pizzashop (javascript)

  • устанавливаем Rails

  • объяснение структуры Rails

  • *Примечание: Если при запуске rails приложения выходит ошибка со следующим текстом

Puma caught this error: Error loading the 'sqlite3' Active Record adapter. Missing a gem it depends on? can't activate sqlite3 (~> 1.3.6), already activated sqlite3-1.4.0. Make sure all dependencies are added to Gemfile. (LoadError)

Необходимо в gemfile исправить следующeю строку: gem 'sqlite3' на gem 'sqlite3', '< 1.4'

Урок 35

  • ещё разбор вопросов, которые могут задавать на интервью при приёме на работу
  • разбираем тесты, представленные на Odesk
  • продолжаем писать PizzaShop

Урок 36

  • краткое объяснение REST
  • анализ написанного приложения

Урок 37

  • введение в pull-реквесты
  • разбираем задачи с собеседования
  • настройка отступов в Sublime text
  • запускаем Rails
  • режимы запуска Rails
  • генераторы Rails
  • создаем контроллер
  • создаем модель

Урок 38

  • разбираем задачи на интервью
  • повторение
  • разбираем REST маршруты
  • сравнениваем resource и resources

Урок 39

  • создаем основные контроллеры (по REST) для сущности articles
  • создаем статичные страницы в RoR

Урок 40

  • удаление статей
  • атрибуты тегов data- (turbolinks)
  • небольшой рассказ про render
  • отношения one-to-many
  • создаем форму для комментариев

Урок 41

  • про типы связей (many-to-many, one-to-many, one-to-one)
  • задача: доделать блог до минимального функционала (CRUD)
  • полезные сервисы для веб-разработки
  • rspec и тесты
  • пишем пару простых тестов

Урок 42

  • матчеры для тестов
  • пишем тест, закрывающий баги на github
  • devise: установка, минимальная настройка, создание ссылок для входа-выхода
  • Примечание: начиная с Rails 5 синтаксис before_filter устарел и заменён на before_action

Урок 43

  • делаем ссылки входа, выхода и т. п. с помощью devise

  • сессии и куки

  • чуть-чуть про json

  • добавляем поля username в devise

  • настраиваем блог для поля username

  • *Примечание: в devise начиная с версии 4 параметры Sanitizer Api изменились, используйте вместо этого:

  devise_parameter_sanitizer.for(:sign_up) << :username

это:

  devise_parameter_sanitizer.permit(:sign_up, keys: [:username])

Урок 44

  • “интервью” с другом Романа - Алексеем. Вопросы про Odesk (Upwork) и в целом про ruby и программирование
  • bootstrap
  • основы responsive-дизайна

Урок 45

  • принцип работы метода params в контроллерах (используется для приёма параметров через post)
  • разница между render и redirect_to
  • разница между before_filter и before_action
  • немного про хелперы
  • continuous integration и continuous delivery (CI и CD)
  • немного про vagrant

Урок 46

  • тестируем модели
  • устанавливаем rspec в приложение blog (и capybara)
  • устанавливаем shoulda-matchers
  • устанавливаем FactoryGirl: простейшая настройка, создание фабрики, тестирование
  • создаем фабрику с автоматическим назначением значений полей
    • Примечание: в gem Rake начиная с версии 11 отсутствует метод "last_comment", этот метод используется в rspec-rails поэтому если вы используете свежую версию Rake не используйте старую версию rspec-rails. Для этого впишите в Gemfile rspec-rails без версии, и тогда bundle install подтянет сразу новую версию.
group :development, :test do
  gem 'capybara'
  gem 'rspec-rails'
end
    • Примечание 2: когда вы будете использовать Shoulda Matchers его нужно будет настроить, для этого в сгенерированной rails_helper.rb при запуске rails g rspec:install (rspec-rails в версии от 3.0) добавьте
Shoulda::Matchers.configure do |config|
  config.integrate do |with|
    with.test_framework :rspec
    with.library :rails
  end
end

подробности http://matchers.shoulda.io/docs/v3.1.1/index.html в файл с тестом вместо

  require 'spec_helper'

добавьте

  require 'rails_helper'

require 'support/factory_girl'

    • Примечание 3: При настройке Factory_girl в rspec-rails старше 3.0 нужно добавить строчку в rails_helper
  require 'support/factory_girl'

Урок 47

  • понятие о приёмочном тестировании (acceptance testing)
  • пишем тест для capybara
  • понятие о i18n (internationalization)
  • применение i18n в capybara
  • before и after hooks
    • Примечание: ссылка на capybara изменилась теперь: https://github.com/teamcapybara/capybara#using-capybara-with-rspec , для её настройки согласно документации нужно добавить в ваш файл rails_helper строчку (в rspec_helper для старых версий), хотя работает и без этой строки.
  require 'capybara/rspec'

Урок 48

  • Scaffolding (генерация модели, вида и контроллера одной командой)
  • недостатки скаффолдинга
  • создание небольшого приложения при помощи скаффолдинга
  • кратко про отправку имейлов

Урок 49

  • полиморфные ассоциации (краткое объяснение что это такое и создание небольшого примера)
  • паттерны
  • Singleton. Разбор на примере.
  • типы переменных в классе, принадлежащие экземпляру класса и классу

Урок 50

  • регулярные выражения