SlideShare a Scribd company logo
1 of 34
Download to read offline
RUBY
Интерпретируемый, динамичный, человеколюбивый
ФИЛОСОФИЯ RUBY
твой путь — твои решения
• Принцип наименьшей неожиданности
• Минимальное время не исполнения
программы, но разработки
• Множество возможных путей решения задачи
• Просто, но не примитивно
• Программы должны писаться так, чтобы их
понимал человек, и лишь иногда - машина
ОБЪЕКТНАЯ МОДЕЛЬ РУБИ
вместо Адама — BasicObject
ВСЕ ОЧЕНЬ ХОРОШО!
• Нет примитивных типов
• Каждый объект - экземпляр
класса
• Нет абстрактных классов
• Нет множественного
наследования
• Mixins предпочтительней
наследования
• Утиная типизация
Класс - это конструктор
объектов (экземпляров
класса, instances of class).
Но и сам класс - это
объект в цепочке
этих конструкторов!
Модуль — это именованная группа, которая содержит методы,
которые можно подмешивать к
КлассуОбъекту
МОДУЛИ (КОНТЕЙНЕРЫ МЕТОДОВ)
ПОЛЬЗОВАТЕЛЬСКИЕ КЛАССЫ
ОСОБЕННОСТИ СИНТАКСИСА
минимум управляющих конструкций
БАЗОВЫЕ ОПЕРАЦИИ
БАЗОВЫЕ КЛАССЫ
String, Symbol, Numeric, Hash,Array
STRING
SYMBOL
NUMERIC
ARRAY
HASH
ENUMERATORS
РЕГУЛЯРНЫЕ ВЫРАЖЕНИЯ
http://rubular.com/
МЕТАПРОГРАММИРОВАНИЕ
Создаем магию вместе с Ruby DSL
БЛОКИ
Proc и lambda:
блоки с отложенным выполнением
Proc lambda
DSL
https://github.com/p0deje/watirsome
НЕКОТОРЫЕ ДИНАМИЧЕСКИЕ
ВКУСНОСТИ
define_method:
method_missing:
const_set:
EXCEPTIONS
• gem install rails => установить конкретный gem
• gem list => получить список всех gems
• …
В консоли:
В приложении:
• require ‘rails’ => подключить rails gem
БИБЛИОТЕКИ (GEMS)
• rvm, rbenv — это системы управления версиями ruby
• bundler — это система управления пакетами (gems) ruby.
RBENV, RMV, BUNDLER
СРЕДА РАЗРАБОКИ
https://github.com/bbatsov/ruby-style-guide
RUBY STYLE GUIDE
ВО СЛАВУ RUBY!
ИЗВЕСНЫЕ ПРОЕКТЫ
(via) http://designwebkit.com/
• Rails
• HAML
• Nokogiri
• Cucumber
• Rspec
• Rake
• Bundler
• Capybara
• Watir
ИЗВЕСНЫЕ ГЕМЫ
ИНКАРНАЦИИ RUBY
ДОМАШНЕЕ ЗАДАНИЕ
• Сгенерируйте массив со случайными числами и
отсортируйте его, не используя метод :sort
• Создайте объект, у которого будет метод,
отличительный от всех остальных объектов
этого же класса
• Изучаем Ruby, Фитцджеральд М.
• Язык программирования Ruby, Флэнаган Д., Мацумото Ю.
• Metaprogramming Ruby 2, Paolo Perrotta
• Введение в Ruby ООП: http://nashbridges.me/introducing-ruby-oop
• Модули ruby: http://habrahabr.ru/post/143990/
ПОЛЕЗНЫЕ МАТЕРИАЛЫ

More Related Content

Viewers also liked

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Ruby on Rails at HackDay in Saint Petersburg
Ruby on Rails at HackDay in Saint PetersburgRuby on Rails at HackDay in Saint Petersburg
Ruby on Rails at HackDay in Saint PetersburgAlexander Krass
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Constantin Kichinsky
 
Install Rails On Mac OS - RORLab Season 3-2
Install Rails On Mac OS - RORLab Season 3-2Install Rails On Mac OS - RORLab Season 3-2
Install Rails On Mac OS - RORLab Season 3-2창훈 정
 
WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-фактор...
WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-фактор...WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-фактор...
WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-фактор...GeeksLab Odessa
 
RVM, Bundler and Ruby Tracker
RVM, Bundler and Ruby TrackerRVM, Bundler and Ruby Tracker
RVM, Bundler and Ruby TrackerKeith Pitty
 
Dynamic Ruby. Lesson #4: method_missing and its friends
Dynamic Ruby. Lesson #4: method_missing and its friendsDynamic Ruby. Lesson #4: method_missing and its friends
Dynamic Ruby. Lesson #4: method_missing and its friendsAlex Mikitenko
 
Dynamic Ruby. Lesson #2: Methods and modules
Dynamic Ruby. Lesson #2: Methods and modulesDynamic Ruby. Lesson #2: Methods and modules
Dynamic Ruby. Lesson #2: Methods and modulesAlex Mikitenko
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.HappyDev-lite
 
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"railsclub
 
1000 запросов в секунду на rails (Макс Лапшин)
1000 запросов в секунду на rails (Макс Лапшин)1000 запросов в секунду на rails (Макс Лапшин)
1000 запросов в секунду на rails (Макс Лапшин)Ontico
 
Go в автобусе
Go в автобусеGo в автобусе
Go в автобусеArtem Kovardin
 
Codefest 2016 - Go в Openprovider
Codefest 2016 - Go в OpenproviderCodefest 2016 - Go в Openprovider
Codefest 2016 - Go в OpenproviderIgor Dolzhikov
 
Обзорная экскурсия по runit
Обзорная экскурсия по runitОбзорная экскурсия по runit
Обзорная экскурсия по runitAlexander Shcherbinin
 
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесРИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесAnton Piskunov
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует GoArtem Kovardin
 

Viewers also liked (20)

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Ruby on Rails at HackDay in Saint Petersburg
Ruby on Rails at HackDay in Saint PetersburgRuby on Rails at HackDay in Saint Petersburg
Ruby on Rails at HackDay in Saint Petersburg
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
Install Rails On Mac OS - RORLab Season 3-2
Install Rails On Mac OS - RORLab Season 3-2Install Rails On Mac OS - RORLab Season 3-2
Install Rails On Mac OS - RORLab Season 3-2
 
WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-фактор...
WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-фактор...WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-фактор...
WebCamp:Back-end Developers Day - Денис Потапов "Простыми словами о 12-фактор...
 
RVM, Bundler and Ruby Tracker
RVM, Bundler and Ruby TrackerRVM, Bundler and Ruby Tracker
RVM, Bundler and Ruby Tracker
 
Dynamic Ruby. Lesson #4: method_missing and its friends
Dynamic Ruby. Lesson #4: method_missing and its friendsDynamic Ruby. Lesson #4: method_missing and its friends
Dynamic Ruby. Lesson #4: method_missing and its friends
 
Dynamic Ruby. Lesson #2: Methods and modules
Dynamic Ruby. Lesson #2: Methods and modulesDynamic Ruby. Lesson #2: Methods and modules
Dynamic Ruby. Lesson #2: Methods and modules
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
 
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
Антон Веснин - "Обзорное сравнение серверов приложений ruby-on-rails"
 
1000 запросов в секунду на rails (Макс Лапшин)
1000 запросов в секунду на rails (Макс Лапшин)1000 запросов в секунду на rails (Макс Лапшин)
1000 запросов в секунду на rails (Макс Лапшин)
 
Oleg Gorbunov Action cable
Oleg Gorbunov Action cableOleg Gorbunov Action cable
Oleg Gorbunov Action cable
 
Go в автобусе
Go в автобусеGo в автобусе
Go в автобусе
 
Codefest 2016 - Go в Openprovider
Codefest 2016 - Go в OpenproviderCodefest 2016 - Go в Openprovider
Codefest 2016 - Go в Openprovider
 
Обзорная экскурсия по runit
Обзорная экскурсия по runitОбзорная экскурсия по runit
Обзорная экскурсия по runit
 
Golang
GolangGolang
Golang
 
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнесРИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
 
Ruby строки
Ruby строкиRuby строки
Ruby строки
 
OOP в Go
OOP в GoOOP в Go
OOP в Go
 

More from Alex Mikitenko

Testing stage. being ahead business with cucumber
Testing stage. being ahead business with cucumberTesting stage. being ahead business with cucumber
Testing stage. being ahead business with cucumberAlex Mikitenko
 
End-to-end web-testing in ruby ecosystem
End-to-end web-testing in ruby ecosystemEnd-to-end web-testing in ruby ecosystem
End-to-end web-testing in ruby ecosystemAlex Mikitenko
 
Dynamic Ruby. Lesson #5: define_method and its friends
Dynamic Ruby. Lesson #5: define_method and its friendsDynamic Ruby. Lesson #5: define_method and its friends
Dynamic Ruby. Lesson #5: define_method and its friendsAlex Mikitenko
 
Dynamic Ruby. Lesson #3: Blocks, procs and lambdas
Dynamic Ruby. Lesson #3: Blocks, procs and lambdasDynamic Ruby. Lesson #3: Blocks, procs and lambdas
Dynamic Ruby. Lesson #3: Blocks, procs and lambdasAlex Mikitenko
 
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverAlex Mikitenko
 
Introduction to Ubuntu
Introduction to UbuntuIntroduction to Ubuntu
Introduction to UbuntuAlex Mikitenko
 

More from Alex Mikitenko (6)

Testing stage. being ahead business with cucumber
Testing stage. being ahead business with cucumberTesting stage. being ahead business with cucumber
Testing stage. being ahead business with cucumber
 
End-to-end web-testing in ruby ecosystem
End-to-end web-testing in ruby ecosystemEnd-to-end web-testing in ruby ecosystem
End-to-end web-testing in ruby ecosystem
 
Dynamic Ruby. Lesson #5: define_method and its friends
Dynamic Ruby. Lesson #5: define_method and its friendsDynamic Ruby. Lesson #5: define_method and its friends
Dynamic Ruby. Lesson #5: define_method and its friends
 
Dynamic Ruby. Lesson #3: Blocks, procs and lambdas
Dynamic Ruby. Lesson #3: Blocks, procs and lambdasDynamic Ruby. Lesson #3: Blocks, procs and lambdas
Dynamic Ruby. Lesson #3: Blocks, procs and lambdas
 
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir WebdriverТестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
Тестирование web-приложений на базе технологий Ruby/Cucumber/Watir Webdriver
 
Introduction to Ubuntu
Introduction to UbuntuIntroduction to Ubuntu
Introduction to Ubuntu
 

Ruby: интерпретируемый, динамичный, человеколюбивый