Rails 3 And The Real Secret To High Productivity Presentation

Loading...

Flash Player 9 (or above) is needed to view presentations.
We have detected that you do not have it on your computer. To install it, go here.

0 comments

Post a comment

    Post a comment
    Embed Video
    Edit your comment Cancel

    1 Favorite

    Rails 3 And The Real Secret To High Productivity Presentation - Presentation Transcript

    1. Rails 3 ..and the real secret to high productivity
    2. 5 2004 - 2009
    3. \"You may have noticed that pretty much everyone in the Ruby camp are insultants with many of them being book authors attempting to capitalize on hype.\" James McGovern
    4. We’re still here
    5. The philosophy of Rails 3
    6. The progress of Rails 3
    7. New router Faster Route by subdomains, user agents, more Route to other Rack machinery
    8. map.with_options(:controller => \"sessions\") do |sessions| sessions.login \"login\", :action => \"new\", :conditions => { :method => :get } sessions.connect \"login\", :action => \"create\", :conditions => { :method => :post } sessions.logout \"logout\", :action => \"destroy\", :conditions => { :method => :post } end controller :sessions do match 'logout', :via => :delete, :to => :destroy, :as => :logout match 'login' do get :new, :as => :login post :create end end
    9. map.resources :projects, :controller => 'project' do |projects| projects.resources :attachments projects.resources :participants, :collection => { :update_all => :put } projects.resources :companies, :has_many => :people, :has_one => :avatar end resources :projects, :controller => :project do resources :attachments resources :participants do put :update_all, :on => :collection end resources :companies do resources :people resource :avatar end end
    10. XSS protection
    11. <%# => \"I've hacked you good! <script>\" %> <%= comment.body %> <%# => \"I've hacked you bad! &lt;script&gt;\" %> <%=h comment.body %> <%# => \"I've hacked you good! &lt;script&gt;\" %> <%= comment.body %> <%# => \"I've hacked you bad! <script>\" %> <%=raw comment.body %>
    12. def safe_helper(text) content_tag(:div, text) + tag(:br) end def needs_to_be_marked_safe_helper(text) (content_tag(:div, text) + \"<br/>\").html_safe! end
    13. JavaScript goes unobtrusive & agnostic
    14. <%= link_to_remote \"Delete\", :url => @comment, :method => :delete %> <a href=\"#\" onclick=\"new Ajax.Request('/comments/1', {asynchronous:true, evalScripts:true, method:'delete'}); return false;\">Destroy</a> <%= link_to \"Delete\", @comment, :remote => true, :method => :delete %> <a href=\"/comments/1\" data-remote=\"true\" data-method=\"delete\">Destroy</a>
    15. <% remote_form_for(@comment) do %> <form action=\"/comments\" class=\"new_comment\" id=\"new_comment\" method=\"post\" onsubmit=\"new Ajax.Request('/comments', {asynchronous:true, evalScripts:true, parameters:Form.serialize(this)}); return false;\"> <% form_for(@comment, :remote => true) do %> <form action=\"/comments\" class=\"new_comment\" id=\"new_comment\" method=\"post\" data-remote=\"true\">
    16. <%= link_to \"Delete\", @comment, :method => :delete %> <a href=\"/comments/1\" onclick=\"var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);f.submit();return false;\">Destroy</a> <a href=\"/comments/1\" data-method=\"delete\">Destroy</a>
    17. <%= link_to \"Delete\", @comment, :method => :delete, :confirm => \"Are you sure?\" %> <a href=\"/comments/1\" onclick=\"if (confirm('Are you sure?')) { var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);f.submit(); };return false;\">Destroy</a> <a href=\"/comments/1\" data-method=\"delete\" data- confirm=\"Are you sure?\">Destroy</a>
    18. $(document.body).observe(\"click\", function(event) { var element = event.findElement(\"a['data-remote']\"); if (element) { var method = element.readAttribute(\"data-method\") || \"get\"; new Ajax.Request(element.readAttribute(\"href\"), { method: method }); event.stop(); } });
    19. More agnosticism Action ORM Generators
    20. The great refactoring Abstract Controller + Action Dispatch Action Relation underpins Active Record Cherry picking from Active Support Speedy callbacks
    21. The real secret to high productivity
    22. Renegotiate requirements
    23. “Sure, whatever” Stakeholders every where
    24. “I don’t know how” “It’s just too hard” “I’d be bored senseless” “That would kill the abstraction”
    25. Programmer
    26. Partner
    27. Questions?

    + techdudetechdude, 6 months ago

    custom

    529 views, 1 favs, 0 embeds more stats

    DHH presentation from RailsConf09

    More info about this document

    © All Rights Reserved

    Go to text version

    • Total Views 529
      • 529 on SlideShare
      • 0 from embeds
    • Comments 0
    • Favorites 1
    • Downloads 9
    Most viewed embeds

    more

    All embeds

    less

    Flagged as inappropriate Flag as inappropriate
    Flag as inappropriate

    Select your reason for flagging this presentation as inappropriate. If needed, use the feedback form to let us know more details.

    Cancel
    File a copyright complaint
    Having problems? Go to our helpdesk?

    Categories