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

Rails 2, arrumando a casa! - Abril 2008

Rails 2, arrumando a casa! - Abril 2008

Sylvestre Mergulhão

April 01, 2008
Tweet

More Decks by Sylvestre Mergulhão

Other Decks in Technology

Transcript

  1. Agenda • Rails 2 é menos, e daí? • ActiveRecord

    • ActionController e ActionView • Outros • Depreciações/Remoções • Uma migração sem traumas
  2. Rails 2 é menos, e daí? • Lançado no início

    de dezembro de 2007 • Rails 2 é menos! • Por quê? • Várias extrações do core
  3. validates_numericality_of :salary, :greater_than => 39999 validates_numericality_of :ten, :equal_to => 10

    validates_numericality_of :bonus, :less_than => 5000 validates_numericality_of :bonus, :less_than_or_equal_to => 4999 validates_numericality_of :prime, :odd => true validates_numericality_of :squared, :even => true ActiveRecord: Validations
  4. Rails 1.x ActiveRecord: Validations validates_numericality_of :rating, :if => Proc.new {

    |post| not post.rating.blank? } validates_numericality_of :rating, :allow_blank => true Rails 2
  5. # The old way class CreatePosts < ActiveRecord::Migration # Create

    a table holding blog posts create_table :posts do |t| t.column :user_id, :integer, :null => false t.column :category_id, :integer, :null => false t.column :body, :text # Standard auto-magic columns t.column :created_at, :datetime t.column :updated_at, :datetime end def self.down drop_table :posts end end
  6. class CreatePosts < ActiveRecord::Migration # Create a table holding blog

    posts create_table :posts do |t| t.references :user, :category, :null => false t.text :body t.timestamps end def self.down drop_table :posts end end
  7. # companies.yml yfactorial: id: 1 name: yFactorial, LLC created_at: <%=

    Time.now %> updated_at: <%= Time.now %> # employees.yml ryan: id: 1 name: Ryan Daigle company_id: 1 created_at: <%= Time.now %> updated_at: <%= Time.now %>
  8. class Company < ActiveRecord::Base has_and_belongs_to_many :industry_associations, :join_table => 'company_industry_associations' end

    class IndustryAssociation < ActiveRecord::Base has_and_belongs_to_many :companies, :join_table => 'company_industry_associations' end
  9. Asset cache stylesheet_link_tag "application", "forms", :cache => true Em desenvolvimento

    nada muda... em produção os css são combinados e incluidos na página como stylesheets/all.css
  10. No Rails 2 foi implementada a sessão baseada em cookie.

    Mais rápido que ir ao banco ou buscar um arquivo no disco. Cookie­based session
  11. Rotas RESTful map.resources :comments map.resources :posts do |post| post.resources :comments

    end post_comments_path(post) >> /posts/:post_id/comments new_post_comment_path(post) >> /posts/:post_id/comments/new
  12. Limpando seu enviroment.rb Até o Rails 1.2.6 tudo que precisava

    ser carregado em todos os ambientes e “pequenos” monkey patchs – aka gambis / pog / etc – acabavam caindo no enviroment.rb
  13. Limpando seu enviroment.rb # config/initializers/date_formats.rb custom_date_formats = { :concise =>

    "%d.%b.%y", :medium => "%b %e, %Y" } ActiveSupport::CoreExtensions::Date::Conversions::DATE_ FORMATS.merge!(custom_date_formats)
  14. Collection Fixtures # The old way def test_post_find assert_equal [posts(:rails2),

    posts(:peepcode)], Post.find(:all) end # The new way def test_post_find assert_equal posts(:rails2, :peepcode), Post.find(:all) end
  15. Novas tasks messages GET /messages {:action=>"index", :controller=>"messages"} formatted_messages GET /messages.:format

    {:action=>"index", :controller=>"messages"} POST /messages {:action=>"create", :controller=>"messages"} rake routes
  16. Novas tasks app/controllers/ratings_controller.rb: * 11 (TODO) Fill out error handling

    here app/helpers/profiles_helper.rb: * 18 (FIXME) This breaks unit test rake notes rake notes:fixme rake notes:optimize rake notes:todo
  17. find_all virou find(:all) # The wrong way Article.find_all Article.find_first #

    The right way Article.find(:all) Article.find(:first)
  18. Extinção de start_form_tag/end_form_tag <% form_for :article, @article, :url => articles_path

    do |f| %> <%= f.text_field :title %> <%= submit_tag "Save" %> <% end %>
  19. Plugins acts_as do ActiveRecord Todos foram removidos do core e

    estão disponíveis como plugins: http://svn.rubyonrails.org/rails/plugins
  20. Plugin de paginação O sistema de paginação original do Rails

    foi removido will paginate ­ http://rock.errtheblog.com/will_paginate
  21. Drivers para banco de dados não default saem do core

    Mysql, sqlite e postgresql continuam no core sudo gem install activerecord­oracle­adapter