Slide 1

Slide 1 text

ॳΊͯͷRailsόʔδϣϯΞοϓ͕ ਏͯ͘ɺπϥͯ͘ɺͭΒ͔ͬͨ࿩ kawasaki.rb#053 @MasaruTech

Slide 2

Slide 2 text

ࣗݾ঺հ • MasaruTechʢtwitter౳ʣ • େఉ কʢ͓͓͹ɹ·͞Δʣ • ීஈ͸RailsΛ࢖͓ͬͯ࢓ࣄ͍ͯ͠ΔSIer

Slide 3

Slide 3 text

ॳΊͯ࢓ࣄͰ΍ͬͨRailsͷϝʔδϟʔ όʔδϣϯΞοϓ͕ਏ͔ͬͨΜͰɺ kawasaki.rbͰు࿐͍ͤͯͩ͘͞͞

Slide 4

Slide 4 text

໨࣍ • ਏ͔ͬͨᶃ • ਏ͔ͬͨᶄ • ਏ͔ͬͨᶅ • ൪֎ฤ

Slide 5

Slide 5 text

ਏ͔ͬͨᶃ

Slide 6

Slide 6 text

params͕ ActionController::Parameters ΦϒδΣΫτʹ

Slide 7

Slide 7 text

strong parameterରԠΛ ͪΌΜͱ΍͍ͬͯͳ͍Օॴ͕ɺɺɺ XxxApi.search(params[:filters])Έ͍ͨʹࡶʹ΍͍ͬͯ ͨͱ͜Ζ͕ɺɺɺ େମ͸ͪΌΜͱstrong parameterରԠ͍ͯ͠Δ&ςετ Ͱ෼͔͕ͬͨɺAPIαʔόʔͱͷ࿈ܞՕॴ͸ελϒԽ͞ ΕͯΔͷͰ࣮ࡍʹಈ͔ͯ͠ݟΔ·Ͱؾ͔ͮͳ͍

Slide 8

Slide 8 text

ਏ͔ͬͨᶄ

Slide 9

Slide 9 text

Rails4.2→5.0΁্͛ͨ௚ޙ େྔʹग़Δ Deprecation Warning RDEPRECATION WARNING: Using positional arguments in functional tests has been deprecated,ɹin favor of keyword arguments, and will be removed in Rails 5.1.

Slide 10

Slide 10 text

ςετίʔυͷॻ͖ํ͕มΘΔɻɻ get :show, { id: 1 }, nil, { notice: "This is a flash message" } ↓ keywordҾ਺Λར༻ͨ͠ελΠϧʹͳΔʂʂ get :show, params: { id: 1 }, flash: { notice: "This is a flash message" }, session: nil

Slide 11

Slide 11 text

͸ͼ͜Δࣗ༝ͳه๏ • get :index, {name: 'tom', age: 31} • get :index, name: 'tom', age: 31 • get ‘index’, {name: 'tom', age: 31} • get :index, test_params ͳͲͳͲ

Slide 12

Slide 12 text

֖Λ։͚ͯΈΕ͹ ࠓճͷRails5΁ͷόʔδϣϯΞοϓରԠͰɺ spec/controllersͷมߋ͸໿84%ʂʂ ͓ͦΒ͘ɺLint΍ίʔυϨϏϡʔ͕ͪΌΜͱͯ͠ ͍Δօ͞Μͷͱ͜ΖͰ͸ਏ͘ͳ͍Ͱ͠ΐ͏ʂ

Slide 13

Slide 13 text

ਏ͔ͬͨᶅ

Slide 14

Slide 14 text

x3

Slide 15

Slide 15 text

RailsΞϓϦ͕3ͭ ࠓؔΘ͍ͬͯΔ΋ͷ͸ɺRailsΞϓϦ3ͭͰߏ੒͞ Ε͍ͯΔͷͰɺ͜ͷਏ͔ͬͨ࡞ۀΛ3ճ΍Γ·͠ ͨ

Slide 16

Slide 16 text

൪֎ฤ

Slide 17

Slide 17 text

activerecord_session-storeͱ config/initializers/ new_framework_defaults.rb

Slide 18

Slide 18 text

activerecord_session-storeΛ࢖͍ͬͯΔͱ config/initializers/new_framework_defaults.rbͰ Rails.application.config.active_record.belongs_t o_required_by_default=false Λࢦఆͯ͠΋্ॻ͖͞Εͳ͍ɺɺɺ

Slide 19

Slide 19 text

ݪҼ http://y-yagi.tumblr.com/post/150899354290/rails ΑΓ Railsͷinitializers͸gemͷಡΈࠐΈޙʹ࣮ߦ͞Ε·͢ɻ ͦͷͨΊɺgem ͷதͰActiveRecordΛࢀর͍ͯ͠Δ(ActiveRecord::Baseʹରͯ͠module Λ௥Ճ͍ͯͨ͠Γ͢Δ)ɺ͔ͭɺద੾ͳܗͰActiveRecordΛࢀর͍ͯ͠ͳ ͍৔߹ɺActiveRecord::BaseͷॳظԽॲཧ͕ͦͷλΠϛϯάͰߦΘΕͯ ͠·͍ɺinitializersͰઃఆ͢Δલʹbelongs_to_required_by_defaultͷ஋ ͕ઃఆ͞Εͯ͠·͍·͢(belongs_to_required_by_defaultͷॳظ஋͸nil ͳͷͰɺ্هͷΑ͏ʹnil͕දࣔ͞ΕΔ)