Rochester on Rails: Introduction to Rails

1,550 views
1,446 views

Published on

An entry-level introduction to Rails (circa 1.13) I gave at Rochester on Rails. Covers the history, reasons you may use it in a project, and basic architecture.

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

  • Be the first to like this

No Downloads
Views
Total views
1,550
On SlideShare
0
From Embeds
0
Number of Embeds
38
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Rochester on Rails: Introduction to Rails

  1. 1. Jason Morrison January 19, 2006 Rochester on Rails Ruby on Rails Sustainable Productivity for Web Application Development
  2. 2. History
  3. 3. July 2004 David Heineimeier Hansson
  4. 4. Extracted from Basecamp
  5. 6. 37signals
  6. 8. Hundreds of contributors Thousands of revisions, tickets, and patches
  7. 9. Rails 1.0 December 13, 2005
  8. 11. What is Rails?
  9. 12. Full Stack
  10. 13. Web Application Framework
  11. 14. It’s all Ruby!
  12. 15. (okay, except one file)
  13. 16. (here it is) database.yml development: adapter: sqlite dbfile: db/dev.db test: adapter: sqlite dbfile: db/test.db production: adapter: sqlite dbfile: db/prod.db
  14. 17. Everything else is Ruby!
  15. 18. ActiveRecord
  16. 19. ActionPack
  17. 20. ERb views
  18. 21. ActionWebService
  19. 22. ActionMailer
  20. 23. Unit Testing
  21. 24. AJAX Helpers
  22. 25. Key Concepts
  23. 26. DRY: Don’t Repeat Yourself
  24. 27. +
  25. 28. Convention over configuration
  26. 29. =
  27. 30. Less code!
  28. 31. Order.hbm.xml 01 <hibernate-mapping> 02 <class name=&quot;models.Order&quot; table=&quot;ORDERS&quot; 03 dynamic-update=&quot;true&quot; dynamic-insert=&quot;false&quot;> 06 <id name=&quot;id&quot; column=&quot;id&quot; type=&quot;java.lang.Long&quot; 07 unsaved-value=&quot;null&quot;> 08 <generator class=&quot;identity&quot;/> 09 </id> 10 <set name=&quot;items&quot; lazy=&quot;false&quot; inverse=&quot;false&quot; 11 cascade=&quot;none&quot; sort=&quot;unsorted&quot;> 12 <key column=&quot;id&quot;/> 13 <one-to-many class=&quot;models.Item&quot;/> 14 </set> 15 <property name=&quot;name&quot; type=&quot;java.lang.String&quot; 16 update=&quot;true&quot; insert=&quot;true&quot; 17 access=&quot;property&quot; column=&quot;name&quot;/> 18 </class> 19 </hibernate-mapping>
  29. 32. Order.java 01 public class Order { 02 private Set items; 03 private String name; 04 private Long id; 05 06 public Long getId() { return id;} 07 public void setId(Long id) { this.id = id;} 08 public Set getItems() { return items;} 09 public void setItems(Set items) { this.items = items; } 10 public String getName() { return name; } 11 public void setName(String name) { this.name = name; } 12 }
  30. 33. order.rb 01 class Order < ActiveRecord::Base 02 has_many :items 03 end
  31. 34. Rails is expressive
  32. 35. class Project < ActiveRecord::Base belongs_to :portfolio has_one :project_manager has_many :milestones has_and_belongs_to_many :categories validates_presence_of :name, :description validates_acceptance_of :non_disclosure_agreement validates_uniqueness_of :key end
  33. 36. #We’re slashing prices, all books are now half off! Product.find( :all, :conditions => “kind=‘book’” ) do |product| product.price *= 0.5 product.save end
  34. 37. Increases Programmer Rails increases programmer…
  35. 38. Increases Programmer Rails increases programmerhappiness!
  36. 39. How does it fit together?
  37. 40. Model View Controller
  38. 41. Model View Controller ActiveRecord ActionPack } }
  39. 43. Ready, set, code!

×