diff --git a/CHANGELOG.md b/CHANGELOG.md index ec429be..00d9ea9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,14 @@ # Changelog +## 0.1.0.alpha.3 - 2026-08-27 + +- Remove Bundler cache metadata before compiling assets so cold and restored Rails builds stay identical. + ## 0.1.0.alpha.2 - 2026-08-27 - Stream clean, Docker-style build steps and command output through Dagger Ruby. - Run Bundler with the available CPUs unless `BUNDLE_JOBS` is explicitly configured. -- Keep Rails artifacts identical across cold and restored dependency caches. +- Keep dependency cache metadata out of Rails artifacts. ## 0.1.0.alpha.1 - 2026-08-27 diff --git a/lib/boringbuilder/ruby_build.rb b/lib/boringbuilder/ruby_build.rb index cab7ddc..3255896 100644 --- a/lib/boringbuilder/ruby_build.rb +++ b/lib/boringbuilder/ruby_build.rb @@ -63,6 +63,12 @@ def container name: "[build] RUN bundle check", workdir: application_path ) + builder = pipeline.exec( + builder, + %w[rm -rf .bundle/cache], + name: "[build] RUN rm -rf .bundle/cache", + workdir: application_path + ) builder = precompile(builder) builder = pipeline.step("[build] Write Bundler configuration", builder) { write_bundle_config(_1) } diff --git a/lib/boringbuilder/version.rb b/lib/boringbuilder/version.rb index e854b6a..81c8929 100644 --- a/lib/boringbuilder/version.rb +++ b/lib/boringbuilder/version.rb @@ -1,5 +1,5 @@ # frozen_string_literal: true module BoringBuilder - VERSION = "0.1.0.alpha.2" + VERSION = "0.1.0.alpha.3" end diff --git a/test/boringbuilder/rails_build_test.rb b/test/boringbuilder/rails_build_test.rb index 5d2824a..e7bb2ee 100644 --- a/test/boringbuilder/rails_build_test.rb +++ b/test/boringbuilder/rails_build_test.rb @@ -26,6 +26,19 @@ def test_builds_a_production_rails_container_with_oci_metadata assert_includes client.calls, [:with_user, ["rails"], {}] end + def test_removes_dependency_metadata_before_compiling_assets + root = build_project + project = BoringBuilder::Project.new(BoringBuilder::Configuration.new(root: root)).validate! + client = RecordingClient.new + + BoringBuilder::RailsBuild.new(project, client).container + + cleanup = client.calls.index([:with_exec, [%w[rm -rf .bundle/cache]], {}]) + assets = client.calls.index([:with_exec, [%w[bin/rails assets:precompile]], {}]) + + assert_operator cleanup, :<, assets + end + def test_keeps_build_packages_out_of_the_runtime_stage root = build_project project = BoringBuilder::Project.new(BoringBuilder::Configuration.new(root: root)).validate!