Save 37% off PRO during our Black Friday Sale! »

レガシーRailsアプリとの付き合い方について考える

B18855045969f67b20aa93392b9ab3ff?s=47 Yusaku ONO
November 17, 2017

 レガシーRailsアプリとの付き合い方について考える

2018/11/17 万葉社内で発表した資料です

B18855045969f67b20aa93392b9ab3ff?s=128

Yusaku ONO

November 17, 2017
Tweet

Transcript

  1. ϨΨγʔ Rails ΞϓϦͱͷ ෇͖߹͍ํʹ͍ͭͯߟ͑Δ 2017/11/17 @yono

  2. ͜ͷࢿྉʹ͍ͭͯ • ࣾ಺Ͱൃදͨ͠ࢿྉΛެ։͠·͢ • લ৬ͷܦݧΛࠓͷձࣾ(ສ༿)Ͱ΋ڞ༗͠Α͏ͱ ͍͏Ϟνϕʔγϣϯ͔Β࡞Γ·ͨ͠

  3. ࠓ೔ͷ͓඼ॻ͖ • ෇͖߹͍ํͱ͸ • ͦͷଞখωλʢ͕࣌ؒ͋Ε͹ʣ

  4. ϨΨγʔ Rails ΞϓϦͱͷ෇͖߹͍ํͱ͸ • Ruby/Rails όʔδϣϯΞοϓσʔτ • ӡ༻อकΛҾ͖ܧ͙ • ৽͍͠αʔόʔʹҠߦ͢Δ

    • ഇࢭͯ͠ผγεςϜʹҠߦ͢Δ • => ಈ͔͠ଓ͚Δʢ৔߹͕ଟ͍ʣ
  5. ಈ͔͠ଓ͚ΔͨΊʹ͸ • ಈ͘؀ڥΛҡ࣋͢Δ • ৔߹ʹΑͬͯ͸ίʔυΛ௚͢ • ։ൃ؀ڥ͕ཉ͍͠ • อकʹ͓͍ͯιʔείʔυͦͷ΋ͷ͚ͩͰͳ͘
 ؀ڥߏங΍؀ڥҡ͕࣋ωοΫʹͳΔ৔߹΋͋Δ

  6. ؀ڥΛ஌Δ • Rails ͷΠϯετʔϧํ๏ • Ruby ͷΠϯετʔϧํ๏ • σʔλϕʔε •

    Web αʔόʔ / ΞϓϦέʔγϣϯαʔόʔ • ಈ࡞OS
  7. Rails ͷΠϯετʔϧํ๏ • όʔδϣϯ͕໌ه͞Εͯͳ͍৔߹ʹಛఆ͢ΔࡐྉʹͳΔ • bundle install • gem install

    rails • apt-get install rails ʢDebian ܥݶఆʣ • apt ܦ༝ͰΠϯετʔϧ͢Δͱ gem list ʹݱΕͳ͍ • gem list ʹݱΕͳ͍ͷʹ rails ίϚϯυ͕ଘࡏ͢Δ৔߹͸͜ ΕΛٙͬͯΈΔ
  8. ͪͳΈʹ apt-get ͱ͸ • Debianܥͷ OS ʹ౥ࡌ͞Ε͍ͯΔύοέʔδ
 Ϛωʔδϟʔ • CentOS

    Ͱݴ͏ͱ͜Ζͷ yum • ྫ: apt-get install postgresql • աڈͷ apt Ͱ͸ rails ͳͲͷ gem ͕ύοέʔδͱͯ͠ ఏڙ͞Ε͍ͯͨ
  9. Ruby ͷΠϯετʔϧํ๏ • γεςϜΠϯετʔϧ (apt, yumʣ • جຊతʹݹ͍ʢྫ: CentOS6 =>

    1.8.7ʣ • ࣮֬ʹϏϧυͰ͖ΔͷͰ҆৺ • rbenv • σϑΝΫτʁ • Ϗϧυ͢ΔͷʹҰ޻෉͍Δ৔߹΋͋Δ • Cron ܦ༝Ͱಈ͔͢ͱ͖ʹҰۤ࿑ • rvm • ͋·Γ࢖ΘΕͳ͘ͳͬͨ • ϏϧυͰ͖ΔΑ͏ʹσϑΥϧτͰύονΛ͋ͯͯ͘ΕΔ৔߹͋Γ
  10. σʔλϕʔε • PostgreSQL / MySQL ͩͱخ͍͠ • ͨ·ʹ SQL Server

    ͱ͔͋Γ·͢ • ΫϥαόͰ࢖ΘΕ͍ͯΔDBʢSQL ServerʣΛࢀর͢ΔΑ͏ͳέʔε • ΋ͪΖΜDBͷόʔδϣϯ΋ॏཁͰ͢ • όʔδϣϯʹΑͬͯΫΤϦͷৼΔ෣͍͕มΘΔέʔε͕͋Δ • SQL΂ͨॻ͖ͯ͠ΔΑ͏ͳ৔߹ʹҾ͔͔ͬΓ͕ͪ
  11. Webαʔόʔ / ΞϓϦέʔγϣϯαʔόʔ • Webαʔόʔ • Apache / nginx •

    ΞϓϦέʔγϣϯαʔόʔ • mongrel / Passenger / unicorn • Webαʔόʔ࢖Θͣ௚઀ΞϓϦέʔγϣϯαʔόʔͰ
 ड͚Δέʔε΋
  12. ಈ࡞OS • CentOS • Debian / Ubuntu • كʹ Windows

    • Bitnami Redmine ͱ͍͏ Window ༻ͷ Redmine Πϯετʔϥ͕ఏڙ͞Ε͍ͯΔ
  13. ֎෦ͱͷ࿈ܞ • ଞͷ Rails ΞϓϦͱ࿈ܞ • ActiveResource ( 4.0 Ͱݸผ

    gem ʹͳͬͨʣ • ActionWebService (1ܥݶఆ) • Web API ܦ༝Ͱଞͷ Web ΞϓϦͱ࿈ܞ • DB Λ௚઀ࢀরʢ͢Δ/͞ΕΔέʔε྆ํ͋Γ͏Δʣ • αʔόʔ಺Λௐࠪ͢Δ͚ͩͰ͸ݟ͚͖ͭΕͳ͍ʢಛʹࢀর͞ΕΔ৔߹ʣ
  14. ຊ೔ͷ·ͱΊ • ϨΨγʔ Rails ΞϓϦͱͷ෇͖߹͍ํ • ෇͖߹͍ํͱ͍ͬͯ΋༷ʑ͋Δ • ιʔείʔυͦͷ΋ͷͰ͸ͳ͘
 ؀ڥߏங΍ҡ͕࣋ωοΫʹͳΔ৔߹΋͋Δ

    • ͋Β͔͡Ί஌͓ͬͯ͘ͱ҆৺
  15. ͦͷଞখωλ ʢ͕࣌ؒ͋Ε͹ʣ

  16. Rails 2 → 3.0 • ҙ֎ͱͳΜͱ͔ͳΔҹ৅ • rails_upgrade plugin Λ࢖͏ͱมߋ͕ඞཁͳ


    ՕॴΛચ͍ग़ͯ͘͠ΕΔ • https://github.com/rails/rails_upgrade
  17. Rails 3.0 → 3.2 • ݸਓతʹ͸Ұ൪ͭΒ͍ • assets pipeline… •

    CSS, ը૾ೖΓͷڊେͳ JavaScript ϥΠϒϥϦΛಋೖ͍ͯ͠Δͱ ٧Έ΍͍͢ʢ٧Μͩʣ • prototype.js ༻ͷϔϧύʔϝιου͕ফ͑Δ • ࠷ऴखஈ: https://github.com/rails/prototype_legacy_helper
  18. Rails 3.2 → 4 • vendor/plugins → Bundler • Bundler

    ಋೖલͷ rails ͸ vendor/plugins ҎԼʹ plugin ͷιʔείʔυΛ഑ஔ͢ΔܗࣜΛऔͬͯ ͍ͨ • ΞϓϦͷϦϙδτϦʹ֤ plugin ͷιʔείʔυ Λ߹Θͤͯίϛοτ͍ͯͨ͠
  19. Rails 3.2 → 4 • plugin ͷιʔείʔυΛϦϙδτϦʹؚΊΔ͜ͱͰԿ ͕ى͜Δ͔ • plugin

    ࣗମʹखΛՃ͍͑ͯͯ΋ؾ͖ͮʹ͍͘ • ޓ׵ੑͷ͋Δ࠷৽൛ͷ gem ʹஔ͖׵͑ͯ΋ಈ͔ͳ͍ • όʔδϣχϯά͕͔ͬ͠Γ͍ͯ͠Δ pluginͰͳ͍ͱ
 Ͳͷόʔδϣϯ͕࢖ΘΕ͍ͯΔ͔೺Ѳ͢Δͷ͕େม
  20. ຊ೔ͷ·ͱΊ • ϨΨγʔ Rails ΞϓϦͱͷ෇͖߹͍ํ • ෇͖߹͍ํͱ͍ͬͯ΋༷ʑ͋Δ • ιʔείʔυͦͷ΋ͷͰ͸ͳ͘
 ؀ڥߏங΍ҡ͕࣋ωοΫʹͳΔ৔߹΋͋Δ

    • ͋Β͔͡Ί஌͓ͬͯ͘ͱ҆৺