Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Speaker Deck
PRO
Sign in
Sign up
for free
レガシーRailsアプリとの付き合い方について考える
Yusaku ONO
November 17, 2017
Technology
2
380
レガシーRailsアプリとの付き合い方について考える
2018/11/17 万葉社内で発表した資料です
Yusaku ONO
November 17, 2017
Tweet
Share
More Decks by Yusaku ONO
See All by Yusaku ONO
yono
0
210
yono
2
2.5k
yono
2
3.5k
yono
1
160
Other Decks in Technology
See All in Technology
hmatsu47
3
320
soracom
0
150
will03
0
100
ch1aki
2
210
norioikedo
0
240
sat
40
29k
minma
0
120
gobeyond20xx
0
210
harshbothra
0
130
yasuyukiyamasaki
1
170
xecus
0
190
ippey
2
200
Featured
See All Featured
schacon
145
6.6k
lara
172
9.6k
lauravandoore
10
1.5k
paulrobertlloyd
72
1.4k
chrislema
173
14k
tanoku
86
8.6k
addyosmani
1346
190k
maltzj
502
36k
bermonpainter
342
26k
morganepeng
93
14k
yeseniaperezcruz
302
31k
jacobian
255
20k
Transcript
ϨΨγʔ Rails ΞϓϦͱͷ ͖߹͍ํʹ͍ͭͯߟ͑Δ 2017/11/17 @yono
͜ͷࢿྉʹ͍ͭͯ • ࣾͰൃදͨ͠ࢿྉΛެ։͠·͢ • લ৬ͷܦݧΛࠓͷձࣾ(ສ༿)Ͱڞ༗͠Α͏ͱ ͍͏Ϟνϕʔγϣϯ͔Β࡞Γ·ͨ͠
ࠓͷ͓ॻ͖ • ͖߹͍ํͱ • ͦͷଞখωλʢ͕࣌ؒ͋Εʣ
ϨΨγʔ Rails ΞϓϦͱͷ͖߹͍ํͱ • Ruby/Rails όʔδϣϯΞοϓσʔτ • ӡ༻อकΛҾ͖ܧ͙ • ৽͍͠αʔόʔʹҠߦ͢Δ
• ഇࢭͯ͠ผγεςϜʹҠߦ͢Δ • => ಈ͔͠ଓ͚Δʢ߹͕ଟ͍ʣ
ಈ͔͠ଓ͚ΔͨΊʹ • ಈ͘ڥΛҡ࣋͢Δ • ߹ʹΑͬͯίʔυΛ͢ • ։ൃڥ͕ཉ͍͠ • อकʹ͓͍ͯιʔείʔυͦͷͷ͚ͩͰͳ͘ ڥߏஙڥҡ͕࣋ωοΫʹͳΔ߹͋Δ
ڥΛΔ • Rails ͷΠϯετʔϧํ๏ • Ruby ͷΠϯετʔϧํ๏ • σʔλϕʔε •
Web αʔόʔ / ΞϓϦέʔγϣϯαʔόʔ • ಈ࡞OS
Rails ͷΠϯετʔϧํ๏ • όʔδϣϯ͕໌ه͞Εͯͳ͍߹ʹಛఆ͢ΔࡐྉʹͳΔ • bundle install • gem install
rails • apt-get install rails ʢDebian ܥݶఆʣ • apt ܦ༝ͰΠϯετʔϧ͢Δͱ gem list ʹݱΕͳ͍ • gem list ʹݱΕͳ͍ͷʹ rails ίϚϯυ͕ଘࡏ͢Δ߹͜ ΕΛٙͬͯΈΔ
ͪͳΈʹ apt-get ͱ • Debianܥͷ OS ʹࡌ͞Ε͍ͯΔύοέʔδ Ϛωʔδϟʔ • CentOS
Ͱݴ͏ͱ͜Ζͷ yum • ྫ: apt-get install postgresql • աڈͷ apt Ͱ rails ͳͲͷ gem ͕ύοέʔδͱͯ͠ ఏڙ͞Ε͍ͯͨ
Ruby ͷΠϯετʔϧํ๏ • γεςϜΠϯετʔϧ (apt, yumʣ • جຊతʹݹ͍ʢྫ: CentOS6 =>
1.8.7ʣ • ࣮֬ʹϏϧυͰ͖ΔͷͰ҆৺ • rbenv • σϑΝΫτʁ • Ϗϧυ͢ΔͷʹҰ͍Δ߹͋Δ • Cron ܦ༝Ͱಈ͔͢ͱ͖ʹҰۤ࿑ • rvm • ͋·ΓΘΕͳ͘ͳͬͨ • ϏϧυͰ͖ΔΑ͏ʹσϑΥϧτͰύονΛ͋ͯͯ͘ΕΔ߹͋Γ
σʔλϕʔε • PostgreSQL / MySQL ͩͱخ͍͠ • ͨ·ʹ SQL Server
ͱ͔͋Γ·͢ • ΫϥαόͰΘΕ͍ͯΔDBʢSQL ServerʣΛࢀর͢ΔΑ͏ͳέʔε • ͪΖΜDBͷόʔδϣϯॏཁͰ͢ • όʔδϣϯʹΑͬͯΫΤϦͷৼΔ͍͕มΘΔέʔε͕͋Δ • SQLͨॻ͖ͯ͠ΔΑ͏ͳ߹ʹҾ͔͔ͬΓ͕ͪ
Webαʔόʔ / ΞϓϦέʔγϣϯαʔόʔ • Webαʔόʔ • Apache / nginx •
ΞϓϦέʔγϣϯαʔόʔ • mongrel / Passenger / unicorn • WebαʔόʔΘͣΞϓϦέʔγϣϯαʔόʔͰ ड͚Δέʔε
ಈ࡞OS • CentOS • Debian / Ubuntu • كʹ Windows
• Bitnami Redmine ͱ͍͏ Window ༻ͷ Redmine Πϯετʔϥ͕ఏڙ͞Ε͍ͯΔ
֎෦ͱͷ࿈ܞ • ଞͷ Rails ΞϓϦͱ࿈ܞ • ActiveResource ( 4.0 Ͱݸผ
gem ʹͳͬͨʣ • ActionWebService (1ܥݶఆ) • Web API ܦ༝Ͱଞͷ Web ΞϓϦͱ࿈ܞ • DB Λࢀরʢ͢Δ/͞ΕΔέʔε྆ํ͋Γ͏Δʣ • αʔόʔΛௐࠪ͢Δ͚ͩͰݟ͚͖ͭΕͳ͍ʢಛʹࢀর͞ΕΔ߹ʣ
ຊͷ·ͱΊ • ϨΨγʔ Rails ΞϓϦͱͷ͖߹͍ํ • ͖߹͍ํͱ͍༷ͬͯʑ͋Δ • ιʔείʔυͦͷͷͰͳ͘ ڥߏஙҡ͕࣋ωοΫʹͳΔ߹͋Δ
• ͋Β͔͡Ί͓ͬͯ͘ͱ҆৺
ͦͷଞখωλ ʢ͕࣌ؒ͋Εʣ
Rails 2 → 3.0 • ҙ֎ͱͳΜͱ͔ͳΔҹ • rails_upgrade plugin Λ͏ͱมߋ͕ඞཁͳ
ՕॴΛચ͍ग़ͯ͘͠ΕΔ • https://github.com/rails/rails_upgrade
Rails 3.0 → 3.2 • ݸਓతʹҰ൪ͭΒ͍ • assets pipeline… •
CSS, ը૾ೖΓͷڊେͳ JavaScript ϥΠϒϥϦΛಋೖ͍ͯ͠Δͱ ٧Έ͍͢ʢ٧Μͩʣ • prototype.js ༻ͷϔϧύʔϝιου͕ফ͑Δ • ࠷ऴखஈ: https://github.com/rails/prototype_legacy_helper
Rails 3.2 → 4 • vendor/plugins → Bundler • Bundler
ಋೖલͷ rails vendor/plugins ҎԼʹ plugin ͷιʔείʔυΛஔ͢ΔܗࣜΛऔͬͯ ͍ͨ • ΞϓϦͷϦϙδτϦʹ֤ plugin ͷιʔείʔυ Λ߹Θͤͯίϛοτ͍ͯͨ͠
Rails 3.2 → 4 • plugin ͷιʔείʔυΛϦϙδτϦʹؚΊΔ͜ͱͰԿ ͕ى͜Δ͔ • plugin
ࣗମʹखΛՃ͍͑ͯͯؾ͖ͮʹ͍͘ • ޓੑͷ͋Δ࠷৽൛ͷ gem ʹஔ͖͑ͯಈ͔ͳ͍ • όʔδϣχϯά͕͔ͬ͠Γ͍ͯ͠Δ pluginͰͳ͍ͱ Ͳͷόʔδϣϯ͕ΘΕ͍ͯΔ͔Ѳ͢Δͷ͕େม
ຊͷ·ͱΊ • ϨΨγʔ Rails ΞϓϦͱͷ͖߹͍ํ • ͖߹͍ํͱ͍༷ͬͯʑ͋Δ • ιʔείʔυͦͷͷͰͳ͘ ڥߏஙҡ͕࣋ωοΫʹͳΔ߹͋Δ
• ͋Β͔͡Ί͓ͬͯ͘ͱ҆৺