2017.7.19 | ©2017 Wantedly, Inc.Read the release note of Rails 5.2Rails 5.2ͷϦϦʔεϊʔτΛಡΜͰݟΔ2018/03/28@ngtk
View Slide
2017.7.19 | ©2017 Wantedly, Inc.2ઌिRails 5.2 RC2Ͱ·ͨ͠ΑͶิ͢Δݴ༿Read the release note of Rails 5.2
2017.7.19 | ©2017 Wantedly, Inc.3ಉ࣌ʹRelease NoteͰͨΑ͏ͳͷͰ ΈͯΈΑ͏ͱࢥ͍·ͨ͠Read the release note of Rails 5.2
2017.7.19 | ©2017 Wantedly, Inc.4- Major Features- Active Storage- Redis Cache Store- HTTP/2 Early Hints- Credentials- Content Security Policy - Changes on eachmodules- Action Pack- Action View- Action Mailer- Active Record- Active Model- Active Support- Active JobRelease note contents
2017.7.19 | ©2017 Wantedly, Inc.5- PaperclipCarrierwaveͳͲͷସ͑- Amazon S3, Google Cloud Storage, Microsoft AzureBlob StorageΛόοΫΤϯυͱͯ͠ରԠ- μΠϨΫτΞοϓϩʔυରԠ- ײ: ࠓ͔Βஔ͖͑ΔఔͷϝϦοτͳͦ͞͏ͱ͍͏ҹActive Storage
2017.7.19 | ©2017 Wantedly, Inc.6- ࠓ·ͰΩϟογϡػߏͱͯ͠ɺϝϞϦϩʔΧϧετϨʔδɺMemcachedΛඪ४Ͱఏڙ- redis-railsͱ͍͏gem͕͕͋ͬͨɺඪ४ͰରԠͨ͠- hiredis(cͷ࣮)ʹରԠ- ײ: ඞཁͳͷ͕ͪΌΜͱऔΓࠐ·Εͨײ͋ͬͯྑ͍Redis cache store
2017.7.19 | ©2017 Wantedly, Inc.7- H2 Pushɺ༧ΊඞཁͳαϒϦιʔεΛฦ͓ͯͨ͘͠ΊͷΈ- Reverse Proxy͕͋ͬͯOrigin͕H2Λͤͳ͍߹ɺH2 Push͑ͳ͍- Early HintsɺOrigin(H1.1)͕Reverse Proxy(H2)ʹαϒϦιʔεΛ͑ΔͨΊͷ༷HTTP/2 Early Hints
2017.7.19 | ©2017 Wantedly, Inc.8- RailsͰྫ͑`javascript_include_tag``stylesheet_link_tag`ʹؚ·ΕͨϦιʔεΛ͕Μ͕Μ103 Early HintsͰฦ͍ͯ͘͠- ࠓͷͱ͜ΖpumaͷΈରԠ- ײ: pumaΛ͍ͬͯΕҙ֎ͱγϡοͱԸܙΛड͚Εͦ͏ʁHTTP/2 Early Hints
2017.7.19 | ©2017 Wantedly, Inc.9- credentials.yml.encͰ҉߸Խ͞ΕͨΩʔΛཧ͢Δ- 5.1Ͱಋೖ͞ΕͨEncrypted secretsɺͳ͔ͬͨ͜ͱʹͳΓͦ͏- 伴RAILS_MASTER_KEYͰཧCredentials
2017.7.19 | ©2017 Wantedly, Inc.10- ENVͰΓସ͑Δͱ͔ߟ͑ΒΕ͍ͯͳ͍- ͭ·Γɺdevelopmentͱstagingͱ͔ͷ͜ͱߟྀ͞Ε͍ͯͳ͍Ά͍- ͨͩ͠ɺࣗͰͦΕΒͷػߏΛ࡞Ε͍͚Δ͔ʁ- https://github.com/rails/rails/pull/30067#issuecomment-372760099Credentials
2017.7.19 | ©2017 Wantedly, Inc.11- ײ- ͳΜͰ͜͏ͳͬͨײ͕͍͢͝- ͋·Γඪ४ͷΈʹཔΒͳ͍΄͏͕ྑͦ͞͏- ͜ͷลଞͷϓϩδΣΫτͰͲ͏͍ͬͯΔͷ͔͕ؾʹͳΔCredentials
2017.7.19 | ©2017 Wantedly, Inc.12- XSSύέοτ౪ௌͳͲͷ߈ܸΛ͙ͨΊͷηΩϡϦςΟϨΠϠʔ- ίϯςϯπ͕औಘՄೳͳυϝΠϯΛઃఆ͢Δ͜ͱͰҙਤ͠ͳ͍ίϯςϯπͷऔಘ࣮ߦΛ͙- secureheadersͱ͍͏Gem͕͕͋ͬͨɺඪ४ͰରԠContent Security Policy (CSP)
2017.7.19 | ©2017 Wantedly, Inc.13- InitializerͰઃఆΛॻ͖·͢- ίϯτϩʔϥʔ͝ͱʹઃఆΛఆٛ͢Δ͜ͱ͕Ͱ͖·͢Content Security Policy (CSP)
2017.7.19 | ©2017 Wantedly, Inc.14- ײ- ͪΌΜͱ׆༻͍ͨ͠- ಋೖɺϩΪϯάΛͯ͠ΛݟΔ͚ΔϑΣʔζ͕͋ΔͣͳͷͰɺͦͷΜͷϊϋӡ༻ʹ͍ͭͯڞ༗͍ͨ͠Content Security Policy (CSP)
2017.7.19 | ©2017 Wantedly, Inc.15- Bootsnap։ൃڥͰͷRailsىಈ࣌ؒΛૣ͘͢ΔGem- σϑΥϧτͰGemfileʹՃ͞ΕΔΑ͏ʹͳͬͨRailties / Bootsnap
2017.7.19 | ©2017 Wantedly, Inc.16- BootsnapҎԼͷํ๏Ͱૣ͍ͯ͘͠Δ- requireloadͷ݁ՌΛΩϟογϡ- RubyVM::InstructionSequeΛͬͯrubyͷίʔυΛόΠφϦσʔλԽͯ͠Ωϟογϡ- YAMLϑΝΠϧΛMessagePack(·ͨMarshal)ͷܗࣜͰΩϟογϡRailties / Bootsnap
2017.7.19 | ©2017 Wantedly, Inc.17- ײ- WantedlyͰࡢಋೖͯ͠70%ىಈ͕ૣ͘ͳͬͨͷͰ͓͢͢ΊRailties / Bootsnap
2017.7.19 | ©2017 Wantedly, Inc.18- database.ymlͰYamlͷܧঝΛΘͣʹΛڞ༗Ͱ͖ΔsharedηΫγϣϯΛՃ #28896- .ruby-versionGemfileͰͷόʔδϣϯࢦఆͳͲ͕σϑΥϧτͰߦΘΕΔΑ͏ʹͳͬͨɻ#30016Railties / Others
2017.7.19 | ©2017 Wantedly, Inc.19- database.ymlͰYamlͷܧঝΛΘͣʹΛڞ༗Ͱ͖ΔsharedηΫγϣϯΛՃ #28896- .ruby-versionGemfileͰͷόʔδϣϯࢦఆͳͲ͕σϑΥϧτͰߦΘΕΔΑ͏ʹͳͬͨɻ#30016Railties / Others
2017.7.19 | ©2017 Wantedly, Inc.20- ΩϟογϡΩʔʹόʔδϣϯΛؚΊΔͷͰͳ͘ɺΦϒδΣΫτΛ໊ࣔ͢લ͚ͩͱͯ͠ɺෆ༻ҙʹແବͳΩϟογϡΛੜ͢Δ͜ͱΛ͙Α͏ʹͳͬͨAction Pack / Recyclable cache keys
2017.7.19 | ©2017 Wantedly, Inc.21- ͨͱ͑ɺ`projects/1-20170202145500`ΛΩʔʹ͢ΔͷͰͳ͘ɺΩʔΛΦϒδΣΫτ໊ͷ`projects/1`ͱͯ͠όʔδϣϯ`20170202145500`Λσʔλதʹอ࣋͢Δ- HTTPͷΩϟογϡͰͷɺURLͱETAGͱಉ͡Α͏ͳΓํAction Pack / Recyclable cache keys
2017.7.19 | ©2017 Wantedly, Inc.22- ׂѪAction View
2017.7.19 | ©2017 Wantedly, Inc.23- ActiveJobͷҙΫϥε͕ࢦఆͰ͖ΔΑ͏ʹͳͬͨ #29457- ActionMailerͯ͢ActionMailer::DeliveryJobΛར༻͍ͯ͠Δ- ΤϥʔϋϯυϦϯάͳͲҙͷରԠ͍ͨ͠έʔεͰ׆༻Ͱ͖ͦ͏Action Mailer
2017.7.19 | ©2017 Wantedly, Inc.24- [MySQL] descending indexΛαϙʔτ- Fixtureͷೖ࣌ʹͰBluk insert͢ΔΑ͏ʹͳͬͨ- ΫΤϦ͕ൃߦ͞ΕͨίʔυΛϩάͰग़ྗͰ͖ΔΑ͏ʹͳͬͨActive Record3VCZHFN-PBE NT4&-&$5SVCZHFNT'30.SVCZHFNT8)&↳[email protected]
2017.7.19 | ©2017 Wantedly, Inc.25* ྫ֎`StatementTimeout`ͱ`LockWaitTimeout`ͱ`QueryCanceled`ͷՃ* `StatementTimeout`: λΠϜΞτɺMySQLͱPostgresʹରԠ* `LockWaitTimeout`: ϩοΫͷλΠϜΞτ* `QueryCanceled`: MySQLͷΈରԠɻPostgres`StatementTimeout`ʹ·ͱΊΒΕΔActive Record
2017.7.19 | ©2017 Wantedly, Inc.26* destroyͨ͠ޙͷsaveͰΛมߋͰ͖ͳ͍Α͏ʹͳͬͨ* [Postgres] ֎෦ςʔϒϧͷαϙʔτActive Record
2017.7.19 | ©2017 Wantedly, Inc.27• ׂѪActive Model
2017.7.19 | ©2017 Wantedly, Inc.28• ׂѪActive Support
2017.7.19 | ©2017 Wantedly, Inc.29• ׂѪActive Job
2017.7.19 | ©2017 Wantedly, Inc.30• Redis cache storeEarly hintsͳͲ͙͢ʹ׆༻Ͱ͖ͦ͏• CSPಋೖ͕࣌େมͦ͏͕ͩɺʮඪ४ͰରԠͰ͖Δରࡦʯ͕૿͑ͨͷͱͯྑ͍• Ωϟογϡͷόʔδϣχϯά׆༻Ͱ͖ͦ͏• BootsnapͰͷߴԽActiveRecordͰͷ৽ػೳৗͰ׆༻Ͱ͖ͦ͏ͳͷ͕ଟ͍·ͱΊ