Slide 1

Slide 1 text

Rails8 scripts generatorͷ঺հ ͱͦΕʹ·ͭΘΔGemΛ࡞ͬͨ࿩ Omotesando.rb #104 @hatsu_38 2025/01/09

Slide 2

Slide 2 text

ࣗݾ঺հ • Twitter: @hatsu_38 • GitHub: @hatsu38 • SHE Inc. • Rubyྺ 5೥ = ΤϯδχΞྺ • React.js / TypeScript / GitHub Actions • Ruby͕Ұ൪޷͖

Slide 3

Slide 3 text

Rails8͔Β௥Ճ͞Εͨ scriptϑΥϧμ͸஌͍ͬͯ·͢ʁ

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

https://discuss.rubyonrails.org/t/is-there-any-of fi cial-way-to-organize-one-off-scripts/74186

Slide 6

Slide 6 text

OneTime(Ұ౓͖Γ)ͷscriptͷஔ͖৔ͷ՝୊ • ࠓ·ͰRailsެࣜͰఏڙ͍ͯ͠ΔOneTimeઐ༻ͷscriptͷஔ͖৔͸ͳ͔ͬͨ • OneTimeͷεΫϦϓτ΋lib/tasks/* ʹஔ͍ͯӡ༻͞Ε͍ͯΔέʔε΋ଟ͍ • migrateͷͨΊͳΒdata_migrate gem΍maintenance_tasks gemͷखஈ΋͋Δ • ͨͩlib/tasks/*ʹ͸Կ౓΋࣮ߦ͞ΕΔScriptͳͲ΋ઃஔ͞Ε͍ͯΔ

Slide 7

Slide 7 text

OneTime(Ұ౓͖Γ)ͷscriptͷஔ͖৔͸Ͳ͕͍͍͜ʁ • Ұ౓͔͠࢖Θͳ͍script͸ɺෳ਺ճ࣮ߦ͠ͳ͍͜ͱΛ໌ࣔ͢ΔͨΊʹผϑΥϧμʹ͓͍ ͓͖͍ͯͨ • DHHͷBasecampͰ͸ɺscript/migrate/* ͷΑ͏ͳϑΥϧμʹ؅ཧ͍ͯ͠Δ • ଞʹ΋script/benchmarks/* ΍ script/ops/* ͷΑ͏ͳ΋ͷΛ࡞ͬͯͨΓ͢Δ

Slide 8

Slide 8 text

https://github.com/rails/rails/pull/52335

Slide 9

Slide 9 text

bin/rails generate script my_script • script/my_script.rb ͕ੜ੒͞ΕΔ • cat script/my_script.rb • த਎͸͍͢͝γϯϓϧ

Slide 10

Slide 10 text

scriptϑΥϧμͷ࢖͍ํͷྫ • ruby script/my_script.rb "1" "[email protected]"

Slide 11

Slide 11 text

script folderͷഎܠ΍࢖͍ํ͸Ҏ্

Slide 12

Slide 12 text

αʔόʔʹೖ࣮ͬͯߦͱ͔͸ݏͩͳ͊💭

Slide 13

Slide 13 text

࣮ߦ݁Ռ͸ཤྺͰͱ͓͖͍ͬͯͨͳ💭

Slide 14

Slide 14 text

GemΛ࡞ͬͯΈͨ💡 https://github.com/hatsu38/scriptor

Slide 15

Slide 15 text

scriptϑΥϧμʹ͋ΔϑΝΠϧҰཡΛϒϥ΢βͰӾཡͰ͖Δ

Slide 16

Slide 16 text

scriptϑΥϧμʹ͋ΔϑΝΠϧΛϒϥ΢βͰӾཡͰ͖Δ

Slide 17

Slide 17 text

ϒϥ΢β͔Βscriptͷίʔυͷ࣮ߦ͕Ͱ͖Δ/࣮ߦཤྺ͕࢒Δ

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

scriptorͷಋೖ • bundle add scriptor • bin/rails generate scriptor:install • con fi g/routes.rbʹ `mount Scriptor::Engine => “/scriptor"` ͕௥Ճ͞ΕΔ • db/migrations/****_create_scriptor_executions.scriptor.rb ͕ੜ੒͞ΕΔ

Slide 20

Slide 20 text

Rails8 scriptϑΥϧμͷ঺հͱ Scriptor gemͷ঺հͰͨ͠💡