Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
Upgrading Rails? It is a good time to refactor ...
Search
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Minqi Pan
April 12, 2014
Programming
220
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Upgrading Rails? It is a good time to refactor your code
Minqi Pan
April 12, 2014
More Decks by Minqi Pan
See All by Minqi Pan
RubyConf 2017: Packing your Ruby application into a single executable
pmq20
1
780
Node 8 and Friends
pmq20
0
320
Moving Node.js and nodec to v8 Ignition
pmq20
0
430
QCon 2017 Beijing Observations
pmq20
0
360
Node.js Compiler: compiling your Node.js application into a single executable
pmq20
5
25k
Enclose.IO: current cutting-edges and the future work
pmq20
0
330
环境变量为何能让 Ruby 快十倍
pmq20
3
830
Introductions to Node.js internals
pmq20
0
2.2k
How we scaled GitLab for a 30k-employee company
pmq20
6
1.7k
Other Decks in Programming
See All in Programming
SFCで実現する病院・医療システムの動的組み立て式UI
koukimiura
1
120
sbt 2.0: takeoff
eed3si9n
0
170
PyConTW 2026 - AI Coding 不只是工具升級, 區域醫院醫療資訊系統協作開發與資訊團隊轉型實踐
cclai999
0
200
Long Living Tokens, Die, Die, Die! (or: The One Ring is Banned in Modern)
sylph01
0
370
APNsからLive Activityを開始する話
yumnumm
0
180
R8 の設定見直しでアプリサイズ削減
andpad
0
230
気持ちぃ〜角丸 Squircle
ryu1013
0
340
Zero-Tap Sign-In対応、結局何をすればいいの?
mitohato14
0
810
Agentic Software Factoryに、すごく賢いIF文を。 / super smart IF statement into the Agentic Software Factory.
rkaga
8
2.4k
TanStack Vue Query と Pinia Colada から学ぶ非同期状態の型設計
aoshi
0
310
Vue Fes Japan の “作る側”に関わってみて
naokihaba
1
190
Coding with AI: How to trust the storyteller (AWS Community Day Adria, Ljubljana 2026)
slobodan
0
120
Featured
See All Featured
We Have a Design System, Now What?
morganepeng
55
8.4k
Exploring the relationship between traditional SERPs and Gen AI search
raygrieselhuber
PRO
4
4.4k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
[Rails World 2026] Durable orchestration on Rails: from continuation to workflow
palkan
1
900
Site-Speed That Sticks
csswizardry
13
1.6k
Design in an AI World
tapps
1
360
Impact Scores and Hybrid Strategies: The future of link building
tamaranovitovic
0
470
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.4k
Easily Structure & Communicate Ideas using Wireframe
afnizarnur
194
17k
Digital Projects Gone Horribly Wrong (And the UX Pros Who Still Save the Day) - Dean Schuster
uxyall
1
3.5k
Skip the Path - Find Your Career Trail
mkilby
1
260
The Cult of Friendly URLs
andyhume
79
7k
Transcript
Upgrading�Rails?�It�is�a� good�time�to�refactor� your�code P.S.V.R Powered�by�Rabbit�2.1.2
Rails�4.1�was�released� last�week! 1/39
Why�is�it�a�good�time�to� refactor�your�code?�(1) Trust�me:�if�you�had�time�for� upgrading,�you�would�have�time�for� refactoring 2/39
Why�is�it�a�good�time�to� refactor�your�code?�(2) ���������������������������������������� ������������������������������������������� �������� ������������������������������������������������������������������� some�upgraded�behaviors�require� refactoring�after�all 3/39
Why�is�it�a�good�time�to� refactor�your�code?�(3) ����������������������������������� ��������� ������������������ ��������������������������� �������������������������������� ���������������������������������������������������������� ����������������������������������������������������� You�wan�to�implement�old�functions�via�
new�features 4/39
Roadmap Ⅰ.�Community�Guidelines Ⅱ.�Code�coverage Ⅲ.�Dependencies�updating Ⅳ.�Density�of�Comments Ⅴ.�Cyclomatic�complexity Ⅵ.�Static�code�analyzer Ⅶ.�Commit�messages 5/39
Ⅰ.�Community� Guidelines�(1) ruby-style-guide A�community-driven�Ruby�coding�style� guide https://github.com/bbatsov/ruby-style- guide 6/39
Ⅰ.�Community� Guidelines�(2) ex.�Comments�section 7/39
Ⅰ.�Community� Guidelines�(3) rails-style-guide A�community-driven�Rails�3�&�4�style� guide https://github.com/bbatsov/rails-style- guide 8/39
Ⅰ.�Community� Guidelines�(4) ex.�Routing�section 9/39
Ⅱ.�Code�coverage�(1) simplecov Code�coverage�for�Ruby�1.9+�with�a� powerful�configuration�library�and� automatic�merging�of�coverage�across� test�suites gem�install�simplecov 10/39
Ⅱ.�Code�coverage�(2) 11/39
Ⅱ.�Code�coverage�(3) coveralls.io https://coveralls.io/ gem�ʻcoverallsʼ,�require:�false 12/39
Ⅱ.�Code�coverage�(4) 13/39
Ⅲ.�Dependencies� updating�(1) gemnasium https://gemnasium.com/ 14/39
Ⅲ.�Dependencies� updating�(2) 15/39
Ⅳ.�Density�of� Comments�(1) cf.�http://staff.unak.is/andy/ StaticAnalysis0809/metrics/dc.html 16/39
Ⅳ.�Density�of� Comments�(2) inch Documentation�measurement�tool�for� Ruby,�based�on�YARD. gem�install�inch 17/39
Ⅳ.�Density�of� Comments�(3) 18/39
Ⅳ.�Density�of� Comments�(4) inch-pages https://github.com/rrrene/inch-pages 19/39
Ⅳ.�Density�of� Comments�(5) 20/39
Ⅴ.�Cyclomatic� complexity�(1) developed�by�Thomas�J.�McCabe,�Sr.�in� 1976 For�this�strongly�connected�control� flow�graph,�Cyclomatic�complexity�=�3� is�the�number�of�linearly�independent� cycles�that�exist�in�the�graph,�i.e.�those� cycles�that�do�not�contain�other�cycles� within�themselves.
21/39
Ⅴ.�Cyclomatic� complexity�(2) 22/39
Ⅴ.�Cyclomatic� complexity�(3) ������� ����������� ��� ex.�Cyclomatic�complexity�=�1 23/39
Ⅴ.�Cyclomatic� complexity�(4) ������������������ ������������������������ ��� ex.�Cyclomatic�complexity�=�2 24/39
Ⅴ.�Cyclomatic� complexity�(5) ������������������������������� ��������������������������������������� ��� ex.�Cyclomatic�complexity�=�3 25/39
Ⅴ.�Cyclomatic� complexity�(6) ������������ ���������� ������������������������������� ��������������������������������� ������������������������������������� ����������������������������������� ������������������������������� �����������������������������������
������������������������������� ����� ��� ex.�Cyclomatic�complexity�=�8 26/39
Ⅴ.�Cyclomatic� complexity�(7�-�before) ������������������������ ������������� ��������������������������������������������������������� �������������������������������������� ������������������������������������ ����������������������� ���������������������������������������������� ���������������������
����������������������������� ��������������������������������� ���������������������������������� ���������������������������������������� ��������������������������������� ���������������������������������������������������� ����������������������������������� ����������������������������������� �������������������������������������������������� ������������������������������������������������������������� ���������������������������� ����� ����� ������������� ��� 27/39
Ⅴ.�Cyclomatic� complexity�(8�-�after) ������������������������������������������������������ ������������������������ �������������������������������������������������������� �������������������� �������������������������������������������� ��� 28/39
Ⅴ.�Cyclomatic� complexity�(9�-�after) ���������������� ������������������� ��������������������������� ������������������������������������������������������������� �������������������������������� �������������������������������������� �������������������������������������������������������������������������� ���������������������������������
������������������������������������������������������������ ��� ������ ��� 29/39
Ⅵ.�Static�code�analyzer� (1) rubocop gem�install�rubocop rubocop�-R�>�rubocop.txt 30/39
Ⅵ.�Static�code�analyzer� (2) 31/39
Ⅵ.�Static�code�analyzer� (3) codeclimate https://codeclimate.com/ 32/39
Ⅵ.�Static�code�analyzer� (4) 33/39
Ⅶ.�Commit�messages� (1) good�commit�message�example 34/39
Ⅶ.�Commit�messages� (2) bad�commit�message�examples 35/39
Ⅶ.�Commit�messages� (3) bad�commit�message�examples 36/39
Ⅶ.�Commit�messages� (4) bad�commit�message�examples 37/39
How�to�write�good� commit�messages? Use�English Use�the�imperative,�present�tense:� “change”,�not�“changed”�or�“changes”;� “Fix�bug#1234”�is�better�than�“Fixed� bug�#1234” Use�50-char�title�and�Use�72-character� columns�for�word-wrapping. Read�more:�https://github.com/
torvalds/linux/ pull/17#issuecomment-5654674 38/39
Download�the�slides https://github.com/pmq20 39/39 Powered�by�Rabbit�2.1.2