Atualizando rails do 2.x para 3.x
-
Upload
rodrigo-urubatan -
Category
Technology
-
view
2.637 -
download
3
description
Transcript of Atualizando rails do 2.x para 3.x
http://www.urubatan.com.br @urubatan
Atualizando do Rails 2.x para 3.2
Rodrigo Urubatan
http://www.urubatan.com.br @urubatan
Urubatan
Rodrigo Urubatan (@urubatan) trabalha com desenvolvimento de software desde 1997. Já desenvolveu sistemas em uma gama de linguagens e ambientes, incluindo Delphi, C, C++, PHP, ASP, ColdFusion, Assembly, Leather, Ruby e Java. Atualmente trabalha na GetNet, utilizando principalmente Java, Oracle e Ruby, e já ministrou cursos e palestras em diversos eventos pelo Brasil. Autor do livro Ruby On Rails: Desenvolvimento Fácil e Rápido de Aplicações Web.
http://www.urubatan.com.br @urubatan
• Vale a pena atualizar?o Por que não re-escrever?o Algumas vezes é melhro re-escrever tudo!
• Já pensou em todos os possíveis problemas?
• Usa muitos plugins?
• Muita coisa vendorizada que não existe mais online?
Tem certeza disto?
http://www.urubatan.com.br @urubatan
Por onde começar?
• script/plugin install git://github.com/rails/rails_upgrade.git
• rake rails:upgrade:check
• rake rails:upgrade:backup
• rake rails:upgrade:routes
• rake rails:upgrade:gems
• rake rails:upgrade:configuration
http://www.urubatan.com.br @urubatan
Check• rake rails:upgrade:check
• (in /Users/eifion/rails/apps_for_asciicasts/ep225/railscasts)
• Old router API
• The router API has totally changed.
• More information: http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/
• The culprits:
• - config/routes.$ rake rails:upgrade:check
• (in /Users/eifion/rails/apps_for_asciicasts/ep225/railscasts)
• Old router API
• The router API has totally changed.
• More information: http://yehudakatz.com/2009/12/26/the-rails-3-router-rack-it-up/
• The culprits:
• rb
• - config/routes.rb
http://www.urubatan.com.br @urubatan
Backup• rake rails:upgrade:backup
• (in /Users/eifion/rails/apps_for_asciicasts/ep225/railscasts)
• DEPRECATION WARNING: Rake tasks in vendor/plugins/hoptoad_notifier/tasks are deprecated. Use lib/tasks instead. (called from /Library/Ruby/Gems/1.8/gems/rails-2.3.8/l$ rake rails:upgrade:backup
• (in /Users/eifion/rails/apps_for_asciicasts/ep225/railscasts)
• ib/tasks/rails.rb:10)
• * backing up .gitignore to .gitignore.rails2
• * backing up app/controllers/application_controller.rb to app/controllers/application_controller.rb.rails2
• * backing up app/helpers/application_helper.rb to app/helpers/application_helper.DEPRECATION WARNING: Rake tasks in vendor/plugins/hoptoad_notifier/tasks are deprecated. Use lib/tasks instead. (called from /Library/Ruby/Gems/1.8/gems/rails-2.3.8/lib/tasks/rails.rb:10)
• * backing up .gitignore to .gitignore.rails2
• * backing up app/controllers/application_controller.rb to app/controllers/application_controller.rb.rails2
• rb.rails2
• * backing up config/routes.rb to config/routes.rb.rails2
• * backing up config/environment.rb to config/environment.rb.rails2
• * backing up config/environments/development.rb to config/environments/development.rb.rails2
• * backing up config/environme* backing up app/helpers/application_helper.rb to app/helpers/application_helper.rb.rails2
• * backing up config/routes.rb to config/routes.rb.rails2
• * backing up config/environment.rb to config/environment.rb.rails2
• * backing up config/environments/development.rb to config/environments/development.rb.rails2
• nts/production.rb to config/environments/production.rb.rails2
• * backing up config/database.yml to config/database.yml.rails2
http://www.urubatan.com.br @urubatan
Welcome to hell!
http://www.urubatan.com.br @urubatan
returning
o método returning não existe mais, mas ele é equivalente ao Object.tap do Ruby 1.9
class Object
def returning(obj)
yield obj
obj
end
end
http://www.urubatan.com.br @urubatan
_on_ mudou e sumiu!
validate_on_create
validate_on_update
mudaram para: validate ..., :on => :create|:update
before_validation_on_create
before_validation_on_update
mesma lógica
http://www.urubatan.com.br @urubatan
with(out)_callbacks
a implementação de callbacks mudou totalmente, não usa mais o mecanismo de
alias_method_chain
http://www.urubatan.com.br @urubatan
Plugins atualizados? Gems?
uma aplicação cheia de coisas vendorizadas podia facilitar o deployment quando não existia bundler, mas hoje se torna um pesadelo ...
http://www.urubatan.com.br @urubatan
no such method explain?
se atualizou a app e esta recebendo o erro dizendo que não existe explain no adapter do mysql, mude o gemfile e o databases.yml para usar o mysql2
http://www.urubatan.com.br @urubatan
Too much magick?
Pivotal user plugin?
Plugins que fazem muitas coisas
Plugins e gems com muito monkey patch
Plugins com hooks no rails, podem ser difíceis de atualizar
http://www.urubatan.com.br @urubatan
Helpers
Você tera que re-escrever todos os helpers e adicionar os métodos:
.html_safe ou raw
para que não seja impresso apenas código HTML
http://www.urubatan.com.br @urubatan
Abominações
m = mock(Class)
def m.execute
...
end
m.should_receive(:execute)
http://www.urubatan.com.br @urubatan
O que todos já sabem?!
• engines
• rails config
http://www.urubatan.com.br @urubatan
Perguntas!
http://www.urubatan.com.br @urubatan
Quer um livro?
• O segundo que fez uma pergunta sobre a palestra acaba de ganhar um :D
Pode vir aqui na frente buscar por favor?