Быстра разработка приложений              на         Ruby on Rails     Быстро - понятие растяжимое. Цена разработки и сопр...
Я представил себе такой...
У нас такие же разные представления о                понятии         скорости разработки
Разработка приложений через        тестирование        BDD, TDD
Сначала тест, потом код.Почему так, а не иначе и почему         это важно?!
Shoulda, CucumberМодульные, функциональные тесты.  Тестирование высокого уровня
class BidTest < ActiveSupport::TestCase  context with Bid instance do    setup {@bid = Factory(:bid)}    subject {@bid}   ...
class Bid < ActiveRecord::Base  belongs_to :author, :class_name => User,    :foreign_key => :author_id  belongs_to :sectio...
language: uk   Cucumber. FeatureФункціонал: Вхід Для того, щоб отримати доступ до захищених розділів сайта, користувач пов...
Cucumber. Step definitionsЯкщо /^я йду за адресою "(.*)"$/ do |link|  visit (link)endЯкщо /^я пишу "([^"]*)" в "([^"]*)"$/...
Cucumber. Step DefinitionsНехай /^є користувач, зареєстрованний як "(.*)/(.*)"$/ do|email, password|  Factory(:user, :emai...
Autoest & RedGreen Сделать красное зеленым.Код сам скажет где ему плохо. Код разговаривает с вами.      ... это не трава...
Рефакторинг - это не больно.      "Работает - не трогай"                 -        это не наш метод!!!
Fakeweb, WebMock,   netrecorder, mochaWEB - в отдельно взятом тазике. Моделируем ответы сервисов.Ваша индивидуальная матри...
RakeТруд машин на плечи женщин!
Annotate, RCov, Railroad    Код под микроскопом
rdoc, sdocДокументирование
gem, github, rubygems, gemcutter        Время собирать камни
APITwitter, LiveJournal, Buzz,  OpenID, oAuth, Yahoo,Imdb, geoapi, Google Maps           etc.
ORM. Database AgnosticMySQL, Oracle, PostgreSQL, SQLite3
IDE   VIM, Emacs, TextMait, Redcar,NetBeans,(for Rails), Aptana(Eclipse),        RubyMine(IDEA),          3rdRail(Borland)
Развертывание приложений        Capistrano
Спасибо за внимание!       Roman V. Babenko    http://romanvbabenko.comhttp://romanvbabenko.blogspot.com        CodeCamp 2...
Upcoming SlideShare
Loading in …5
×

Rapid application development in Ruby on Rails

518 views

Published on

CodeCamp 2010, Kyiv

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
518
On SlideShare
0
From Embeds
0
Number of Embeds
6
Actions
Shares
0
Downloads
0
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Rapid application development in Ruby on Rails

  1. 1. Быстра разработка приложений на Ruby on Rails Быстро - понятие растяжимое. Цена разработки и сопровождение кода. Представьте себе стол.
  2. 2. Я представил себе такой...
  3. 3. У нас такие же разные представления о понятии скорости разработки
  4. 4. Разработка приложений через тестирование BDD, TDD
  5. 5. Сначала тест, потом код.Почему так, а не иначе и почему это важно?!
  6. 6. Shoulda, CucumberМодульные, функциональные тесты. Тестирование высокого уровня
  7. 7. class BidTest < ActiveSupport::TestCase context with Bid instance do setup {@bid = Factory(:bid)} subject {@bid} should_belong_to :author, :broker, :client should_belong_to :section, :unit, :currency should_validate_presence_of :code, :name, :content, :workflow_state should_validate_presence_of :price, :min_quantity, :max_quantity should_validate_numericality_of :price, :min_quantity, :max_quantity should_validate_uniqueness_of :code context with quantity do setup {@bid = Factory.build(:bid, :max_quantity => 1, :min_quantity => 100 ) } subject { @bid } should("have :max_quantity greater then or equal :min_quantity") { assert ! @bid.save } end end endend
  8. 8. class Bid < ActiveRecord::Base belongs_to :author, :class_name => User, :foreign_key => :author_id belongs_to :section, :counter_cache => true ... belongs_to :unit belongs_to :currency def validate if self.min_quantity.to_i > self.max_quantity.to_i errors.add(:min_quantity, "cant be greater then max_quantity") end end named_scope :recent, :limit => 10, :order => :created_at descend
  9. 9. language: uk Cucumber. FeatureФункціонал: Вхід Для того, щоб отримати доступ до захищених розділів сайта, користувач повинен увійти в систему Сценарій: Користувач успішно здійснив вхід Нехай є користувач, зареєстрованний як "user@example.com/password" Якщо я йду за адресою "/users/sign_in" І я пишу "user@example.com" в "user_email" І я пишу "password" в "user_password" І я натискаю "Sign in" То я повинен побачити "Ви успішно увійшли до системи." Сценарій: Користувач успішно здійснив вихід Нехай є користувач, зареєстрованний як "user@example.com/password" Нехай я зайшов як "user@example.com/password"
  10. 10. Cucumber. Step definitionsЯкщо /^я йду за адресою "(.*)"$/ do |link| visit (link)endЯкщо /^я пишу "([^"]*)" в "([^"]*)"$/ do |value, field| fill_in field, :with => valueendЯкщо /^я натискаю "([^"]*)"$/ do |button| click_button(button)endТо /^я повинен побачити "(.*)"$/ do |text| assert page.has_content?(text)end
  11. 11. Cucumber. Step DefinitionsНехай /^є користувач, зареєстрованний як "(.*)/(.*)"$/ do|email, password| Factory(:user, :email => email, :password => password)endНехай /^я зайшов як "(.*)/(.*)"$/ do |email, password| Якщо %{я йду за адресою "/users/sign_in"} І %{я пишу "#{email}" в "user_email"} І %{я пишу "#{password}" в "user_password"} І %{я натискаю "Sign in"} То %{я повинен побачити "Ви успішно увійшли до системи."}end
  12. 12. Autoest & RedGreen Сделать красное зеленым.Код сам скажет где ему плохо. Код разговаривает с вами. ... это не трава...
  13. 13. Рефакторинг - это не больно. "Работает - не трогай" - это не наш метод!!!
  14. 14. Fakeweb, WebMock, netrecorder, mochaWEB - в отдельно взятом тазике. Моделируем ответы сервисов.Ваша индивидуальная матрица.
  15. 15. RakeТруд машин на плечи женщин!
  16. 16. Annotate, RCov, Railroad Код под микроскопом
  17. 17. rdoc, sdocДокументирование
  18. 18. gem, github, rubygems, gemcutter Время собирать камни
  19. 19. APITwitter, LiveJournal, Buzz, OpenID, oAuth, Yahoo,Imdb, geoapi, Google Maps etc.
  20. 20. ORM. Database AgnosticMySQL, Oracle, PostgreSQL, SQLite3
  21. 21. IDE VIM, Emacs, TextMait, Redcar,NetBeans,(for Rails), Aptana(Eclipse), RubyMine(IDEA), 3rdRail(Borland)
  22. 22. Развертывание приложений Capistrano
  23. 23. Спасибо за внимание! Roman V. Babenko http://romanvbabenko.comhttp://romanvbabenko.blogspot.com CodeCamp 2010

×