Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Progressive Rails 8.1 (alpha) / progressive-rai...

tnir
November 14, 2024
30

Progressive Rails 8.1 (alpha) / progressive-rails-8-1

- A life with Rails 8.1 (alpha)

2024-11-xx STORES.jp talks about Rails

tnir

November 14, 2024
Tweet

Transcript

  1. #storesrb @tn961ir @tnir (Takuya N) • Ruby 25y • Rails

    18y • GitLab Core Team (2015-) • geminabox / nronn maintainer • Bundler / forem (dev.to) contributor • CTO at B2B SaaS sponsoring Kaigi on Rails 2023/2024 RubyKaigi 2023/2024 Rails Girls Japan 2023-2024 https://github.com/ruby/ruby
  2. #storesrb @tn961ir State: Rails 6.1 in 2023 • A Rails

    app started in 2016 (< 1M LOCs) ◦ (3 sub Rails apps beside) • 1k+ modules, 250+ models • 100+ public gem dependencies (direct & indirect) ◦ 10 unmaintained gems 😞 ◦ A few edgy gems 🎉 https://x.com/edawerd/status/1833261508924739915 Gusto: 4.18M LOCs
  3. A life with Rails 8.0 (beta) - Proposals on Rails

    https://speakerdeck.com/tnir/a-life-with-rails-8-dot-0-beta
  4. #storesrb @tn961ir activerecord dependency gemspec in dependent gems: Gem::Specification.new do

    |spec| spec.add_dependency 'activerecord', '>= 6', '< 8' end ↓ Gem::Specification.new do |spec| spec.add_dependency 'activerecord', '>= 6', '< 9' end
  5. #storesrb @tn961ir Releases based on Rails edge • ~ 85

    releases since we moved to edge (Sep 2023) • ~200 days passed since Rails World 2024
  6. #storesrb @tn961ir gem “rails”, …, branch: “main” # Bundle edge

    Rails instead: gem "rails", github: "rails/rails", branch: "main" ↓ # Gemfile gem "rails", github: "rails/rails", branch: "main" With Bundler: ~= git clone --depth 1 “https://github.com/rails/rails.git”
  7. #storesrb @tn961ir On (my) local • ~ 5-6 sec 🎉

    • (MacBook Air M2 24GB, N/W 2Gbps(max))
  8. #storesrb @tn961ir On (my) local • ~ 5-6 sec 🎉

    • (MacBook Air M2 24GB, N/W 2Gbps(max) Tokyo 23)
  9. #storesrb @tn961ir On CI (AWS CodeBuild) • ~ 34-35 sec

    • (general1.large, Linux) ◦ 8vCPU, 15GB, N/W ?? (ap-northeast-1)
  10. #storesrb @tn961ir CI: caching gems (production) • Cache strategy in

    CodeBuild ◦ No Amazon S3/Local caching • Cache in Docker Build ◦ multi-stage build && docker build --cache-from. ◦ Disadvantage for updating gems daily/weekly (=cache miss) • ❗0.5 min out of 10 min (CI duration)
  11. #storesrb @tn961ir Summary • Rails edge in production: the hard

    way ◦ … working as CxO • ⚠We are hiring Rails enthusiasts⚠