Pro Yearly is on sale from $80 to $50! »

spreeのrails updateの戦いの歴史と github上のPR作成時の工夫

spreeのrails updateの戦いの歴史と github上のPR作成時の工夫

弊社ではspree( https://github.com/spree/spree )を使っています。
spreeは2007年から開発されているRails::Engineを活用したEコマースのプラットフォームであり、そのupdate作業はmigrationを伴います。
最近spree2.4->spree3.0にupdateしたので(rails4.1->rails4.2)、その際に得た知見・レビューに置いての知見等を発表します。

B122e77de860c4307034f0a041dabc8e?s=128

hoshino tsuyoshi

November 08, 2018
Tweet

Transcript

  1. spreeͷrails updateͷઓ͍ͷྺ࢙ͱ github্ͷPR࡞੒࣌ͷ޻෉ #omotesandorb #40 2018/11/08

  2. ࠓ೔࿩͢͜ͱ • spree Λ࢖ͬͯΔ͜ͱ • spreeͱRails::Engineͱrails update • େ͖͍มߋΛՃ͍͑ͨͱ͖ͷgithub PR্ͷ޻෉ɾҰൠ࿦

  3. ࣄ৘ • rails/rails • 4.1.6 -> ࠷ۙ4.2.6.1ʹͨ͠✨ • spree/spree •

    2.3.5(͙Β͍) -> ࠷ۙ3.0.4ʹͨ͠
  4. spreeͱ͸ • railsͰॻ͔ΕͨeίϚʔεϑϨʔϜϫʔΫͬΆ͍΍ͭ • 2007೥͔Β։ൃ • Rails::Engine͕׆༻͞Ε͍ͯΔ

  5. Rails::Engine • ʮΤϯδϯ (engine) ͱ͸ɺΞϓϦέʔγϣϯͷϛχνϡΞͷ Α͏ͳ΋ͷʯ — rails guide •

    https://railsguides.jp/engines.html
  6. spreeͰಘΒΕΔԸܙ • 10೥ؒͷϊ΢ϋ΢͕٧·ͬͯͦ͏ͳϞσϧͨͪ 

  7. spreeͰಘΒΕΔԸܙ • 10೥ؒͷϊ΢ϋ΢͕٧·ͬͯͦ͏ͳϞσϧͨͪ ঎඼ΧςΰϦɾλάɾεϥοά ੫ܭࢉɾ঎඼͝ͱͷ੫ɾ഑ૹઌ͝ͱͷ੫ 

  8. spreeͰಘΒΕΔԸܙ • 10೥ؒͷϊ΢ϋ΢͕٧·ͬͯͦ͏ͳϞσϧͨͪ ঎඼ΧςΰϦɾλάɾεϥοά ੫ܭࢉɾ঎඼͝ͱͷ੫ɾ഑ૹઌ͝ͱͷ੫ ঎඼͝ͱͷૹྉɾ഑ૹઌ͝ͱͷૹྉ ฦ඼ɺฦۚɺ3."

  9. spreeͰಘΒΕΔԸܙ • 10೥ؒͷϊ΢ϋ΢͕٧·ͬͯͦ͏ͳϞσϧͨͪ ঎඼ΧςΰϦɾλάɾεϥοά ੫ܭࢉɾ঎඼͝ͱͷ੫ɾ഑ૹઌ͝ͱͷ੫ ঎඼͝ͱͷૹྉɾ഑ૹઌ͝ͱͷૹྉ ฦ඼ɺฦۚɺ3." ෳ਺ࢧ෷ɺෳ਺ൃૹɺෳ਺૔ݿϩέʔγϣϯ ΫʔϙϯׂҾɺήετൃૹɺόοΫΦʔμʔ FUDʜ

  10. spreeͷѱ͍ͱ͜Ζ • ࠷ॳ͔ΒଟػೳͳͷͰֶशίετ͕ͦΕͳΓʹ͋Δ • spreeΛࢧ͑Δgem͕ݹ͔ͬͨΓ͢Δ • ݹ͍ϑϨʔϜϫʔΫ͔ͩΒ͠ΐ͏͕ͳ͍ • spreeΛࢧ͑Δgem͕…

  11. spreeͷѱ͍ͱ͜Ζ • ࠷ॳ͔ΒଟػೳͳͷͰֶशίετ͕ͦΕͳΓʹ͋Δ • spreeΛࢧ͑Δgem͕ݹ͔ͬͨΓ͢Δ • ݹ͍ϑϨʔϜϫʔΫ͔ͩΒ͠ΐ͏͕ͳ͍ • spreeΛࢧ͑Δgem͕… •

    paranoia, rabl, devise, statemachine, ….(ͪΌΜͱޠΔ ͱ30෼͙Β͍ޠΕͦ͏)
  12. spreeͷ࢓૊Έ (งғؾ) • Gemfileʹ `gem ‘spree’`౳Λ௥Ճ • ϧʔςΟϯά௥Ճ • generatorͰΫϥε࡞੒

    • $ rake railties:install:migrations
  13. spreeͷ࢓૊Έ (งғؾ) • Gemfileʹ `gem ‘spree’`౳Λ௥Ճ • ϧʔςΟϯά௥Ճ • generatorͰΫϥε࡞੒

    • $ rake railties:install:migrations (spreeͷupdate࣌ʹ΋࣮ߦඞཁ!)
  14. # ίΞ gem 'spree', '~> 3.6.4’ # ೝূ gem 'spree_auth_devise',

    '~> 3.3’ # ܾࡁ gem 'spree_gateway', '~> 3.3' Gemfileʹ `gem ‘spree’`౳Λ௥Ճ
  15. Rails.application.routes.draw do # ௥Ճ mount Spree::Core::Engine, at: ‘/‘ … …

    ϧʔςΟϯά௥Ճ
  16. # ϢʔβʔΫϥε $ rails g spree:install -—user_class=Spree::User # ೝূ $

    rails g spree:auth:install # ܾࡁ $ rails g spree_gateway:install generatorͰඞཁΫϥε࡞੒
  17. $ rake railties:install:migrations $ rake railties:install:migrations

  18. $ rake railties:install:migrations Copied migration 20181105025753_create_spree_taxons_promotion_rules.spree.rb from spree Copied migration

    20181105025754_create_spree_refunds.spree.rb from spree Copied migration 20181105025755_create_spree_return_authorization_inventory_unit.s pree.rb from spree Copied migration 20181105025756_rename_return_authorization_inventory_unit_to_retu rn_items.spree.rb from spree Copied migration 20181105025757_backfill_line_item_pre_tax_amount.spree.rb from spree $ rake railties:install:migrations -> ଍Γͳ͍db/migrate/*.rb͕͍ͬͺ͍Ͱ͖Δ
  19. # ྫ $ less db/migrate/ 20181105030028_create_spree_taxons_promotion_rules.spree.rb $ rake railties:install:migrations ->

    ଍Γͳ͍db/migrate/*.rb͕͍ͬͺ͍Ͱ͖Δ
  20. # ྫ $ less db/migrate/ 20181105030028_create_spree_taxons_promotion_rules.spree.rb $ rake railties:install:migrations ->

    ଍Γͳ͍db/migrate/*.rb͕͍ͬͺ͍Ͱ͖Δ engine໊͕֦ுࢠʹೖΔ
  21. # ྫ $ less db/migrate/ 20181105030028_create_spree_taxons_promotion_rules.spree.rb # This migration comes

    from spree (originally 20140318191500) class CreateSpreeTaxonsPromotionRules < ActiveRecord::Migration def change … $ rake railties:install:migrations -> ଍Γͳ͍db/migrate/*.rb͕͍ͬͺ͍Ͱ͖Δ engine໊͕֦ுࢠʹೖΔ
  22. # ྫ $ less db/migrate/ 20181105030028_create_spree_taxons_promotion_rules.spree.rb # This migration comes

    from spree (originally 20140318191500) class CreateSpreeTaxonsPromotionRules < ActiveRecord::Migration def change … $ rake railties:install:migrations -> ଍Γͳ͍db/migrate/*.rb͕͍ͬͺ͍Ͱ͖Δ engineଆͷݩͷmigration file engine໊͕֦ுࢠʹೖΔ
  23. $ rake railties:install:migrations …࣮͸ rails guideʹॻ͍ͯ͋Δ

  24. ΋͏spreeΘ͔Γ·ͨ͠Ͷ?

  25. railsͷΞοϓσʔτͷ࿩͸?

  26. railsͷΞοϓσʔτͷ࿩͸? • railsͷΞοϓσʔτ͸spree gemͷΞοϓσʔτͷ࿩ͱ੾ͬͯ ΋੾Γ཭ͤͳ͍ΜͰ͢ʂ

  27. spreeͷόʔδϣχϯά • railsͷόʔδϣϯݻఆ͕ݫ͍͠ • = ʮઌʹยํΛ্͛ͯʙ͔ΒͷʙʯΈ͍ͨͳΏΔ͍Ҡߦ͕Ͱ͖ͳ͍ • ɹ • •

    ɹ • • ɹ •
  28. spreeͷόʔδϣχϯά • railsͷόʔδϣϯݻఆ͕ݫ͍͠ • = ʮઌʹยํΛ্͛ͯʙ͔ΒͷʙʯΈ͍ͨͳΏΔ͍Ҡߦ͕Ͱ͖ͳ͍ • spree v2.4.10 •

    s.add_dependency 'rails', '~> 4.1.11’ • spree v3.0.0 • s.add_dependency 'rails', '~> 4.2.0’ • ɹ •
  29. spreeͷόʔδϣχϯά • railsͷόʔδϣϯݻఆ͕ݫ͍͠ • = ʮઌʹยํΛ্͛ͯʙ͔ΒͷʙʯΈ͍ͨͳΏΔ͍Ҡߦ͕Ͱ͖ͳ͍ • spree v2.4.10 •

    s.add_dependency 'rails', '~> 4.1.11’ • spree v3.0.0 • s.add_dependency 'rails', '~> 4.2.0’ • spree v2.4 -> v3.0Ͱ͸౰વεΩʔϚͷมߋ΋͋Δ •
  30. spreeͷόʔδϣχϯά • railsͷόʔδϣϯݻఆ͕ݫ͍͠ • = ʮઌʹยํΛ্͛ͯʙ͔ΒͷʙʯΈ͍ͨͳΏΔ͍Ҡߦ͕Ͱ͖ͳ͍ • spree v2.4.10 •

    s.add_dependency 'rails', '~> 4.1.11’ • spree v3.0.0 • s.add_dependency 'rails', '~> 4.2.0’ • spree v2.4 -> v3.0Ͱ͸౰વεΩʔϚͷมߋ΋͋Δ • rake db:migrateͱrails update͕ಉ࣌ʹඞཁ
  31. spreeͷόʔδϣχϯά • railsͷόʔδϣϯݻఆ͕ݫ͍͠ • = ʮઌʹยํΛ্͛ͯʙ͔ΒͷʙʯΈ͍ͨͳΏΔ͍Ҡߦ͕Ͱ͖ͳ͍ • spree v2.4.10 •

    s.add_dependency 'rails', '~> 4.1.11’ • spree v3.0.0 • s.add_dependency 'rails', '~> 4.2.0’ • spree v2.4 -> v3.0Ͱ͸౰વεΩʔϚͷมߋ΋͋Δ • rake db:migrateͱrails update͕ಉ࣌ʹඞཁ
  32. ී௨ͷrailsͷΞοϓσʔτ 1. $ bundle update rails 2. $ rake rails:update(rails4ܥ)

    3. ςετΛ௨͢ • ίʔυͷमਖ਼
  33. spreeΞϓϦͷΞοϓσʔτ 1. $ bundle update rails 2. $ rake railties:install:migrations

    <- ͜ΕཁΔ 3. $ rake rails:update(rails4ܥ) 4.ςετΛ௨͢ • ίʔυͷमਖ਼
  34. spreeͷΞοϓσʔτ(ಛʹ2.4->3.0) • ͞Βʹ2.4 -> 3.0ͷ৔߹ɺspree-backend(؅ཧը໘)ͷελΠϧ मਖ਼͕͍͢͝ • (͜Ε۪ஒ)

  35. spree 2.4

  36. spree 3.0

  37. ౰વPR͸େ͖͘ͳΔ

  38. ౰વPR͸େ͖͘ͳΔ  (ಛʹ2.4->3.0)

  39. ౰વPR͸େ͖͘ͳΔ  ࢓ํͳ͍ɺ࢓ํͳ͍Μ΍ɻɻɻ (ಛʹ2.4->3.0)

  40. ϨϏϡϫʔͷෛ୲΍ίϛϡχέʔγϣϯ ͕গͳ͘ͳΔΑ͏ͳ޻෉͕ඞཁ

  41. PR͕େ͖͘ͳΒͳ͍Α͏ʹ͢Δʹ͸?

  42. ͕Μ͹ͬͯPRࡉ͔͘͢Δ

  43. ཧ૝ : ਌PRΛ࡞ͬͯίπίπ spree3.0 develop ਌PR ->

  44. spree3.0 develop PR#1 ਌PR -> ཧ૝ : ਌PRΛ࡞ͬͯίπίπ

  45. spree3.0 develop PR#1 PR#2 ਌PR -> ཧ૝ : ਌PRΛ࡞ͬͯίπίπ

  46. spree3.0 develop PR#1 PR#2 ਌PR -> PR#3 ཧ૝ : ਌PRΛ࡞ͬͯίπίπ

  47. spree3.0 develop PR#1 PR#2 ਌PR -> PR#3 ཧ૝ : ਌PRΛ࡞ͬͯίπίπ

  48. spree3.0 PR#1 develop CVOEMFVQEBUF ແཧʹ࠷ॳ͔Βςετશ෦௨ͦ͏ͱ͢Δͱ…

  49. spree3.0 PR#1 develop CVOEMFVQEBUF SBLFTQSFFJOTUBMMNJHSBUJPO ແཧʹ࠷ॳ͔Βςετશ෦௨ͦ͏ͱ͢Δͱ…

  50. spree3.0 develop PR#1 CVOEMFVQEBUF SBLFSBJMUJFTJOTUBMMNJHSBUJPO Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ ແཧʹ࠷ॳ͔Βςετશ෦௨ͦ͏ͱ͢Δͱ…

  51. spree3.0 develop PR#1 CVOEMFVQEBUF SBLFSBJMUJFTJOTUBMMNJHSBUJPO Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ ίϯτϩʔϥʔͷमਖ਼ ίϯτϩʔϥʔͷमਖ਼

    Ϗϡʔͷमਖ਼ Ϗϡʔͷमਖ਼ʜ ແཧʹ࠷ॳ͔Βςετશ෦௨ͦ͏ͱ͢Δͱ…
  52. spree3.0 develop PR#1 CVOEMFVQEBUF SBLFSBJMUJFTJOTUBMMNJHSBUJPO Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ ίϯτϩʔϥʔͷमਖ਼ ίϯτϩʔϥʔͷमਖ਼

    Ϗϡʔͷमਖ਼ Ϗϡʔͷमਖ਼ʜ ແཧʹ࠷ॳ͔Βςετશ෦௨ͦ͏ͱ͢Δͱ… ऩଋ͠ͳ͍
  53. ςετ௨͢·Ͱʹमਖ਼͕ଟ͍ݪҼ •spec/models •spec/requests •spec/features <— ͍ͭ͜

  54. Զʮ࠷ॳͷPRͰ͸spec/features͸ແࢹ͠Αͬͱʯ

  55. ࠷ॳͷPRͰ͸spec/features͸ແࢹ •͔͠͠PRͷCIεςʔλεʮ❌ʯΑΓ΋ʮ✅ʯͷ΄͏͕ؾ͕ϥΫ •ʮ❌ʯͩͱʮຊ౰ʹҙਤͨ͠ͱ͜Ζ͚ͩfailͯ͠Δ͔ʯ͕ෆ໌ྎ • • • •

  56. ࠷ॳͷPRͰ͸spec/features͸ແࢹ •͔͠͠PRͷCIεςʔλεʮ❌ʯΑΓ΋ʮ✅ʯͷ΄͏͕ؾ͕ϥΫ •ʮ❌ʯͩͱʮຊ౰ʹҙਤͨ͠ͱ͜Ζ͚ͩfailͯ͠Δ͔ʯ͕ෆ໌ྎ •Ͳ͏΍ͬͯ΍Δ? • xit΍xdescribe࢖͏? • •

  57. ࠷ॳͷPRͰ͸spec/features͸ແࢹ •͔͠͠PRͷCIεςʔλεʮ❌ʯΑΓ΋ʮ✅ʯͷ΄͏͕ؾ͕ϥΫ •ʮ❌ʯͩͱʮຊ౰ʹҙਤͨ͠ͱ͜Ζ͚ͩfailͯ͠Δ͔ʯ͕ෆ໌ྎ •Ͳ͏΍ͬͯ΍Δ? • xit΍xdescribe࢖͏? •ҰݟԦಓͦ͏͕ͩ •blameԚΕΔͷͰݸਓతʹ͸ݏ

  58. •͜͏΍ͬͯΈͨ •CIͰrspec࣮ߦલʹམͪΔϑΝΠϧ͚ͩফ͢ •ΘΓͱྑ͍ؾ͕͢Δ ࠷ॳͷPRͰ͸spec/features͸ແࢹ

  59. None
  60. spree3.0 develop PR#1 CVOEMFVQEBUF SBLFSBJMUJFTJOTUBMMNJHSBUJPO Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ ίϯτϩʔϥʔͷमਖ਼ ίϯτϩʔϥʔͷमਖ਼

    Ϗϡʔͷमਖ਼ Ϗϡʔͷमਖ਼ʜ Before ऩଋ͠ͳ͍
  61. After spree3.0 develop PR#1 CVOEMFVQEBUF SBLFSBJMUJFTJOTUBMMNJHSBUJPO 6QEBUFDJSDMFDJDPOpHZNM Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼ Ϟσϧͷमਖ਼

    13େ͖͘ͳΒͣʹऩଋ ☺
  62. PR#1

  63. PR#1

  64. ҰݟΞΧϯ☺ PR#1

  65. ͔͠͠ Gemfile* ͱ db/**Λআ͚͹… 17 files changed, 133 insertions(+), 44

    deletions(-) PR#1 ҰݟΞΧϯ☺
  66. ਌PR͕େ͖͍ͷ΋ਏ͍ΑͶͱ͍͏࿩

  67. Spree3.0 develop PR#1 PR#2 ਌PR -> PR#3

  68. ਌PRΛେ͖͘͠ͳ͍ίπ • ͦ΋ͦ΋developͰ४උͰ͖Δ΍ͭ͸developʹೖΕͱ͘ • ͋ͱ͔Βؾ͍ͮͨ΍ͭ΋ɺdevelopʹೖΕΒΕΔ΋ͷ͸ developʹೖΕΔ

  69. ͦ΋ͦ΋developͰ४උͰ͖Δ΍ͭ͸ developʹೖΕͱ͘

  70. ྫ1: spree3.0ͰͳΜ͔ϝιου͕͍͖ͳΓ ͳ͘ͳͬͨ

  71. ྫ1: spree3.0ͰͳΜ͔ϝιου͕͍͖ͳΓ ͳ͘ͳͬͨ

  72. ྫ1: spree3.0ͰͳΜ͔ϝιου͕͍͖ͳΓ ͳ͘ͳͬͨ ʮ͜ͷίʔυ͸ԿͷՁ஋΋ੜΈग़͍ͯ͠ͳ͍ͷͰফ͠·͢ʯ

  73. ྫ1: spree3.0ͰͳΜ͔ϝιου͕͍͖ͳΓ ͳ͘ͳͬͨ ฐࣾ࢖ͬͯ·͢☺ ʮ͜ͷίʔυ͸ԿͷՁ஋΋ੜΈग़͍ͯ͠ͳ͍ͷͰফ͠·͢ʯ

  74. ྫ1: spree3.0ͰͳΜ͔ϝιου͕͍͖ͳΓ ͳ͘ͳͬͨ ฐࣾ࢖ͬͯ·͢☺ ʮ͜ͷίʔυ͸ԿͷՁ஋΋ੜΈग़͍ͯ͠ͳ͍ͷͰফ͠·͢ʯ ·͋railsʹݶΒͣΑ͋͘Δ

  75. -> ਌PR༻ϒϥϯνΛ࡞Δલʹରॲ!

  76. -> ਌PR༻ϒϥϯνΛ࡞Δલʹରॲ!

  77. ࣄલʹରॲͰ͖Δύλʔϯͷ΍ͭ! -> ਌PR༻ϒϥϯνΛ࡞Δલʹରॲ!

  78. ࣄલʹରॲͰ͖Δύλʔϯͷ΍ͭ! -> ਌PR༻ϒϥϯνΛ࡞Δલʹରॲ! ͱ͜ΖͰɺ
 ίϛοτIDͱ͔షΔͱྑͦ͞͏Ͱ͢ΑͶ☺

  79. <دΓಓ> git΍githubͰͷcommitͷ୳͠ํ

  80. ίϛοτIDௐ΂Δ࣌ʮࠨ্ͷݕࡧ૭ʯ΂ΜΓ..Ͱ͢ΑͶ!?

  81. ίϛοτIDௐ΂Δ࣌ʮࠨ্ͷݕࡧ૭ʯ΂ΜΓ..Ͱ͢ΑͶ!? ࠨ্ͷݕࡧ૭ˣ

  82. ίϛοτIDௐ΂Δ࣌ʮࠨ্ͷݕࡧ૭ʯ΂ΜΓ..Ͱ͢ΑͶ!? ࠨ্ͷݕࡧ૭ˣ

  83. ίϛοτIDௐ΂Δ࣌ʮࠨ্ͷݕࡧ૭ʯ΂ΜΓ..Ͱ͢ΑͶ!? ࠨ্ͷݕࡧ૭ˣ ίϛοτɾPRɾissueɾWiki
 ͕ݟ͔ͭͬͯศར!! …

  84. ίϛοτIDௐ΂Δ࣌ʮࠨ্ͷݕࡧ૭ʯ΂ΜΓ..Ͱ͢ΑͶ!? ࠨ্ͷݕࡧ૭ˣ ͚Ͳ….

  85. ίϛοτIDௐ΂Δ࣌ʮࠨ্ͷݕࡧ૭ʯ΂ΜΓ..Ͱ͢ΑͶ!? ࠨ্ͷݕࡧ૭ˣ ͚Ͳ…. ίϨδϟφΠײ….

  86. ίϛοτIDௐ΂Δͷʹʮ$ git log -Sʯ΋΂ΜΓ!!

  87. ίϛοτIDௐ΂Δͷʹʮ$ git log -Sʯ΋΂ΜΓ!! • `$ git log -S` ஌ͬͯΔਓ??

  88. ίϛοτIDௐ΂Δͷʹʮ$ git log -Sʯ΋΂ΜΓ!! • `$ git log -S` ஌ͬͯΔਓ??

    • `$ git log -S “୳͍ͨ͠จࣈྻ” - - /path/to/seek` • `$ git log -S “୳͍ͨ͠จࣈྻ” ίϛοτ1..ίϛοτ2 - - /path/to/seek` • `$ git log -S “୳͍ͨ͠จࣈྻ” ίϛοτ1..ίϛοτ2
  89. ίϛοτIDௐ΂Δͷʹʮ$ git log -Sʯ΋΂ΜΓ!! • `$ git log -S` ஌ͬͯΔਓ??

    • `$ git log -S “୳͍ͨ͠จࣈྻ” - - /path/to/seek` • `$ git log -S “୳͍ͨ͠จࣈྻ” ίϛοτ1..ίϛοτ2 - - /path/to/seek` • `$ git log -S “୳͍ͨ͠จࣈྻ” ίϛοτ1..ίϛοτ2 • ਖ਼نදݱ࢖͍͍ͨͱ͖͸ `-S —pickaxe-regex` ͱ͔ `-G` ͱ͔࢖͏ͱྑ͍ • (ҧ͍͸๨ΕͨͷͰάά͍ͬͯͩ͘͞)
  90. ίϛοτIDௐ΂Δͷʹʮ$ git log -Sʯ΋΂ΜΓ!! $ git log -p -S by_state

    v2.4.10…v3.0.4
  91. ίϛοτIDௐ΂Δͷʹʮ$ git log -Sʯ΋΂ΜΓ!! $ git log -p -S by_state

    v2.4.10…v3.0.4
  92. ίϛοτIDௐ΂Δͷʹʮ$ git log -Sʯ΋΂ΜΓ!! ཉ͔ͬͨ͠ͷ͕Ұൃώοτ!! $ git log -p -S

    by_state v2.4.10…v3.0.4
  93. </دΓಓ>

  94. ྫ2: ઌʹ্͛ΒΕΔgem͸্͓͛ͯ͘ Rails4.2ʹ͢Δͱ͜ͷgem͸updateඞਢ!! Έ͍ͨͳ΍ͭɻ

  95. ྫ2: ઌʹ্͛ΒΕΔgem͸্͓͛ͯ͘ Rails4.2ʹ͢Δͱ͜ͷgem͸updateඞਢ!! Έ͍ͨͳ΍ͭɻ

  96. ྫ2: ઌʹ্͛ΒΕΔgem͸্͓͛ͯ͘ Rails4.2ʹ͢Δͱ͜ͷgem͸updateඞਢ!! Έ͍ͨͳ΍ͭɻ -> Rails4.1ͷࠓͰ΋ಈ͘!! ͳΒઌʹupdate͓ͯ͜͠͏!

  97. spree3.0 develop ͭ·Γ:਌PRϒϥϯνΛ੾Δલʹ… ਌PR ->

  98. ࣄલʹରॲͰ͖Δ΍ͭ͸ऴΘΒ͓ͤͯ͘ ࣄલPR#1 develop ࣄલPR#2 ͭ·Γ:਌PRϒϥϯνΛ੾Δલʹ… spree3.0 ਌PR ->

  99. ࣄલʹରॲͰ͖Δ΍ͭ͸ऴΘΒ͓ͤͯ͘ ࣄલPR#1 develop ࣄલPR#2 ͭ·Γ:਌PRϒϥϯνΛ੾Δલʹ… spree3.0 ਌PR -> (ͳΜ͔΋ͷ͘͢͝Ϩϕϧͷ௿͍࿩Λॻ͍ͯΔؾ͕ͯ͠ෆ҆ )

  100. ͋ͱ͔Βؾ͍ͮͨ΍ͭ΋ɺdevelopʹೖ ΕΒΕΔ΋ͷ͸developʹೖΕΔ

  101. spree3.0 develop PR#1 PR#2 ਌PR -> PR#3Λ࡞Δલʹɺ ʮ͜ΕઌʹdevelopʹೖΕΒΕͳ͍?ʯΛࣗ໰ PR#3

  102. spree3.0 develop PR#1 PR#2 ਌PR -> PR#3Λ࡞Δલʹɺ ʮ͜ΕઌʹdevelopʹೖΕΒΕͳ͍?ʯΛࣗ໰ PR#3

  103. spree3.0 PR#1 PR#2 ਌PR -> PR#3Λ࡞Δલʹɺ ʮ͜ΕઌʹdevelopʹೖΕΒΕͳ͍?ʯΛࣗ໰ develop

  104. spree3.0 develop PR#1 PR#2 ਌PR -> PR#3Λ࡞Δલʹɺ ʮ͜ΕઌʹdevelopʹೖΕΒΕͳ͍?ʯΛࣗ໰

  105. ΍Γ͗ͨ݁͢ՌݟΒΕΔޫܠ Ұݟμα͍ ɹ

  106. ΍Γ͗ͨ݁͢ՌݟΒΕΔޫܠ Ұݟμα͍ μαͯ͘΋͍͍͡Όͳ͍!!

  107. ཁ͸มߋ͸ʮՄೳͳݶΓʯগͮͭ͠σϓϩ Π͍ͯ͘͠

  108. ͳΜͰͦΜͳʹνΩϯͳͷ • σϓϩΠͨ͋͠ͱʹઈରʹͳʹ͔ى͖Δ͔Β • σϓϩΠͨ͋͠ͱʹௐࠪൣғ͕ڱ͍ͱௐ͕ࠪϥΫ

  109. rails:update͢Δ্Ͱେࣄͦ͏ͳ͜ͱ ʢ·ͱΊͬΆ͍͜ͱ)

  110. େࣄͳ͜ͱɾ؀ڥฤ • σϓϩΠޙΤϥʔ͕ى͖ͨΒؾ͚ͮΔΑ͏ʹ͓ͯ͘͠ • bugsnag/sentry/airbrakeͷྨ (ͳΜ͔ͩΜͩͰҰ൪େࣄ) • ͋Δఔ౓ͷςετΧόϨοδ͸͋ͬͨ΄͏͕͍͍ • ಈ࡞֬ೝ༻εςʔδϯά؀ڥͷ༻ҙ

    • spreeͷ৔߹͸ϚΠάϨʔγϣϯ൐͏ͷͰDB΋ඞཁ
  111. େࣄͳ͜ͱɾܭըฤ • ͳΔ΂͘1όʔδϣϯͣͭ΍Δ • ͬͯrails guideʹॻ͍ͯ͋ͬͨؾ͕͢Δ • ruby΋rails΋spree΋ • ʮ͍ͭͰʹ̋̋gemͷόʔδϣϯ΋্͛Δʯͱ͔ࢲ͸΍Βͳ

    ͍೿ • ݸਓࠩ͋Γɾ౓ڳͱ಺༰ʹΑͬͯ͸͜ͷݶΓͰ͸ͳ͍
  112. େࣄͳ͜ͱɾϨϏϡʔฤ • PR͸ՄೳͳݶΓখ͘͞ • PR͸ՄೳͳݶΓࡉ͔͘ • ͳͥͦͷमਖ਼Λ͢Δͷ͔ͷཧ༝Λ۩ମతʹ໌ه • ৼΓฦͬͨͱ͖ͷͨΊʹ •

    ো֐ௐࠪͷͱ͖ͷͨΊʹ
  113. εϥΠυ͸Ҏ্ • ࣗݾ঺հ • גࣜձࣾεϚʔϏʔ • ੕໺߶ࢤ(hoshinotsuyoshi) • ࢠҭͯੈ୅ɾঁੑ޲͚ͷECαΠτ࡞ͬͯΔ •

    rubyͱ͔Πϯϑϥͱ͔͕޷͖