O documento discute as etapas para atualizar um aplicativo Rails de versão 2.x para 3.2. Ele fornece instruções sobre como verificar possíveis problemas, fazer backup dos arquivos, atualizar rotas, gems e configurações e aborda algumas mudanças significativas como o método returning e validações. O autor também discute desafios como plugins e gems antigas.
1. Atualizando do Rails 2.x
para 3.2
Rodrigo Urubatan
http://www.urubatan.com.br @urubatan
2. 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
3. Tem certeza disto?
• 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?
http://www.urubatan.com.br @urubatan
5. 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
6. 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
8. 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
9. _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
10. 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
11. 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
12. 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
13. 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
14. 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
18. 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?
http://www.urubatan.com.br @urubatan