1. Работа с
Ruby On Rails
Деница Белогушева
Ruby on Rails семинар, ВСУ
Варна, 11.12.2010
2. Моята работа
● тутуф, (2007-), съдружник и управител
● собствен продукт - Щ
● досега 4 различни уеб приложения за
клиенти
● Първата стажантска програма по Ruby
On Rails в България*
● @deni_bel
9. Heroku
● Platform as a service (PAAS) for building,
deploying, and running cloud apps using
Ruby
● > 107, 180 работещи приложения
● Salesforce.com купува Heroku за
212 милиона долара
10. Ruby On Rails - принципите
● convention over
configuration
● DRY
● Less Is More
● K.I.S.S
● Principle Of Least
Surprise
● Be nice and have fun :)
12. Agile web development
● agilemanifesto.org
● XP, Scrum, Lean
● Итерации
● Release early,
release often
● Обратна връзка
● Pair Programming
13. Тестове, тестове, тестове
● Проверка, че нещо се случва по
определен начин
● Подсигуряване, че даден бъг няма да
се появи отново
● Документация
● Regression testing
● TDD – not about testing, think design
14. Култура и хигиена
● SCM (git, svn, mercurial)
● ssh + keys
● Automatic deploy
● Тестове
16. В България?
● Бързо и лесно с Рубин на Релси – Сава
Чанков, openfest, София, 2006
● > 60 човека в google групата
● Успешни проекти
● Споделен хостинг с Rails (space.bg)
● @skanev, @petyosi, @stan_bb,
@rstankov
17. Възможностите за работа?
● Работа има и все
повече се Rails-аджиите все
предлага още са малко у
● Съществуващи нас
сайтове
● Нови уеб проекти
● startup
● чуждестранни
проекти
18. Как да се (на)учим?
● Apprenticeship patterns
● Приятел с опит
● railsmentors.org
● Четене на чужд код
● Build breakable toys
● Проекти с отворен код
● Стажантски програми
19. За новите поколения
● Ruby Summer Of Code 2010
– За ученици и студенти
– стипендия в размер на $5000 (от
дарения!)
– Руби гурута за ментори
– Проекти с отворен код
20. Как да си намерим работа?
Тя ще ви намери, но бъдете подготвени
● github.com – по-добро от CV
● workingwithrails.com
● Ruby on Rails: България
● Приятели
● Общност
● Събития (openfest, webtech и др.)
22. Собствен бизнес с Rails
● Getting Real -
http://gettingreal.37signals.com
● Paul Graham - http://www.paulgraham.com
● Бъдете гъвкави
С професионално отношение
към доверие на клиента!*
#3:Тутуф е компанията, която със Сава Чанков основахме 2007 с идеята да се занимаваме изцяло с проекти на Rails. Всъщност сме от първите в България, които работят изцяло с Rails. Започнахме с една доста специфична система – Щ – система за управление на производството в модна фирма. Освен нея вече имаме 4 отделни уеб приложения, за различни клиенти В момента провеждаме кампания за набиране на кандидати за първата(поне доколкото ни е известно) стажантска програма по Rails в България. И засега се радва на доста добър интерес. Това е моя twitter, където може да ме намерите
#4:Ще ви разкажа повечко за Ruby On Rails. Като няма да навлизам в технически подробности и примерен код. Радо Станков ще го наблегне на тези страни в неговата презентация Ще видим какво е полезното в Rails Колко е лесно да се подкара Че може да се използва и за наистина сериозна работа Накрая ще ви дам отправна точка в източниците от където може да научите повече
#5:Първото полезно нещо, с което ще се запознаете, щом започнете да работите с rails е ruby. Страхотен език – динамичен език за програмиране, елегантен Следващото нещо е MVC. Вече стандартен архитектурен моде в повечето уеб фреймуърци на различни езици (php, java, python) Разделянето на логиката на модел, който се занимава с комуникацията с базата данни и най-често съдържа по-голямата част от бизнес логиката, контролера предоставя нужните действия, с които потребителя взаимодейства с приложението, изгледът визуализира приложението в удобен за потребителя формат Друго много важно разделение, което правят в rails е конвенцията за множество среди, в които може да се изпълнява приложените с различни настройки. Минимума са тези 3. Работейки по този начин, самия процес на работа се опростява значително. Нямате си представа колко културно се работи по този начин. В множество от софтуерните фирми у нас, дори и големите, в най-добрия случай има бета сървър. Ето един реален пример: разработчика работи по някаква нова функционалност, среща проблем и си дебъгва на екрана за да разбере какво се случва. В същия момент QA-ите тестват същото приложение на същата среда, тя е единствена освен производствената, и им се изправят косите от дебъг съобщенията. Всичко това нямаше да се случи, ако разработчика имаше development версия на своята машина или специална за случая такава, а QA-ите тестват върху вече готовата версия и в среда идентична на производствената. DB migrations са друго гениално нещо в rails – представляват скриптове, които променят структурата на базата данни когато създавате нов модел или променяте някои от колоните в таблицата. Миграциите имат 2 посоки up и down. С up правите новите промени, а с down връщате нещата към предишното им състояние. Разбира се, не винаги промените, които ви се налага да правите са обратими, но в повечето случай е така. Това подсигурява еднаква схема на базата данни на всички инстации на приложението и също предпазва от омазване. Ако има някакъв проблем и мирацията не може да мине – хвърля съобщение за грешка. REST – софтуерна архитектура работеща по HTTP протокола, оперира с ресури с уникален идентификатор в уеб (URI) gems – библиотеки и плъгини за специфични задачи и операции, с отворен код. Самия rails е gem, както ще видим в следващия слайд. Пример за един от най-често използваните е will-paginate
#6:Същите тези хора от EngineYard са съставили списък с полезните източници, които да прочете човек, който иска да започне да се занимава с Rails. Не е изчерпателен, разбира се. Но винаги може да намерите повече информация и по стандартния начин
#7:А ето колко лесно се подкарва rails. Разбира се, според ОС, на която се инсталира командите варират. Дала съм пример с Ubuntu linux. Първо инсталираме руби. Избираме си коя версия да е. После инсталираме rubygems, командите зависят пак от ос и това дали са включени в дистрибуцията. После инсталираме самия rails Правим си приложение appname, указваме настройките за връзка с базата данни и стартираме включения в rails уеб сървър webrick. Можем да си говорим с приложението и през конзолата.
#9:На предишния слайд ви показах как се подкарва rails за собствени нужди на локалната машина. Сега ще ви разкажа какво се използва, когато rails задвижва сериозно приложение. В производство предпочитаното руби е т.н. REE, което е оптимизирано да работи по-добре от стандартно, особено с passenger. Ruby 1.9 също се използва, но аз нямам все още лични наблюдения. Passenger e модул към уеб сървъра, най-често apache, но се използва и nginx. Управлява rails процесите и позволява страшно лесно внедряване на приложенията. Capistrano e инструментът за автоматично внедряване. Когато нещата станат наистина сериозни има такива услуги като тези на EngineYard. Те предлагат т.н. Platform-as-a-service планове. Т.е. Дават ви среда за вашето приложение и то в облак. Дават множество инструменти за конфигуриране, мониторинг. Там са експертите в хостването на rails приложения.
#11:Основнията принцип на rails като уеб фреймуърк е, че се залага на конвенцията над конфигурацията. Това насочва хората да пишат по т.н. rails way като следвайки тези конвенции, се спестява много код и им позволява да се съсредоточат върху бизнес логиката и да не се занимават с технически подробности. Останалите принципи не са специфични само за Rails, но също стоят в основата му. Да се избягва повторение на код, Да се пише по-малко код (по-малко код в повечето случаи значи по-малко дефекти и проблеми) Принципът на най-малката изненада, също е много важен ...