Slide 1

Slide 1 text

Block is everywhere Event: LegalForce Ruby Meet Up #1 Date: 2019-12-11 Speaker: େ૔խ࢙

Slide 2

Slide 2 text

pp self • ໊લɿେ૔խ࢙ • ॴଐɿϑϦʔϥϯε • ΤσΟλɿVim • Α͍͘ΔίϛϡχςΟɿGrow.rbʢओ࠵ʣɺTama.rbͳͲ

Slide 3

Slide 3 text

RubyͷϒϩοΫ͸ૉ੖Β͍͠

Slide 4

Slide 4 text

RubyͷϒϩοΫͷ࢖ΘΕํ

Slide 5

Slide 5 text

RubyͷϒϩοΫ͕࢖ΘΕ͍ͯΔՕॴ • RailsͷϨΠΞ΢τͷϨϯμϦϯάʢyieldʣ • ֤छgemͷઃఆʢconfigure doʣ • Rake΍FactoryBotʹ୅ද͞ΕΔDSL • Ϧιʔεͷ؅ཧ • ϑοΫͷఆٛ • etc…

Slide 6

Slide 6 text

RailsͷϨΠΞ΢τͷϨϯμϦϯά • ϨΠΞ΢τϑΝΠϧͷதʹ͋Δ”yield”͸࣮͸ϒϩοΫΛධՁ͠ ͍ͯΔ • RailsͷϏϡʔʢςϯϓϨʔτʣ͸࠷ऴతʹ͸Rubyͱ࣮ͯ͠ߦ͞ ΕΔͷͰೖΕࢠΛ࣮ݱ͢ΔͷʹϒϩοΫΛωετ͍ͤͯ͞Δͱ ࢥΘΕΔ • Ұ൪ແҙࣝʹϒϩοΫΛ࢖͍ͬͯΔՕॴͰ͸ʁ

Slide 7

Slide 7 text

֤छgemͷઃఆ • “configure do |config|”ͱ͔ͷΞϨ͸౰વϒϩοΫΛ࢖͍ͬͯΔ • ίϯϑΟάΦϒδΣΫτʹΞΫηε͢Δͷ͕௚ײతʹͰ͖Δ • ઃఆ͞ΕΔଆ͸”config = Config.new; yield(config)”Έ͍ͨʹ ॻ͚Δ • ࣮͸ϒϩοΫΛ࢖͏ඞཁ͸ͳ͍…ʁ

Slide 8

Slide 8 text

DSL • DSLΛ࣮૷͢ΔͷʹϒϩοΫʢͱ͍͏ΑΓProcΦϒδΣΫτ ͱ”instance_eval”ϝιουʣ͸ඞਢ • RSpecͩͱϒϩοΫΛ࣮ߦ͢Δͨͼʹಗ໊ΫϥεΛ࡞੒͍ͯͨ͠ Γ΋͢Δ • ʮϝλϓϩάϥϛϯάRubyʯͱ͍͏໊ஶΛಡΉͱ࢓૊Έ͕Θ͔Δ

Slide 9

Slide 9 text

Ϧιʔεͷ؅ཧ • “File.open do |f|”͕୅දత • “Net::HTTP.start do |http|”ͳΜ͔΋ͦ͏ • ϝιου͕ϦιʔεΛ࡞੒͠ɺϒϩοΫ͕ด͡ΔͱϦιʔε΋ ด͡ΒΕΔ

Slide 10

Slide 10 text

ϑοΫͷఆٛ • RSpecͷ”before(:each)”΍Railsͷ”before_action”ͳͲ͕୅දత • ϒϩοΫͷத਎ΛProcΦϒδΣΫτͱͯ࣋ͪ͠ճ͢ • aroundܥͷϑοΫ͸಺෦ͰyieldΛݺͿͱຊॲཧ͕૸ΔͷͰೋ ॏʹϒϩοΫΛ࢖͍ͬͯΔ

Slide 11

Slide 11 text

ଞʹ΋৭ʑͳϝιου͕ϒϩοΫΛड͚Δ • Enumerable#countʢϒϩοΫ͕trueͷཁૉΛ਺͑Δʣ • ActiveRecord::Relation#buildʢϒϩοΫ಺ͰΠϯελϯεઃఆʣ • Hash.newʢॳظԽͷํ๏Λنఆʣ • String#gsubʢஔ׵ͷํ๏Λنఆʣ

Slide 12

Slide 12 text

͓·͚

Slide 13

Slide 13 text

RubyͷϒϩοΫ͸Ϋϩʔδϟ

Slide 14

Slide 14 text

पғͷ؀ڥʹΞΫηεͰ͖ΔͷͰɺ ৭ʑͱϋοΫ͢Δ͜ͱ͕Ͱ͖Δ

Slide 15

Slide 15 text

ྫɿΧ΢ϯλΦϒδΣΫτ