Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

MVC Demystified: Essence of Ruby on Rails

44,289 views

Published on

Examines the MVC design pattern and how Rails adheres to this powerful design pattern. Good introduction to Ruby on Rails framework.

Published in: Technology
  • Follow the link, new dating source: ❶❶❶ http://bit.ly/39pMlLF ❶❶❶
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • Dating direct: ♥♥♥ http://bit.ly/39pMlLF ♥♥♥
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD THIS BOOKS INTO AVAILABLE FORMAT (2019 Update) ......................................................................................................................... ......................................................................................................................... Download Full PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download Full EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download Full doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download PDF EBOOK here { https://soo.gd/irt2 } ......................................................................................................................... Download EPUB Ebook here { https://soo.gd/irt2 } ......................................................................................................................... Download doc Ebook here { https://soo.gd/irt2 } ......................................................................................................................... ......................................................................................................................... ................................................................................................................................... eBook is an electronic version of a traditional print book THIS can be read by using a personal computer or by using an eBook reader. (An eBook reader can be a software application for use on a computer such as Microsoft's free Reader application, or a book-sized computer THIS is used solely as a reading device such as Nuvomedia's Rocket eBook.) Users can purchase an eBook on diskette or CD, but the most popular method of getting an eBook is to purchase a downloadable file of the eBook (or other reading material) from a Web site (such as Barnes and Noble) to be read from the user's computer or reading device. Generally, an eBook can be downloaded in five minutes or less ......................................................................................................................... .............. Browse by Genre Available eBooks .............................................................................................................................. Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, ......................................................................................................................... ......................................................................................................................... .....BEST SELLER FOR EBOOK RECOMMEND............................................................. ......................................................................................................................... Blowout: Corrupted Democracy, Rogue State Russia, and the Richest, Most Destructive Industry on Earth,-- The Ride of a Lifetime: Lessons Learned from 15 Years as CEO of the Walt Disney Company,-- Call Sign Chaos: Learning to Lead,-- StrengthsFinder 2.0,-- Stillness Is the Key,-- She Said: Breaking the Sexual Harassment Story THIS Helped Ignite a Movement,-- Atomic Habits: An Easy & Proven Way to Build Good Habits & Break Bad Ones,-- Everything Is Figureoutable,-- What It Takes: Lessons in the Pursuit of Excellence,-- Rich Dad Poor Dad: What the Rich Teach Their Kids About Money THIS the Poor and Middle Class Do Not!,-- The Total Money Makeover: Classic Edition: A Proven Plan for Financial Fitness,-- Shut Up and Listen!: Hard Business Truths THIS Will Help You Succeed, ......................................................................................................................... .........................................................................................................................
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... ,DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here
  • DOWNLOAD FULL BOOKS, INTO AVAILABLE FORMAT ......................................................................................................................... ......................................................................................................................... ,DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. PDF EBOOK here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. EPUB Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ,DOWNLOAD FULL. doc Ebook here { https://tinyurl.com/yyxo9sk7 } ......................................................................................................................... ......................................................................................................................... ......................................................................................................................... .............. Browse by Genre Available eBooks ......................................................................................................................... Art, Biography, Business, Chick Lit, Children's, Christian, Classics, Comics, Contemporary, Cookbooks, Crime, Ebooks, Fantasy, Fiction, Graphic Novels, Historical Fiction, History, Horror, Humor And Comedy, Manga, Memoir, Music, Mystery, Non Fiction, Paranormal, Philosophy, Poetry, Psychology, Religion, Romance, Science, Science Fiction, Self Help, Suspense, Spirituality, Sports, Thriller, Travel, Young Adult,
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

MVC Demystified: Essence of Ruby on Rails

  1. MVC Demystified Webvisions 2007 Michael P. Jones [email_address] Understanding the Essence of Ruby on Rails
  2. About Session <ul><li>Web applications </li></ul><ul><li>MVC </li></ul><ul><li>Pix Patisserie </li></ul><ul><li>MVC Another Look </li></ul><ul><li>Rails Essence </li></ul><ul><li>More Rails </li></ul><ul><li>Rails Testing </li></ul><ul><li>Other MVC </li></ul>
  3. About Speaker <ul><li>Past </li></ul><ul><ul><li>Educational and Reservation software. (Java) </li></ul></ul><ul><ul><li>Founded Code in Motion. http://codeinmotion.com/ </li></ul></ul><ul><li>Present </li></ul><ul><ul><li>Creating custom Ruby on Rails applications. </li></ul></ul><ul><ul><ul><li>Recovery and prevention. </li></ul></ul></ul><ul><ul><ul><li>Screening and Interview </li></ul></ul></ul><ul><ul><ul><li>PDF generation of applications </li></ul></ul></ul><ul><ul><ul><li>Widgets </li></ul></ul></ul><ul><ul><li>Tailoring CMS Solutions </li></ul></ul><ul><ul><ul><li>Radiant, Rails based CMS with extensions for business needs of the client. </li></ul></ul></ul>
  4. Traditional Applications <ul><li>Browser directly accesses page. </li></ul><ul><ul><li>Does not centralize control </li></ul></ul><ul><ul><li>No content/style separation </li></ul></ul><ul><ul><li>Easy and fast to produce </li></ul></ul><ul><ul><li>Difficult to maintain </li></ul></ul>
  5. MVC Applications <ul><li>Browser accesses a “controller” </li></ul><ul><ul><li>Centralizes control </li></ul></ul><ul><ul><li>Clean separation of content/style </li></ul></ul><ul><ul><li>More involved to produce </li></ul></ul><ul><ul><li>Easier to maintain and expand </li></ul></ul>
  6. MVC <ul><li>MVC is an Architectural Design Pattern </li></ul><ul><li>Separates a web application into three different modules. </li></ul>
  7. Design Pattern <ul><li>A pattern that has been developed to help programmers cope with common problems. </li></ul><ul><li>Blueprints on how to construct something. </li></ul>
  8. MVC Means <ul><li>Most Vexing Conundrum (Amy Hoy) </li></ul><ul><li>Model | View | Controller </li></ul>
  9. Trip to Pix <ul><li>A Patisserie in Portland </li></ul>http://qwendy.typepad.com/
  10. Typical Bakery Interaction <ul><li>Request a tasty treat from the baker </li></ul>http://www.pixpatisserie.com/
  11. Baker Gathers Ingredients <ul><li>Baker gathers raw ingredients to fulfill the request. </li></ul><ul><li>Some requests utilize same ingredients. </li></ul>http://www.flickr.com/photos/moria/92792777/
  12. Baker Select Pan <ul><li>The pan dictates what the response looks like. </li></ul>http://www.flickr.com/photos/tracyhunter/113563802/
  13. Baker responds with your treat http://www.pixpatisserie.com/
  14. Pix Flow
  15. MVC Diagram
  16. Controller (Baker) <ul><li>Dispatches Requests and controls flow. </li></ul><ul><li>Centralizes access. </li></ul><ul><li>Interacts with Model and View. </li></ul>
  17. Model (Ingredients) <ul><li>Data representation and business logic. </li></ul><ul><li>Can be database/xml/etc </li></ul><ul><li>Business Logic </li></ul><ul><li>Examples: </li></ul><ul><ul><li>User </li></ul></ul><ul><ul><li>Bike </li></ul></ul><ul><ul><li>Question </li></ul></ul>
  18. View (Pan) <ul><li>Data presentation and user input. </li></ul><ul><li>Renders the Model in to a View. </li></ul><ul><li>Can be HTML/PDF/WML/Javascript </li></ul><ul><li>No computations, very little logic, display logic i.e. loops </li></ul>
  19. MVC Diagram
  20. MVC Advantages <ul><li>Separation of interests. </li></ul><ul><ul><li>Model centralizes business logic. </li></ul></ul><ul><ul><li>View centralizes display logic. </li></ul></ul><ul><ul><li>Controller centralizes application flow. </li></ul></ul><ul><li>Clean separation of content/style. </li></ul><ul><li>Improved decoupling. </li></ul><ul><li>Easier testing. </li></ul><ul><li>Allow multiple people to work on different parts. </li></ul>
  21. Rails and MVC <ul><li>Rails in an MVC framework </li></ul><ul><li>”… Rails is such a framework that tries to remove the complexity and drudgery of MVC, while still allowing you to realize all the benefits.” - DHH (David Heinemeier Hansson) </li></ul>
  22. Model: ActiveRecord <ul><li>ActiveRecord is a design pattern. (Martin Fowler) </li></ul><ul><li>Object wraps a row in the database. </li></ul><ul><li>Encapsulates data access. </li></ul><ul><li>Contains business logic. </li></ul><ul><li>Handles relationships. </li></ul><ul><li>Handles validation. </li></ul>
  23. ActiveRecord Code
  24. View: ActionView <ul><li>Renders the view. </li></ul><ul><li>Both .rhtml and .rxml files. </li></ul><ul><li>Provides master layouts. </li></ul><ul><li>Uses ERb (embedded ruby) for templating and control. </li></ul>
  25. ActionView Code
  26. Controller: ActionController <ul><li>Controls application flow. </li></ul><ul><li>Controls which view to use. </li></ul><ul><li>Makes data available as instance variables @var </li></ul><ul><li>Contains several actions/defs </li></ul><ul><li>Controls rendering and redirection. </li></ul>
  27. ActionController Code
  28. All Together Now http://wiki.rubyonrails.org/
  29. How it works <ul><li>your_domain.com/controller/action/id </li></ul><ul><li>Controller has actions. </li></ul><ul><li>View directory has directory for each controller. </li></ul><ul><li>Same action name as .rhtml file </li></ul><ul><li>your_domain.com/bikes/edit/2 </li></ul><ul><ul><li>Controller: bikes </li></ul></ul><ul><ul><li>Action: edit </li></ul></ul><ul><ul><li>Id: 2 </li></ul></ul>
  30. Rails Concepts <ul><li>DRY (Don’t Repeat Yourself) </li></ul><ul><li>Convention of configuration </li></ul><ul><li>Generators script/generate generator_name </li></ul><ul><li>:symbols or ‘symbols’ </li></ul><ul><ul><li>represents names and strings </li></ul></ul><ul><li>YAML machine parsable human readable. </li></ul>
  31. More ActiveRecord <ul><li>Automatically maps to a table </li></ul><ul><ul><li>No XML configs </li></ul></ul><ul><ul><li>Each row is an Object </li></ul></ul><ul><li>Several databases supported. </li></ul><ul><li>Provides </li></ul><ul><ul><li>CRUD: Create, Read, Update, Destroy </li></ul></ul><ul><ul><li>Getters/Setters </li></ul></ul><ul><ul><li>Validation: validates_presence_of, validates_format_of </li></ul></ul><ul><ul><li>Callbacks: hooks into lifecycle, trigger events before/after </li></ul></ul><ul><ul><li>Finding: Person.find(:all, :conditions => [ &quot;category IN (?)&quot;, categories], :limit => 50) </li></ul></ul>
  32. More ActiveRecord Code <ul><li>Callbacks </li></ul><ul><li>Relations </li></ul><ul><li>Validation </li></ul>
  33. More ActionView <ul><li>Layouts </li></ul><ul><ul><li>app/view/layouts/application.rhtml </li></ul></ul><ul><li>Partials </li></ul><ul><ul><li>_partial_view.rhtml </li></ul></ul><ul><ul><li>Reuse of common view elements </li></ul></ul><ul><li>Helpers </li></ul><ul><ul><li>Helper module per Controller </li></ul></ul><ul><ul><li>Contains Ruby code </li></ul></ul>
  34. More ActionView Code
  35. More ActionController <ul><li>Filters </li></ul><ul><ul><li>before , after and around processing hooks </li></ul></ul><ul><li>Routes </li></ul><ul><ul><li>Replaces apache mod_rewrite </li></ul></ul><ul><ul><li>config/routes.rb </li></ul></ul><ul><li>Caching </li></ul><ul><ul><li>Has caching to improve performance </li></ul></ul><ul><ul><ul><li>page </li></ul></ul></ul><ul><ul><ul><li>action </li></ul></ul></ul><ul><ul><ul><li>fragment </li></ul></ul></ul>
  36. More ActionController Image
  37. Pitfalls: Excess <ul><li>Model: God Object (anti-pattern) </li></ul><ul><ul><li>Too much logic in a Model, one Model too powerful. </li></ul></ul><ul><li>View: Too much logic in View </li></ul><ul><li>Controller: Anemic Domain Model (anti-pattern) </li></ul><ul><ul><li>Too much business logic in Controller. </li></ul></ul><ul><li>Cargo cult programming </li></ul><ul><ul><li>(over-)applying a design principle blindly without understanding the reasons. - (wikipedia) </li></ul></ul>
  38. Testing Rails <ul><li>Rails has great testing framework ‘baked in’ the framework </li></ul><ul><ul><li>Test stubs created when code is ‘generated’. </li></ul></ul><ul><li>Unit to test models. </li></ul><ul><ul><li>test/unit </li></ul></ul><ul><li>Functional to test views/controllers </li></ul><ul><ul><li>test/functional </li></ul></ul><ul><li>Fixtures </li></ul><ul><ul><li>Supply test data (yaml) </li></ul></ul>
  39. Unit Testing <ul><li>Separate ‘test’ database is used. </li></ul><ul><li>Fixtures supply data </li></ul><ul><li>Variety of ‘assert’ statements. </li></ul>
  40. Functional Testing <ul><li>Fixture </li></ul><ul><li>Setup </li></ul><ul><li>Tests </li></ul>
  41. Rake <ul><li>Rake is your friend. </li></ul><ul><ul><li>Database tasks </li></ul></ul><ul><ul><li>Deployment </li></ul></ul><ul><ul><li>Documentation </li></ul></ul><ul><ul><li>Testing </li></ul></ul><ul><ul><li>Cleanup </li></ul></ul>
  42. MVC Around The Web <ul><li>Java </li></ul><ul><ul><li>Struts, Spring </li></ul></ul><ul><li>.NET </li></ul><ul><ul><li>MonoRail (inspired by Rails) </li></ul></ul><ul><li>Perl </li></ul><ul><ul><li>Catalyst, MayPole </li></ul></ul><ul><li>Php </li></ul><ul><ul><li>CakePHP, Code Igniter </li></ul></ul><ul><li>Python </li></ul><ul><ul><li>Django, TurboGears </li></ul></ul><ul><li>Ruby </li></ul><ul><ul><li>Nitro, Wee </li></ul></ul>
  43. Questions? <ul><li>MVC </li></ul><ul><li>Rails </li></ul><ul><li>Pix </li></ul>

×