Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
A few slides about the migration from Rails 4 t...
Search
Adam Nowak
July 06, 2016
Programming
1
240
A few slides about the migration from Rails 4 to Rails 5
based on github.com/netguru/reminders app
Adam Nowak
July 06, 2016
Tweet
Share
More Decks by Adam Nowak
See All by Adam Nowak
20x more people around. Highlights and challenges of the fast growing team.
lubieniebieski
1
110
Daily Development Tips
lubieniebieski
0
130
Stick to the rules
lubieniebieski
4
500
Other Decks in Programming
See All in Programming
Effective Signals in Angular 19+: Rules and Helpers @ngbe2024
manfredsteyer
PRO
0
140
情報漏洩させないための設計
kubotak
1
130
php-conference-japan-2024
tasuku43
0
270
Recoilを剥がしている話
kirik
5
6.7k
103 Early Hints
sugi_0000
1
230
testcontainers のススメ
sgash708
1
120
開発者とQAの越境で自動テストが増える開発プロセスを実現する
92thunder
1
180
Webエンジニア主体のモバイルチームの 生産性を高く保つためにやったこと
igreenwood
0
330
Monixと常駐プログラムの勘どころ / Scalaわいわい勉強会 #4
stoneream
0
280
nekko cloudにおけるProxmox VE利用事例
irumaru
3
430
CSC305 Lecture 26
javiergs
PRO
0
140
責務を分離するための例外設計 - PHPカンファレンス 2024
kajitack
2
670
Featured
See All Featured
A Tale of Four Properties
chriscoyier
157
23k
Dealing with People You Can't Stand - Big Design 2015
cassininazir
365
25k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
5
450
Helping Users Find Their Own Way: Creating Modern Search Experiences
danielanewman
29
2.3k
StorybookのUI Testing Handbookを読んだ
zakiyama
27
5.3k
No one is an island. Learnings from fostering a developers community.
thoeni
19
3k
Statistics for Hackers
jakevdp
796
220k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
VelocityConf: Rendering Performance Case Studies
addyosmani
326
24k
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
8
1.2k
Visualization
eitanlees
146
15k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Transcript
Rails 5 is here a few slides about the migration
from Rails ~4
None
my slides are not about the features - you have
to check them out on your own!
I need a TODO app for test
but let’s upgrade something more useful
None
https://github.com/ netguru/reminders
Gemfile gem "rails", "~> 4" gem "coffee-rails" gem "bootstrap-datepicker-rails" gem
"decent_exposure" gem "draper" gem "jquery-rails", "4.0.4" # version 4.0.5 breaks jquery-datatables
UPDATING!
Step 1 - changing relevant gems gem "rails", "~> 4”
Step 1 - changing relevant gems gem "rails", "~> 4”
gem "rails", "~> 5"
Step 1 - changing relevant gems bundle update rails
None
None
Step 2 - updating gems along the way bundle update
rails railties
meh!
Step 2 - updating gems along the way bundle update
rails railties sass-rails
nope!
Step 2 - updating gems along the way bundle update
rails railties sass-rails coffee-rails slim-rails
still missing something!
Step 3 - strict dependencies gem "jquery-rails", "4.0.4" # version
4.0.5 breaks jquery-datatables
Step 3 - strict dependencies gem "jquery-rails", "4.0.4" # version
4.0.5 breaks jquery-datatables gem "jquery-rails"
Step 3 - strict dependencies gem "sass-rails", "~> 5.0"
gem "sass-rails"
Step 3 - strict dependencies bundle update rails railties sass-rails
coffee-rails slim-rails jquery-rails
None
better, but still
let’s have a look again
None
https://github.com/ evrone/quiet_assets/pull/ 51
so we don’t need it anymore
Step 1 - changing relevant gems gem "quiet_assets"
Step 1 - changing relevant gems gem "quiet_assets" gem "quiet_assets"
Step 2 - updating gems along the way bundle update
rails railties coffee- rails slim-rails
pretty good, we need to solve rspec-rails
Step 2 - updating gems along the way bundle update
rails railties coffee- rails slim-rails rspec-rails
None
hahahha, you fool
zoom in
None
there should be puma here, right?
Step 1 - changing relevant gems gem "thin" gem "thin"
Step 2 - updating gems along the way bundle update
rails railties coffee- rails slim-rails rspec-rails
yeah
step 1&2 done - our Gemfile is ok
Step 3 - draper /Users/adamo/.rbenv/versions/2.2.3/lib/ ruby/gems/2.2.0/gems/draper-2.1.0/lib/ draper.rb:5:in `require': cannot load
such file -- active_model/serializers/ xml (LoadError)
It turns out, draper gem isn’t quite ready for Rails
5
It turns out, draper gem isn’t quite ready for Rails
5
I’ve used drape gem instead but you should follow https://github.com/drapergem/
draper/pull/752
Step 3 - draper gem "draper" gem "draper"
Step 3 - draper bundle
drape is pretty much the same as draper but you
have to change the namespace
let’s create base decorator (it should have been here before)
Step 3 - draper class BaseDecorator < Drape::Decorator; end class
ProjectDecorator < BaseDecorator
awesome!
Step 4 - rollbar bundle update rollbar # 2.8.0 wasn’t
good enough
push it!
None
webrick? it’s so <=Rails4
None
Step 4 - puma gem „puma" bundle
None
success!
Step 4 - rails:update bin/rake rails:update
keep going
Step 4 - rspec bundle update rspec-core
it turns out, you have to be strict this time
Step 4 - rspec gem "rspec-rails", "~> 3.5" bundle
yep!
Step 5 - decent_exposure /Users/adamo/code/reminders/app/ controllers/application_controller.rb: 2:in `<class:ApplicationController>': undefined method
`decent_configuration' for ApplicationController:Clas
well, read the wiki https://github.com/hashrocket/ decent_exposure/wiki/Api-changes-in- version-3#undefined-method- decent_configuration
Step 5 - decent_exposure decent_configuration do strategy DecentExposure::StrongParametersStrategy end
Step 6 - rails-controller- testing 245 examples, 3 failures NoMethodError:
assert_template has been extracted to a gem. To continue using it, add `gem 'rails-controller-testing'` to your Gemfile.
Step 6 - rails-controller- testing gem „rails-controller-testing" bundle
YES
Step 6 - rack-mini-profiler bundle update rack-mini-profiler
QL
it works:)
https://github.com/ netguru/reminders/pull/35
–no one ever “migration will be easy”
–me, now “but please do it”
t.hanks! adam nowak / @lubieniebieski 06/07/2016