Atualizando rails do 2.x para 3.x

Post on 12-Nov-2014

2.637 views 3 download

Tags:

description

Palestra RS On Rails 2012-09-15 - Atualizando aplicações Rails 2.x para 3.x

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?