Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Ruby на релси за уеб програмисти

Ruby на релси за уеб програмисти

Ruby on Rails е фреймуърк, имащ за цел да даде солидна основа на вашите уеб приложения, без значение от техния калибър или натовареност и да ви спести много време и нерви. Написан е на набралия изключителна популярност напоследък език за програмиране Ruby.

Презентацията цели да очертае контурите на айсберга Ruby on Rails, приплъзвайки се по повърхността на Ruby и споменавайки основните ключови компоненти, които биха привлекли един уеб програмист към Rails.

Целева аудитория на презентацията са основно хора с опит и интерес в програмирането за уеб, имащи нулеви или базови познания в езика за програмиране Ruby.

9d3a04d8252ce89d5edbb0268af7ad8e?s=128

Dimitar Dimitrov

August 11, 2012
Tweet

More Decks by Dimitar Dimitrov

Other Decks in Programming

Transcript

  1. Ruby на релси за уеб програмисти Димитър Димитров, VarnaConf 2012

    11 август 12, събота
  2. Здравейте! И добре дошли на VarnaConf 2012! 11 август 12,

    събота
  3. Димитър Димитров http://ddimitrov.name @mitio в Twitter Лайв ООД 11 август

    12, събота
  4. За какво ще ви говоря днес 11 август 12, събота

  5. Ruby 11 август 12, събота

  6. Ruby on Rails 11 август 12, събота

  7. Стефан 11 август 12, събота

  8. Ruby на релси? 11 август 12, събота

  9. Ruby на релси? • Уеб фреймуърк 11 август 12, събота

  10. Ruby на релси? • Уеб фреймуърк • Солидна основа за

    вашите уеб приложения 11 август 12, събота
  11. Ruby на релси? • Уеб фреймуърк • Солидна основа за

    вашите уеб приложения • Написан на Ruby 11 август 12, събота
  12. Ruby на релси? • Уеб фреймуърк • Солидна основа за

    вашите уеб приложения • Написан на Ruby • Ще ви направи по-щастливи програмисти 11 август 12, събота
  13. Ruby на релси? • Уеб фреймуърк • Солидна основа за

    вашите уеб приложения • Написан на Ruby • Ще ви направи по-щастливи програмисти • Ще ви направи по-добри програмисти 11 август 12, събота
  14. Целта ми днес 11 август 12, събота

  15. Целта ми днес • Да ви покажа купчина готини неща

    11 август 12, събота
  16. Целта ми днес • Да ви покажа купчина готини неща

    • Само контурите на айсберга 11 август 12, събота
  17. Целта ми днес • Да ви покажа купчина готини неща

    • Само контурите на айсберга • Да запаля любопитството ви 11 август 12, събота
  18. Целта ми днес • Да ви покажа купчина готини неща

    • Само контурите на айсберга • Да запаля любопитството ви • Да ви засърбят ръцете 11 август 12, събота
  19. Целта ми днес • Да ви покажа купчина готини неща

    • Само контурите на айсберга • Да запаля любопитството ви • Да ви засърбят ръцете • Поне половината от вас да пробват Ruby и/или Rails този уикенд от нетърпение 11 август 12, събота
  20. Ruby 11 август 12, събота

  21. Ruby накратко 11 август 12, събота

  22. Ruby накратко • Скриптов (интерпретируем) език, подобно на PHP, Python,

    Perl и други 11 август 12, събота
  23. Ruby накратко • Скриптов (интерпретируем) език, подобно на PHP, Python,

    Perl и други • Отворен код 11 август 12, събота
  24. Ruby накратко • Скриптов (интерпретируем) език, подобно на PHP, Python,

    Perl и други • Отворен код • Набиращ голяма популярност напоследък (особено в Силиконовата долина) 11 август 12, събота
  25. Ruby накратко • Скриптов (интерпретируем) език, подобно на PHP, Python,

    Perl и други • Отворен код • Набиращ голяма популярност напоследък (особено в Силиконовата долина) • Изцяло обектно-ориентиран 11 август 12, събота
  26. Ruby накратко • Скриптов (интерпретируем) език, подобно на PHP, Python,

    Perl и други • Отворен код • Набиращ голяма популярност напоследък (особено в Силиконовата долина) • Изцяло обектно-ориентиран • Авторът му е Юкихиро Мацумото (накратко — Matz) 11 август 12, събота
  27. История и вдъхновение 11 август 12, събота

  28. История и вдъхновение • Появява се за пръв път през

    1995 г. 11 август 12, събота
  29. История и вдъхновение • Появява се за пръв път през

    1995 г. • Вдъхновен основно от Smalltalk, Perl и донякъде от Eiffel и Lisp 11 август 12, събота
  30. История и вдъхновение • Появява се за пръв път през

    1995 г. • Вдъхновен основно от Smalltalk, Perl и донякъде от Eiffel и Lisp • Matz цели език, правещ програмистите щастливи 11 август 12, събота
  31. История и вдъхновение • Появява се за пръв път през

    1995 г. • Вдъхновен основно от Smalltalk, Perl и донякъде от Eiffel и Lisp • Matz цели език, правещ програмистите щастливи • Доброжелателен диктатор 11 август 12, събота
  32. Характерни черти 11 август 12, събота

  33. Характерни черти • Много динамичен 11 август 12, събота

  34. Характерни черти • Много динамичен • Много консистентен 11 август

    12, събота
  35. Характерни черти • Много динамичен • Много консистентен • Много

    малко синтактичен шум 11 август 12, събота
  36. Характерни черти • Много динамичен • Много консистентен • Много

    малко синтактичен шум • Изцяло обектно-ориентиран 11 август 12, събота
  37. Характерни черти • Много динамичен • Много консистентен • Много

    малко синтактичен шум • Изцяло обектно-ориентиран • Функционални елементи 11 август 12, събота
  38. Характерни черти • Много динамичен • Много консистентен • Много

    малко синтактичен шум • Изцяло обектно-ориентиран • Функционални елементи • Минимално количество “вграден” синтаксис 11 август 12, събота
  39. Динамичен 11 август 12, събота

  40. Динамичен • Променливите ви не са обвързани с тип (duck

    typing) 11 август 12, събота
  41. Динамичен • Променливите ви не са обвързани с тип (duck

    typing) • Можете да променяте почти всичко, което ви идва наготово с езика и стандартната му библиотека (monkey- patching) 11 август 12, събота
  42. Динамичен • Променливите ви не са обвързани с тип (duck

    typing) • Можете да променяте почти всичко, което ви идва наготово с езика и стандартната му библиотека (monkey- patching) • Можете да инспектирате или създавате “код” в движение, докато програмата ви работи (метапрограмиране) 11 август 12, събота
  43. Duck Typing 11 август 12, събота

  44. Duck Typing 11 август 12, събота

  45. Moneky-patching 11 август 12, събота

  46. Moneky-patching 11 август 12, събота

  47. Метапрограмиране 11 август 12, събота

  48. Консистентен 11 август 12, събота

  49. Консистентен • Има конвенции и те се спазват 11 август

    12, събота
  50. Консистентен • Има конвенции и те се спазват • Имена

    на класове винаги с главна буква, CamelCase 11 август 12, събота
  51. Консистентен • Има конвенции и те се спазват • Имена

    на класове винаги с главна буква, CamelCase • Имена на константи в SCREAMING_CAMEL_CASE 11 август 12, събота
  52. Консистентен • Има конвенции и те се спазват • Имена

    на класове винаги с главна буква, CamelCase • Имена на константи в SCREAMING_CAMEL_CASE • Имена на методи и променливи в underscore_snake_case 11 август 12, събота
  53. Консистентен • Има конвенции и те се спазват • Имена

    на класове винаги с главна буква, CamelCase • Имена на константи в SCREAMING_CAMEL_CASE • Имена на методи и променливи в underscore_snake_case • Имената са смислени и аргументите на методите са консистенти 11 август 12, събота
  54. Консистентен 11 август 12, събота

  55. Консистентен • Принципът на най-малката изненада 11 август 12, събота

  56. Консистентен • Принципът на най-малката изненада • За разлика от

    други езици... 11 август 12, събота
  57. Консистентен • Принципът на най-малката изненада • За разлика от

    други езици... • Забравете за haystack и needle 11 август 12, събота
  58. Консистентен • Принципът на най-малката изненада • За разлика от

    други езици... • Забравете за haystack и needle • Забравете реда на аргументите на in_array(), str_replace() и strpos() 11 август 12, събота
  59. Консистентен • Принципът на най-малката изненада • За разлика от

    други езици... • Забравете за haystack и needle • Забравете реда на аргументите на in_array(), str_replace() и strpos() • А може би трябваше да кажа StrPos()? 11 август 12, събота
  60. Консистентен • Принципът на най-малката изненада • За разлика от

    други езици... • Забравете за haystack и needle • Забравете реда на аргументите на in_array(), str_replace() и strpos() • А може би трябваше да кажа StrPos()? • Силен контраст с PHP в това отношение 11 август 12, събота
  61. Малък синтактичен шум 11 август 12, събота

  62. Малък синтактичен шум • Без долари пред променливите 11 август

    12, събота
  63. Малък синтактичен шум • Без долари пред променливите • Без

    къдрави скоби на традиционните места 11 август 12, събота
  64. Малък синтактичен шум • Без долари пред променливите • Без

    къдрави скоби на традиционните места • Може да изпускате кръглите скоби при дефиниране и извикване на методи 11 август 12, събота
  65. Малък синтактичен шум • Без долари пред променливите • Без

    къдрави скоби на традиционните места • Може да изпускате кръглите скоби при дефиниране и извикване на методи • Литерални (синтактични) конструктори за често употребявани типове данни като речници и списъци 11 август 12, събота
  66. Малък синтактичен шум • Без долари пред променливите • Без

    къдрави скоби на традиционните места • Може да изпускате кръглите скоби при дефиниране и извикване на методи • Литерални (синтактични) конструктори за често употребявани типове данни като речници и списъци • Синтаксис, който подтиква към писане на код, четим като обикновен текст 11 август 12, събота
  67. Обектно-ориентиран 11 август 12, събота

  68. Обектно-ориентиран • Всичко е обект 11 август 12, събота

  69. Обектно-ориентиран • Всичко е обект • Включително примитивните типове като

    true, false, nil, числа и прочее 11 август 12, събота
  70. Обектно-ориентиран • Всичко е обект • Включително примитивните типове като

    true, false, nil, числа и прочее • Включително класовете 11 август 12, събота
  71. Обектно-ориентиран • Всичко е обект • Включително примитивните типове като

    true, false, nil, числа и прочее • Включително класовете • Класовете са инстанции на класа Class, а класът Class е наследник на модул; статичните методи са всъщност инстанционни методи на тази инстанция 11 август 12, събота
  72. Wait, what? 11 август 12, събота

  73. 11 август 12, събота

  74. Всичко е обект 11 август 12, събота

  75. Функционални елементи 11 август 12, събота

  76. Функционални елементи • Работа с колекции е на много централно

    място в езика 11 август 12, събота
  77. Функционални елементи • Работа с колекции е на много централно

    място в езика • Лесно може да направите ваш клас, който да се държи (да квака) като колекция 11 август 12, събота
  78. Функционални елементи • Работа с колекции е на много централно

    място в езика • Лесно може да направите ваш клас, който да се държи (да квака) като колекция • map/collect, filter/reject, select/ find_all работят над всички колекции 11 август 12, събота
  79. Функционални елементи • Работа с колекции е на много централно

    място в езика • Лесно може да направите ваш клас, който да се държи (да квака) като колекция • map/collect, filter/reject, select/ find_all работят над всички колекции • Функции, приемащи като аргументи други функции 11 август 12, събота
  80. Функционални елементи • Работа с колекции е на много централно

    място в езика • Лесно може да направите ваш клас, който да се държи (да квака) като колекция • map/collect, filter/reject, select/ find_all работят над всички колекции • Функции, приемащи като аргументи други функции • Анонимни функции и блокове 11 август 12, събота
  81. Блокове 11 август 12, събота

  82. Блокове • Интересна и оригинална концепция 11 август 12, събота

  83. Блокове • Интересна и оригинална концепция • Навсякъде в езика,

    ползват се изключително много 11 август 12, събота
  84. Блокове • Интересна и оригинална концепция • Навсякъде в езика,

    ползват се изключително много • Наподобяват анонимна функция/closure, “закачена” към метода, който извиквате 11 август 12, събота
  85. Блокове Блокът по-горе е асоцииран само с това конкретно извикване

    на метода each(). 11 август 12, събота
  86. Символи За целите на тази презентация, гледайте на тях като

    на низове 11 август 12, събота
  87. Малко синтаксис 11 август 12, събота

  88. Малко синтаксис • Ruby е написан на Ruby 11 август

    12, събота
  89. Малко синтаксис • Ruby е написан на Ruby • Макар

    и преувеличено, това твърдение е част от философията на езика 11 август 12, събота
  90. Малко синтаксис • Ruby е написан на Ruby • Макар

    и преувеличено, това твърдение е част от философията на езика • Минимално количество синтаксис, повече методи в класове и модули 11 август 12, събота
  91. Малко синтаксис • Ruby е написан на Ruby • Макар

    и преувеличено, това твърдение е част от философията на езика • Минимално количество синтаксис, повече методи в класове и модули • Всичко, което не е ключова дума, може да бъде променено от вас 11 август 12, събота
  92. Малко синтаксис • Ruby е написан на Ruby • Макар

    и преувеличено, това твърдение е част от философията на езика • Минимално количество синтаксис, повече методи в класове и модули • Всичко, което не е ключова дума, може да бъде променено от вас • Много малко неща са ключови думи 11 август 12, събота
  93. Запазени думи 11 август 12, събота

  94. Запазени думи • Това са всички 11 август 12, събота

  95. Запазени думи • Това са всички • Не могат да

    бъдат променени 11 август 12, събота
  96. Интерактивна конзола 11 август 12, събота

  97. Интерактивна конзола • irb (interactive ruby) 11 август 12, събота

  98. Интерактивна конзола • irb (interactive ruby) • REPL (read-eval-print loop)

    11 август 12, събота
  99. Интерактивна конзола • irb (interactive ruby) • REPL (read-eval-print loop)

    • Пускате irb и започвате да си играете с Ruby 11 август 12, събота
  100. Интерактивна конзола • irb (interactive ruby) • REPL (read-eval-print loop)

    • Пускате irb и започвате да си играете с Ruby • Всеки скриптов език може и трябва да има такава REPL-конзола 11 август 12, събота
  101. Интерактивна конзола • irb (interactive ruby) • REPL (read-eval-print loop)

    • Пускате irb и започвате да си играете с Ruby • Всеки скриптов език може и трябва да има такава REPL-конзола • Е, почти всеки... 11 август 12, събота
  102. Интерактивна конзола • irb (interactive ruby) • REPL (read-eval-print loop)

    • Пускате irb и започвате да си играете с Ruby • Всеки скриптов език може и трябва да има такава REPL-конзола • Е, почти всеки... 11 август 12, събота
  103. Библиотеки 11 август 12, събота

  104. Библиотеки • Библиотеките в Ruby се наричат gems 11 август

    12, събота
  105. Библиотеки • Библиотеките в Ruby се наричат gems • Ползват

    се за споделяне на функционалност между различни приложения 11 август 12, събота
  106. Библиотеки • Библиотеките в Ruby се наричат gems • Ползват

    се за споделяне на функционалност между различни приложения • Системата е прилична и работи добре 11 август 12, събота
  107. Библиотеки • Библиотеките в Ruby се наричат gems • Ползват

    се за споделяне на функционалност между различни приложения • Системата е прилична и работи добре • Можете да напишете и публикувате ваш gem много лесно 11 август 12, събота
  108. 11 август 12, събота

  109. RubyGems 11 август 12, събота

  110. RubyGems • Де-факто стандартно място, където се публикуват gems 11

    август 12, събота
  111. RubyGems • Де-факто стандартно място, където се публикуват gems •

    Безплатно е 11 август 12, събота
  112. RubyGems • Де-факто стандартно място, където се публикуват gems •

    Безплатно е • Правите си акаунт, публикувате си gem-а там и вече всеки може да го ползва 11 август 12, събота
  113. RubyGems Над 42 хиляди open-source gem-а 11 август 12, събота

  114. RubyGems Близо 800 милиона изтегляния 11 август 12, събота

  115. RubyGems Високо качество 11 август 12, събота

  116. RubyGems 11 август 12, събота

  117. RubyGems • Публикувайки gem-а си в RubyGems го правите достъпен

    за всеки Ruby програмист по света 11 август 12, събота
  118. RubyGems • Публикувайки gem-а си в RubyGems го правите достъпен

    за всеки Ruby програмист по света • gem install my_cool_gem на конзола и сте в играта 11 август 12, събота
  119. Community 11 август 12, събота

  120. Community • Ruby има много силно и развито community 11

    август 12, събота
  121. Community • Ruby има много силно и развито community •

    Личи си от количеството и качеството на наличните библиотеки 11 август 12, събота
  122. Community • Ruby има много силно и развито community •

    Личи си от количеството и качеството на наличните библиотеки • Повечето от тях са ползваеми в production 11 август 12, събота
  123. Community • Ruby има много силно и развито community •

    Личи си от количеството и качеството на наличните библиотеки • Повечето от тях са ползваеми в production • Следва нови тенденции и добри практики 11 август 12, събота
  124. Community • Ruby има много силно и развито community •

    Личи си от количеството и качеството на наличните библиотеки • Повечето от тях са ползваеми в production • Следва нови тенденции и добри практики • Бързо адаптира нови технологии и версии на езика 11 август 12, събота
  125. Версии на Ruby 11 август 12, събота

  126. Версии на Ruby • В момента най-новата версия на Ruby

    е 1.9.3 — не ползвайте друго 11 август 12, събота
  127. Версии на Ruby • В момента най-новата версия на Ruby

    е 1.9.3 — не ползвайте друго • Все още може да срещнете споменавания на 1.8.7 някъде 11 август 12, събота
  128. Версии на Ruby • В момента най-новата версия на Ruby

    е 1.9.3 — не ползвайте друго • Все още може да срещнете споменавания на 1.8.7 някъде • 1.9 не е 100% backward-compatible с 1.8 11 август 12, събота
  129. Версии на Ruby • В момента най-новата версия на Ruby

    е 1.9.3 — не ползвайте друго • Все още може да срещнете споменавания на 1.8.7 някъде • 1.9 не е 100% backward-compatible с 1.8 • Почти всички библиотеки са мигрирани и работят на Ruby 1.9 11 август 12, събота
  130. Версии на Ruby • В момента най-новата версия на Ruby

    е 1.9.3 — не ползвайте друго • Все още може да срещнете споменавания на 1.8.7 някъде • 1.9 не е 100% backward-compatible с 1.8 • Почти всички библиотеки са мигрирани и работят на Ruby 1.9 • Направете разлика с Python 11 август 12, събота
  131. Интерпретатори 11 август 12, събота

  132. Интерпретатори • Повече от един 11 август 12, събота

  133. Интерпретатори • Повече от един • MRI (още CRuby) =

    Matz’ Ruby Implementation 11 август 12, събота
  134. Интерпретатори • Повече от един • MRI (още CRuby) =

    Matz’ Ruby Implementation • JRuby 11 август 12, събота
  135. Интерпретатори • Повече от един • MRI (още CRuby) =

    Matz’ Ruby Implementation • JRuby • IronRuby 11 август 12, събота
  136. Интерпретатори • Повече от един • MRI (още CRuby) =

    Matz’ Ruby Implementation • JRuby • IronRuby • Rubinius 11 август 12, събота
  137. Интерпретатори • Повече от един • MRI (още CRuby) =

    Matz’ Ruby Implementation • JRuby • IronRuby • Rubinius • MacRuby 11 август 12, събота
  138. Интерпретатори • Повече от един • MRI (още CRuby) =

    Matz’ Ruby Implementation • JRuby • IronRuby • Rubinius • MacRuby • MagLev — http://maglev.github.com 11 август 12, събота
  139. Интерпретатори • Повече от един • MRI (още CRuby) =

    Matz’ Ruby Implementation • JRuby • IronRuby • Rubinius • MacRuby • MagLev — http://maglev.github.com • MRuby 11 август 12, събота
  140. Интерпретатори • Повече от един • MRI (още CRuby) =

    Matz’ Ruby Implementation • JRuby • IronRuby • Rubinius • MacRuby • MagLev — http://maglev.github.com • MRuby • Ruby in Google Chrome? 11 август 12, събота
  141. Защо Ruby? 11 август 12, събота

  142. Защо Ruby? 11 август 12, събота

  143. Защо Ruby? • Само върха на айсберга — още много

    надолу в заешката дупка 11 август 12, събота
  144. Защо Ruby? • Само върха на айсберга — още много

    надолу в заешката дупка • Удоволствие за писане 11 август 12, събота
  145. Защо Ruby? • Само върха на айсберга — още много

    надолу в заешката дупка • Удоволствие за писане • Ще ви научи на много нови неща 11 август 12, събота
  146. Защо Ruby? • Само върха на айсберга — още много

    надолу в заешката дупка • Удоволствие за писане • Ще ви научи на много нови неща • Много библиотеки, които да ползвате 11 август 12, събота
  147. Защо Ruby? • Само върха на айсберга — още много

    надолу в заешката дупка • Удоволствие за писане • Ще ви научи на много нови неща • Много библиотеки, които да ползвате • Много код, от който да се учите 11 август 12, събота
  148. Защо Ruby? • Само върха на айсберга — още много

    надолу в заешката дупка • Удоволствие за писане • Ще ви научи на много нови неща • Много библиотеки, които да ползвате • Много код, от който да се учите • Защо не? 11 август 12, събота
  149. Ruby on Rails 11 август 12, събота

  150. Rails 11 август 12, събота

  151. Rails • Ruby on Rails, накратко Rails 11 август 12,

    събота
  152. Rails • Ruby on Rails, накратко Rails • Фреймуърк за

    уеб приложения 11 август 12, събота
  153. Rails • Ruby on Rails, накратко Rails • Фреймуърк за

    уеб приложения • Наследява всички ползи от Ruby и добавя още 11 август 12, събота
  154. Rails • Ruby on Rails, накратко Rails • Фреймуърк за

    уеб приложения • Наследява всички ползи от Ruby и добавя още • Много сериозна основа за всякакви приложения — от малки, до много големи 11 август 12, събота
  155. Rails 11 август 12, събота

  156. Rails • Production-ready 11 август 12, събота

  157. Rails • Production-ready • Сигурността е на почит 11 август

    12, събота
  158. Rails • Production-ready • Сигурността е на почит • Пълен

    с добри практики 11 август 12, събота
  159. Rails • Production-ready • Сигурността е на почит • Пълен

    с добри практики • Авангарден 11 август 12, събота
  160. Rails • Production-ready • Сигурността е на почит • Пълен

    с добри практики • Авангарден • Модел, който много други уеб фреймуърци копират (например CakePHP) 11 август 12, събота
  161. Production-ready Или, кой ползва Rails? 11 август 12, събота

  162. Twitter В младите си години 11 август 12, събота

  163. GitHub 11 август 12, събота

  164. SoundCloud 11 август 12, събота

  165. Shopify 11 август 12, събота

  166. Songkick 11 август 12, събота

  167. Groupon 11 август 12, събота

  168. Basecamp 11 август 12, събота

  169. Много други... 11 август 12, събота

  170. История 11 август 12, събота

  171. История • Първоначален автор е David Heinemeier Hansson 11 август

    12, събота
  172. История • Първоначален автор е David Heinemeier Hansson • Първите

    commit-и във VCS-а на Rails са от 2004-та година 11 август 12, събота
  173. История • Първоначален автор е David Heinemeier Hansson • Първите

    commit-и във VCS-а на Rails са от 2004-та година • Изваден от негов проект (Basecamp) 11 август 12, събота
  174. История • Първоначален автор е David Heinemeier Hansson • Първите

    commit-и във VCS-а на Rails са от 2004-та година • Изваден от негов проект (Basecamp) • Силно асоцииран с 37signals 11 август 12, събота
  175. История • Първоначален автор е David Heinemeier Hansson • Първите

    commit-и във VCS-а на Rails са от 2004-та година • Изваден от негов проект (Basecamp) • Силно асоцииран с 37signals • Въпреки това, open-source и свободен 11 август 12, събота
  176. DHH? 11 август 12, събота

  177. DHH Източник: http://www.flickr.com/photos/gotomi/3335331857/ 11 август 12, събота

  178. DHH Източник: http://www.concept47.com/austin_web_developer_blog/developers/is-rails-a-ghetto- developments-in-the-ror-space/ 11 август 12, събота

  179. Елементи на Rails 11 август 12, събота

  180. Компонентен 11 август 12, събота

  181. Компонентен • Rails е Ruby gem 11 август 12, събота

  182. Компонентен • Rails е Ruby gem • Близо 11 милиона

    сваляния 11 август 12, събота
  183. Компонентен • Rails е Ruby gem • Близо 11 милиона

    сваляния • Няколко самостоятелни компонента 11 август 12, събота
  184. Компонентен • Rails е Ruby gem • Близо 11 милиона

    сваляния • Няколко самостоятелни компонента • Заменяеми с алтернативи 11 август 12, събота
  185. Компонентен • Rails е Ruby gem • Близо 11 милиона

    сваляния • Няколко самостоятелни компонента • Заменяеми с алтернативи • Един gem-лепило, спояващ компонентите 11 август 12, събота
  186. Компоненти Основните: 11 август 12, събота

  187. Компоненти • activerecord — интерфейс към базата Основните: 11 август

    12, събота
  188. Компоненти • activerecord — интерфейс към базата • actionmailer —

    пощальон Основните: 11 август 12, събота
  189. Компоненти • activerecord — интерфейс към базата • actionmailer —

    пощальон • actionpack — маршрутизатор на стероиди Основните: 11 август 12, събота
  190. Компоненти • activerecord — интерфейс към базата • actionmailer —

    пощальон • actionpack — маршрутизатор на стероиди • activesupport — всякакви благинки Основните: 11 август 12, събота
  191. Компоненти • activerecord — интерфейс към базата • actionmailer —

    пощальон • actionpack — маршрутизатор на стероиди • activesupport — всякакви благинки • railties — лепилото Основните: 11 август 12, събота
  192. Концепции и принципи 11 август 12, събота

  193. MVC 11 август 12, събота

  194. MVC 11 август 12, събота

  195. MVC • Model-View-Controller архитектура 11 август 12, събота

  196. MVC • Model-View-Controller архитектура • Бизнес логика в моделите 11

    август 12, събота
  197. MVC • Model-View-Controller архитектура • Бизнес логика в моделите •

    Презентационна логика (HTML) във файловете-изгледи 11 август 12, събота
  198. MVC • Model-View-Controller архитектура • Бизнес логика в моделите •

    Презентационна логика (HTML) във файловете-изгледи • Навръзваща логика в контролерите 11 август 12, събота
  199. ORM 11 август 12, събота

  200. ORM 11 август 12, събота

  201. ORM • Object-relational mapping 11 август 12, събота

  202. ORM • Object-relational mapping • Естествено продължение на MVC 11

    август 12, събота
  203. ORM • Object-relational mapping • Естествено продължение на MVC •

    Не пишете SQL директно 11 август 12, събота
  204. ORM • Object-relational mapping • Естествено продължение на MVC •

    Не пишете SQL директно • Това прави за вас ActiveRecord (или друг ORM) 11 август 12, събота
  205. ORM • Object-relational mapping • Естествено продължение на MVC •

    Не пишете SQL директно • Това прави за вас ActiveRecord (или друг ORM) • На теория сте database-agnostic 11 август 12, събота
  206. ActiveRecord 11 август 12, събота

  207. ActiveRecord • ORM, който идва по подразбиране с Rails 11

    август 12, събота
  208. ActiveRecord • ORM, който идва по подразбиране с Rails •

    Поддържа PostgreSQL, MySQL, Sqlite3 11 август 12, събота
  209. ActiveRecord • ORM, който идва по подразбиране с Rails •

    Поддържа PostgreSQL, MySQL, Sqlite3 • Може да го подкарате и с MSSQL, Oracle и други бази 11 август 12, събота
  210. ActiveRecord • ORM, който идва по подразбиране с Rails •

    Поддържа PostgreSQL, MySQL, Sqlite3 • Може да го подкарате и с MSSQL, Oracle и други бази • При нужда, може да напишете и ваш адаптер 11 август 12, събота
  211. ActiveRecord • ORM, който идва по подразбиране с Rails •

    Поддържа PostgreSQL, MySQL, Sqlite3 • Може да го подкарате и с MSSQL, Oracle и други бази • При нужда, може да напишете и ваш адаптер • Query интерфейс, поддържащ CRUD операции 11 август 12, събота
  212. ActiveRecord 11 август 12, събота

  213. ActiveRecord 11 август 12, събота

  214. ActiveRecord 11 август 12, събота

  215. ActiveRecord 11 август 12, събота

  216. ActiveRecord 11 август 12, събота

  217. ActiveRecord 11 август 12, събота

  218. ActiveRecord 11 август 12, събота

  219. ActiveRecord 11 август 12, събота

  220. ActiveRecord 11 август 12, събота

  221. ActiveRecord 11 август 12, събота

  222. ActiveRecord 11 август 12, събота

  223. ActiveRecord 11 август 12, събота

  224. ActiveRecord 11 август 12, събота

  225. Асоциации в AR 11 август 12, събота

  226. Асоциации в AR 11 август 12, събота

  227. Асоциации в AR 11 август 12, събота

  228. Асоциации в AR 11 август 12, събота

  229. Асоциации в AR 11 август 12, събота

  230. Асоциации в AR 11 август 12, събота

  231. Асоциации в AR 11 август 12, събота

  232. Асоциации в AR 11 август 12, събота

  233. Асоциации в AR 11 август 12, събота

  234. Асоциации в AR 11 август 12, събота

  235. Асоциации в AR 11 август 12, събота

  236. Асоциации в AR 11 август 12, събота

  237. Асоциации в AR 11 август 12, събота

  238. Валидации 11 август 12, събота

  239. Валидации • Валидация на данните, постъпващи към вашите модели 11

    август 12, събота
  240. Валидации • Валидация на данните, постъпващи към вашите модели •

    Задължителни полета 11 август 12, събота
  241. Валидации • Валидация на данните, постъпващи към вашите модели •

    Задължителни полета • Полета, които трябва да са само числа 11 август 12, събота
  242. Валидации • Валидация на данните, постъпващи към вашите модели •

    Задължителни полета • Полета, които трябва да са само числа • Числа в определен интервал 11 август 12, събота
  243. Валидации • Валидация на данните, постъпващи към вашите модели •

    Задължителни полета • Полета, които трябва да са само числа • Числа в определен интервал • Низове с определена дължина 11 август 12, събота
  244. Валидации • Валидация на данните, постъпващи към вашите модели •

    Задължителни полета • Полета, които трябва да са само числа • Числа в определен интервал • Низове с определена дължина • Низове, отговарящи на определен формат 11 август 12, събота
  245. Валидации • Валидация на данните, постъпващи към вашите модели •

    Задължителни полета • Полета, които трябва да са само числа • Числа в определен интервал • Низове с определена дължина • Низове, отговарящи на определен формат • Ваши валидатори 11 август 12, събота
  246. Валидации 11 август 12, събота

  247. Валидации 11 август 12, събота

  248. Валидации 11 август 12, събота

  249. Валидации 11 август 12, събота

  250. ActiveRecord 11 август 12, събота

  251. ActiveRecord • Много богато API 11 август 12, събота

  252. ActiveRecord • Много богато API • CRUD 11 август 12,

    събота
  253. ActiveRecord • Много богато API • CRUD • Асоциации (has_one,

    has_many, belongs_to, has_and_belongs_to_many) 11 август 12, събота
  254. ActiveRecord • Много богато API • CRUD • Асоциации (has_one,

    has_many, belongs_to, has_and_belongs_to_many) • Валидации 11 август 12, събота
  255. ActiveRecord • Много богато API • CRUD • Асоциации (has_one,

    has_many, belongs_to, has_and_belongs_to_many) • Валидации • Security през whitelist/blacklist на полета (attr_accessible/attr_protected) 11 август 12, събота
  256. ActiveRecord • Много богато API • CRUD • Асоциации (has_one,

    has_many, belongs_to, has_and_belongs_to_many) • Валидации • Security през whitelist/blacklist на полета (attr_accessible/attr_protected) • Ruby! 11 август 12, събота
  257. NoSQL 11 август 12, събота

  258. NoSQL • Можете да ползвате и NoSQL бази данни 11

    август 12, събота
  259. NoSQL • Можете да ползвате и NoSQL бази данни •

    MongoDB се поддържа през Mongoid 11 август 12, събота
  260. NoSQL • Можете да ползвате и NoSQL бази данни •

    MongoDB се поддържа през Mongoid • API-то му е подобно на ActiveRecord 11 август 12, събота
  261. NoSQL • Можете да ползвате и NoSQL бази данни •

    MongoDB се поддържа през Mongoid • API-то му е подобно на ActiveRecord • Също поддържа валидации и асоциации 11 август 12, събота
  262. NoSQL • Можете да ползвате и NoSQL бази данни •

    MongoDB се поддържа през Mongoid • API-то му е подобно на ActiveRecord • Също поддържа валидации и асоциации • Валидациите всъщност идват от ActiveModel 11 август 12, събота
  263. Контролери 11 август 12, събота

  264. Контролери 11 август 12, събота

  265. Контролери • Свързващото звено между модели и изгледи 11 август

    12, събота
  266. Контролери • Свързващото звено между модели и изгледи • Без

    прекалено много код вътре 11 август 12, събота
  267. Контролери • Свързващото звено между модели и изгледи • Без

    прекалено много код вътре • Имат достъп до HTTP request-а 11 август 12, събота
  268. Контролери • Свързващото звено между модели и изгледи • Без

    прекалено много код вътре • Имат достъп до HTTP request-а • Указват кои изгледи да се рендерират или какъв HTTP код да се върне 11 август 12, събота
  269. Контролери 11 август 12, събота

  270. Контролери • params съдържа параметри от HTTP заявката 11 август

    12, събота
  271. Контролери • params съдържа параметри от HTTP заявката • Рендерира

    изгледа projects/show.html 11 август 12, събота
  272. Контролери • params съдържа параметри от HTTP заявката • Рендерира

    изгледа projects/show.html • @project е достъпно в изгледа 11 август 12, събота
  273. Контролери 11 август 12, събота

  274. Контролери 11 август 12, събота

  275. Контролери 11 август 12, събота

  276. Контролери • show “визуализира” ресурса по конвенция 11 август 12,

    събота
  277. Контролери • show “визуализира” ресурса по конвенция • edit показва

    форма за редактиране на ресурса 11 август 12, събота
  278. Контролери • show “визуализира” ресурса по конвенция • edit показва

    форма за редактиране на ресурса • Достъпни само по HTTP GET 11 август 12, събота
  279. Контролери • show “визуализира” ресурса по конвенция • edit показва

    форма за редактиране на ресурса • Достъпни само по HTTP GET • update е достъпно само през HTTP POST и се грижи за “обновяване” на ресурса 11 август 12, събота
  280. Контролери 11 август 12, събота

  281. Контролери 11 август 12, събота

  282. Контролери • В случай на успех, прави HTTP 302 към

    show 11 август 12, събота
  283. Контролери • В случай на успех, прави HTTP 302 към

    show • Горното решава “Please confirm page reload” проблема 11 август 12, събота
  284. Контролери • В случай на успех, прави HTTP 302 към

    show • Горното решава “Please confirm page reload” проблема • При валидационна грешка, рендерира формата отново 11 август 12, събота
  285. Application Server 11 август 12, събота

  286. Application Server 11 август 12, събота

  287. Application Server • Вашето приложение се “стартира” веднъж 11 август

    12, събота
  288. Application Server • Вашето приложение се “стартира” веднъж • Вашият

    и кодът на Rails се прочитат веднъж 11 август 12, събота
  289. Application Server • Вашето приложение се “стартира” веднъж • Вашият

    и кодът на Rails се прочитат веднъж • Един request = един процес (или нишка) 11 август 12, събота
  290. Application Server • Вашето приложение се “стартира” веднъж • Вашият

    и кодът на Rails се прочитат веднъж • Един request = един процес (или нишка) • Multi-process или multi-threaded архитектура 11 август 12, събота
  291. Application Server • Вашето приложение се “стартира” веднъж • Вашият

    и кодът на Rails се прочитат веднъж • Един request = един процес (или нишка) • Multi-process или multi-threaded архитектура • 200+ MB RAM на процес 11 август 12, събота
  292. Application Server • Вашето приложение се “стартира” веднъж • Вашият

    и кодът на Rails се прочитат веднъж • Един request = един процес (или нишка) • Multi-process или multi-threaded архитектура • 200+ MB RAM на процес • Веднъж заредено, вашето приложение отговаря бързо 11 август 12, събота
  293. Application Server 11 август 12, събота

  294. Application Server • Старт в рамките на четвърт минута 11

    август 12, събота
  295. Application Server • Старт в рамките на четвърт минута •

    Кешира дефиниции на класове, модули и т.н. 11 август 12, събота
  296. Application Server • Старт в рамките на четвърт минута •

    Кешира дефиниции на класове, модули и т.н. • При промяна на кода — рестарт 11 август 12, събота
  297. Application Server • Старт в рамките на четвърт минута •

    Кешира дефиниции на класове, модули и т.н. • При промяна на кода — рестарт • А как разработвам, тогава!? 11 август 12, събота
  298. Environments 11 август 12, събота

  299. Environments 11 август 12, събота

  300. Environments • Ясно разделение на обкръженията 11 август 12, събота

  301. Environments • Ясно разделение на обкръженията • Три обкръжения по

    подразбиране 11 август 12, събота
  302. Environments • Ясно разделение на обкръженията • Три обкръжения по

    подразбиране • Development 11 август 12, събота
  303. Environments • Ясно разделение на обкръженията • Три обкръжения по

    подразбиране • Development • Test 11 август 12, събота
  304. Environments • Ясно разделение на обкръженията • Три обкръжения по

    подразбиране • Development • Test • Production 11 август 12, събота
  305. Environments • Ясно разделение на обкръженията • Три обкръжения по

    подразбиране • Development • Test • Production • Може да добавите ваши 11 август 12, събота
  306. Development 11 август 12, събота

  307. Development • Ползва се по подразбиране при разработка 11 август

    12, събота
  308. Development • Ползва се по подразбиране при разработка • Автоматично

    презарежда само кода на вашето приложение при нужда 11 август 12, събота
  309. Development • Ползва се по подразбиране при разработка • Автоматично

    презарежда само кода на вашето приложение при нужда • Не кешира дефиниции на класове и модули 11 август 12, събота
  310. Development • Ползва се по подразбиране при разработка • Автоматично

    презарежда само кода на вашето приложение при нужда • Не кешира дефиниции на класове и модули • Виждате backtrace при изключения 11 август 12, събота
  311. Development • Ползва се по подразбиране при разработка • Автоматично

    презарежда само кода на вашето приложение при нужда • Не кешира дефиниции на класове и модули • Виждате backtrace при изключения • Има и някои други малки разлики 11 август 12, събота
  312. Production 11 август 12, събота

  313. Production • На “production” сървъра 11 август 12, събота

  314. Production • На “production” сървъра • Кешира много неща 11

    август 12, събота
  315. Production • На “production” сървъра • Кешира много неща •

    Рестарт за нова версия на кода 11 август 12, събота
  316. Production • На “production” сървъра • Кешира много неща •

    Рестарт за нова версия на кода • Без backtrace при изключения 11 август 12, събота
  317. Production • На “production” сървъра • Кешира много неща •

    Рестарт за нова версия на кода • Без backtrace при изключения • Други малки разлики 11 август 12, събота
  318. Asset Pipeline 11 август 12, събота

  319. Asset Pipeline 11 август 12, събота

  320. Asset Pipeline • Зряло решение на сериозен проблем 11 август

    12, събота
  321. Asset Pipeline • Зряло решение на сериозен проблем • “Пакетира”

    вашите asset-и (CSS, JavaScript, картинки и прочее) 11 август 12, събота
  322. Asset Pipeline • Зряло решение на сериозен проблем • “Пакетира”

    вашите asset-и (CSS, JavaScript, картинки и прочее) • Комбинира JavaScript файловете ви в един и го minify-ва и gzip-ва 11 август 12, събота
  323. Asset Pipeline • Зряло решение на сериозен проблем • “Пакетира”

    вашите asset-и (CSS, JavaScript, картинки и прочее) • Комбинира JavaScript файловете ви в един и го minify-ва и gzip-ва • Същото прави и за CSS 11 август 12, събота
  324. Asset Pipeline • Зряло решение на сериозен проблем • “Пакетира”

    вашите asset-и (CSS, JavaScript, картинки и прочее) • Комбинира JavaScript файловете ви в един и го minify-ва и gzip-ва • Същото прави и за CSS • Имената на резултатните файлове съдържат хеш от съдържанието на файла 11 август 12, събота
  325. Asset Pipeline 11 август 12, събота

  326. Asset Pipeline • Лесен cache invalidation — при промяна съдържанието

    на файла се сменя хеша и следователно името му 11 август 12, събота
  327. Asset Pipeline • Лесен cache invalidation — при промяна съдържанието

    на файла се сменя хеша и следователно името му • Кеширате во веки веков 11 август 12, събота
  328. Asset Pipeline • Лесен cache invalidation — при промяна съдържанието

    на файла се сменя хеша и следователно името му • Кеширате во веки веков • Поддръжка на CDN 11 август 12, събота
  329. Asset Pipeline • Лесен cache invalidation — при промяна съдържанието

    на файла се сменя хеша и следователно името му • Кеширате во веки веков • Поддръжка на CDN • Ползвате помощни функции, за да вкарвате линкове към вашите статични файлове 11 август 12, събота
  330. Asset Pipeline • Лесен cache invalidation — при промяна съдържанието

    на файла се сменя хеша и следователно името му • Кеширате во веки веков • Поддръжка на CDN • Ползвате помощни функции, за да вкарвате линкове към вашите статични файлове • Горното важи за и за HTML, и за CSS 11 август 12, събота
  331. Asset Pipeline 11 август 12, събота

  332. Asset Pipeline Вашият код 11 август 12, събота

  333. Asset Pipeline Вашият код Development 11 август 12, събота

  334. Asset Pipeline Вашият код Development Production 11 август 12, събота

  335. Asset Pipeline 11 август 12, събота

  336. Asset Pipeline • По-малко HTTP заявки = по-бързо 11 август

    12, събота
  337. Asset Pipeline • По-малко HTTP заявки = по-бързо • По-малки

    файлове = по-бързо 11 август 12, събота
  338. Asset Pipeline • По-малко HTTP заявки = по-бързо • По-малки

    файлове = по-бързо • Кеширани файлове = по-бързо 11 август 12, събота
  339. Asset Pipeline • По-малко HTTP заявки = по-бързо • По-малки

    файлове = по-бързо • Кеширани файлове = по-бързо • Употреба на CDN = по-бързо 11 август 12, събота
  340. Asset Pipeline • По-малко HTTP заявки = по-бързо • По-малки

    файлове = по-бързо • Кеширани файлове = по-бързо • Употреба на CDN = по-бързо • Без главоболие от ваша страна 11 август 12, събота
  341. Asset Pipeline • По-малко HTTP заявки = по-бързо • По-малки

    файлове = по-бързо • Кеширани файлове = по-бързо • Употреба на CDN = по-бързо • Без главоболие от ваша страна • Бонус — pre-processor-и на CSS и JavaScript! 11 август 12, събота
  342. SASS 11 август 12, събота

  343. SASS SCSS 11 август 12, събота

  344. SASS SCSS CSS 11 август 12, събота

  345. SASS 11 август 12, събота

  346. SASS • Влагане на селектори за по-DRY CSS 11 август

    12, събота
  347. SASS • Влагане на селектори за по-DRY CSS • Променливи

    11 август 12, събота
  348. SASS • Влагане на селектори за по-DRY CSS • Променливи

    • Нещо близко до функции 11 август 12, събота
  349. SASS • Влагане на селектори за по-DRY CSS • Променливи

    • Нещо близко до функции • Аритметика с пиксели 11 август 12, събота
  350. SASS • Влагане на селектори за по-DRY CSS • Променливи

    • Нещо близко до функции • Аритметика с пиксели • Аритметика с цветове (lighten/darken) 11 август 12, събота
  351. SASS • Влагане на селектори за по-DRY CSS • Променливи

    • Нещо близко до функции • Аритметика с пиксели • Аритметика с цветове (lighten/darken) • “Вграден” в asset pipeline-а 11 август 12, събота
  352. SASS • Влагане на селектори за по-DRY CSS • Променливи

    • Нещо близко до функции • Аритметика с пиксели • Аритметика с цветове (lighten/darken) • “Вграден” в asset pipeline-а • http://sass-lang.com/ 11 август 12, събота
  353. CoffeeScript JavaScript CoffeeScript 11 август 12, събота

  354. CoffeeScript 11 август 12, събота

  355. CoffeeScript 11 август 12, събота

  356. CoffeeScript • JavaScript с по-приятен синтаксис 11 август 12, събота

  357. CoffeeScript • JavaScript с по-приятен синтаксис • Покрива доста проблеми

    на JS 11 август 12, събота
  358. CoffeeScript • JavaScript с по-приятен синтаксис • Покрива доста проблеми

    на JS • Вкарва нови и готини неща 11 август 12, събота
  359. CoffeeScript • JavaScript с по-приятен синтаксис • Покрива доста проблеми

    на JS • Вкарва нови и готини неща • “Вграден” в asset pipeline-а 11 август 12, събота
  360. CoffeeScript • JavaScript с по-приятен синтаксис • Покрива доста проблеми

    на JS • Вкарва нови и готини неща • “Вграден” в asset pipeline-а • http://coffeescript.org/ 11 август 12, събота
  361. Маршрутизатор 11 август 12, събота

  362. Маршрутизатор 11 август 12, събота

  363. Маршрутизатор • Централизирано знание 11 август 12, събота

  364. Маршрутизатор • Централизирано знание • Двупосочна връзка между HTTP и

    методи във вашите контролери 11 август 12, събота
  365. Маршрутизатор • Централизирано знание • Двупосочна връзка между HTTP и

    методи във вашите контролери • Какви URL-и обслужва вашето приложение 11 август 12, събота
  366. Маршрутизатор • Централизирано знание • Двупосочна връзка между HTTP и

    методи във вашите контролери • Какви URL-и обслужва вашето приложение • Коя част от кода обслужва даден URL 11 август 12, събота
  367. Маршрутизатор • Централизирано знание • Двупосочна връзка между HTTP и

    методи във вашите контролери • Какви URL-и обслужва вашето приложение • Коя част от кода обслужва даден URL • И обратната посока — какъв е URL-ът, обслужван от даден код 11 август 12, събота
  368. Маршрутизатор • Централизирано знание • Двупосочна връзка между HTTP и

    методи във вашите контролери • Какви URL-и обслужва вашето приложение • Коя част от кода обслужва даден URL • И обратната посока — какъв е URL-ът, обслужван от даден код • RESTful маршрути и ресурси 11 август 12, събота
  369. Маршрутизатор 11 август 12, събота

  370. Маршрутизатор 11 август 12, събота

  371. Маршрутизатор 11 август 12, събота

  372. Маршрутизатор 11 август 12, събота

  373. Маршрутизатор Вашият код Генериран URL 11 август 12, събота

  374. Миграции 11 август 12, събота

  375. Миграции 11 август 12, събота

  376. Миграции • Структурата на базата ви е в кода 11

    август 12, събота
  377. Миграции • Структурата на базата ви е в кода •

    Създаване и премахване на таблици 11 август 12, събота
  378. Миграции • Структурата на базата ви е в кода •

    Създаване и премахване на таблици • Добавяне/премахване на колони, индекси и прочее 11 август 12, събота
  379. Миграции • Структурата на базата ви е в кода •

    Създаване и премахване на таблици • Добавяне/премахване на колони, индекси и прочее • Всичко е във вашия код 11 август 12, събота
  380. Миграции • Структурата на базата ви е в кода •

    Създаване и премахване на таблици • Добавяне/премахване на колони, индекси и прочее • Всичко е във вашия код • Улеснява колаборацията 11 август 12, събота
  381. Миграции • Структурата на базата ви е в кода •

    Създаване и премахване на таблици • Добавяне/премахване на колони, индекси и прочее • Всичко е във вашия код • Улеснява колаборацията • Улеснява deployment-а на вашето приложение 11 август 12, събота
  382. Миграции и deployment 11 август 12, събота

  383. Миграции и deployment • Имат up() и down() методи 11

    август 12, събота
  384. Миграции и deployment • Имат up() и down() методи •

    Тоест, могат да бъдат “обръщани” 11 август 12, събота
  385. Миграции и deployment • Имат up() и down() методи •

    Тоест, могат да бъдат “обръщани” • Качвате новата версия на базата заедно с новата версия на кода 11 август 12, събота
  386. Миграции и deployment • Имат up() и down() методи •

    Тоест, могат да бъдат “обръщани” • Качвате новата версия на базата заедно с новата версия на кода • Ако нещо се обърка, down() ви спасява 11 август 12, събота
  387. Миграции и deployment • Имат up() и down() методи •

    Тоест, могат да бъдат “обръщани” • Качвате новата версия на базата заедно с новата версия на кода • Ако нещо се обърка, down() ви спасява • Произволен Ruby-код в миграциите 11 август 12, събота
  388. Миграции 11 август 12, събота

  389. Миграции 11 август 12, събота

  390. Миграции 11 август 12, събота

  391. Миграции 11 август 12, събота

  392. Миграции 11 август 12, събота

  393. Тестове 11 август 12, събота

  394. Тестове 11 август 12, събота

  395. Тестове • Готова структура за писане на тестове 11 август

    12, събота
  396. Тестове • Готова структура за писане на тестове • Unit-тестове

    за вашите модели и класове 11 август 12, събота
  397. Тестове • Готова структура за писане на тестове • Unit-тестове

    за вашите модели и класове • Контролер-тестове 11 август 12, събота
  398. Тестове • Готова структура за писане на тестове • Unit-тестове

    за вашите модели и класове • Контролер-тестове • Тестове на вашите изгледи 11 август 12, събота
  399. Тестове • Готова структура за писане на тестове • Unit-тестове

    за вашите модели и класове • Контролер-тестове • Тестове на вашите изгледи • Интеграционни тестове 11 август 12, събота
  400. Тестове • Готова структура за писане на тестове • Unit-тестове

    за вашите модели и класове • Контролер-тестове • Тестове на вашите изгледи • Интеграционни тестове • Самият Rails е много добре тестван 11 август 12, събота
  401. Тестове • Готова структура за писане на тестове • Unit-тестове

    за вашите модели и класове • Контролер-тестове • Тестове на вашите изгледи • Интеграционни тестове • Самият Rails е много добре тестван • Култура на тестване 11 август 12, събота
  402. Тестове 11 август 12, събота

  403. Тестове • Заменяеми тестови фреймуърци 11 август 12, събота

  404. Тестове • Заменяеми тестови фреймуърци • Test::Unit, RSpec, MiniTest —

    изборът е ваш 11 август 12, събота
  405. Тестове • Заменяеми тестови фреймуърци • Test::Unit, RSpec, MiniTest —

    изборът е ваш • Важното е да пишете тестове 11 август 12, събота
  406. Други аспекти 11 август 12, събота

  407. Други аспекти • Култура на добри практики и качествен код

    11 август 12, събота
  408. Други аспекти • Култура на добри практики и качествен код

    • Convention over configuration 11 август 12, събота
  409. Други аспекти • Култура на добри практики и качествен код

    • Convention over configuration • The Rails Way™ 11 август 12, събота
  410. Други аспекти • Култура на добри практики и качествен код

    • Convention over configuration • The Rails Way™ • VCS — Git 11 август 12, събота
  411. Други аспекти • Култура на добри практики и качествен код

    • Convention over configuration • The Rails Way™ • VCS — Git • Управление на зависимости от външни библиотеки — Bundler 11 август 12, събота
  412. Други аспекти • Култура на добри практики и качествен код

    • Convention over configuration • The Rails Way™ • VCS — Git • Управление на зависимости от външни библиотеки — Bundler • Инфраструктура за пращане на мейли, с подобна на MVC-архитектура 11 август 12, събота
  413. 11 август 12, събота

  414. Върхът на айсберга... 11 август 12, събота

  415. Защо да го уча? 11 август 12, събота

  416. Защо да го уча? • Аналогично на Ruby — ще

    ви направи по- добри и по-щастливи програмисти 11 август 12, събота
  417. Защо да го уча? • Аналогично на Ruby — ще

    ви направи по- добри и по-щастливи програмисти • Как да убедя фирмата, в която работя, да обърне внимание на Rails? 11 август 12, събота
  418. Защо да го уча? • Аналогично на Ruby — ще

    ви направи по- добри и по-щастливи програмисти • Как да убедя фирмата, в която работя, да обърне внимание на Rails? • Най-лесно: с готов резултат/проект 11 август 12, събота
  419. Защо да го уча? • Аналогично на Ruby — ще

    ви направи по- добри и по-щастливи програмисти • Как да убедя фирмата, в която работя, да обърне внимание на Rails? • Най-лесно: с готов резултат/проект • По-лесна поддръжка (документация, community, други разработчици) 11 август 12, събота
  420. Ако ви стана интересно... 11 август 12, събота

  421. 11 август 12, събота

  422. Изцапайте си ръцете! 11 август 12, събота

  423. Изцапайте си ръцете! • Rails Installer http://railsinstaller.org/ (за Windows и

    Mac OS) 11 август 12, събота
  424. Изцапайте си ръцете! • Rails Installer http://railsinstaller.org/ (за Windows и

    Mac OS) • За *NIX дистрибуции не е с два клика, но пак е лесно 11 август 12, събота
  425. Изцапайте си ръцете! • Rails Installer http://railsinstaller.org/ (за Windows и

    Mac OS) • За *NIX дистрибуции не е с два клика, но пак е лесно • Ако имате нужда от помощ, питайте смело! 11 август 12, събота
  426. Ресурси за Ruby 11 август 12, събота

  427. http://pragprog.com/book/ruby3/programming-ruby-1-9 11 август 12, събота

  428. Ресурси за Ruby 11 август 12, събота

  429. Ресурси за Ruby • Онлайн — без инсталация 11 август

    12, събота
  430. Ресурси за Ruby • Онлайн — без инсталация • RubyMonk

    — http://rubymonk.com/ 11 август 12, събота
  431. Ресурси за Ruby • Онлайн — без инсталация • RubyMonk

    — http://rubymonk.com/ • TryRuby — http://tryruby.org/levels/1/ challenges/0 11 август 12, събота
  432. Ресурси за Ruby • Онлайн — без инсталация • RubyMonk

    — http://rubymonk.com/ • TryRuby — http://tryruby.org/levels/1/ challenges/0 • Тонове из интернет 11 август 12, събота
  433. Или... 11 август 12, събота

  434. Посетете нашите курсове във ФМИ http://fmi.ruby.bg/ 11 август 12, събота

  435. Ресурси за Rails 11 август 12, събота

  436. http://pragprog.com/book/rails4/agile-web-development-with-rails 11 август 12, събота

  437. http://guides.rubyonrails.org/ 11 август 12, събота

  438. Ресурси за Rails 11 август 12, събота

  439. Ресурси за Rails • Oще на http://rubyonrails.org/documentation 11 август 12,

    събота
  440. Ресурси за Rails • Oще на http://rubyonrails.org/documentation • Screencasts —

    http://rubyonrails.org/screencasts 11 август 12, събота
  441. Ресурси за Rails • Oще на http://rubyonrails.org/documentation • Screencasts —

    http://rubyonrails.org/screencasts • Например RailsCasts 11 август 12, събота
  442. Ресурси за Rails • Oще на http://rubyonrails.org/documentation • Screencasts —

    http://rubyonrails.org/screencasts • Например RailsCasts • AsciiCasts — текстов вариант на горното 11 август 12, събота
  443. Учене от примери 11 август 12, събота

  444. Учене от примери • Немалко Rails проекти с отворен код

    в GitHub 11 август 12, събота
  445. Учене от примери • Немалко Rails проекти с отворен код

    в GitHub • Например https://github.com/skanev/evans 11 август 12, събота
  446. Учене от примери • Немалко Rails проекти с отворен код

    в GitHub • Например https://github.com/skanev/evans • Това е кодът зад http://fmi.ruby.bg 11 август 12, събота
  447. Учене от примери • Немалко Rails проекти с отворен код

    в GitHub • Например https://github.com/skanev/evans • Това е кодът зад http://fmi.ruby.bg • Ще се радваме да ви насочим! 11 август 12, събота
  448. 11 август 12, събота

  449. Въпроси? Димитър Димитров http://ddimitrov.name @mitio 11 август 12, събота