From 312737bc7a816e740f90ed0ae154290aa46b5df3 Mon Sep 17 00:00:00 2001 From: Sam Ruby Date: Tue, 25 Feb 2025 08:51:53 -0500 Subject: [PATCH 1/4] expand check to match Rails generated Dockerfiles An example: ``` ARG RUBY_VERSION=3.4.2 FROM docker.io/library/ruby:$RUBY_VERSION-slim AS base ``` --- lib/generators/dockerfile_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/dockerfile_generator.rb b/lib/generators/dockerfile_generator.rb index b2a7782..3c679da 100644 --- a/lib/generators/dockerfile_generator.rb +++ b/lib/generators/dockerfile_generator.rb @@ -418,7 +418,7 @@ def generate_app # Older versions no longer release new images matching_ruby = [">= 3.4.2", "~> 3.3.7", "~> 3.2.7", "~> 3.1.7"].any? { |v| Gem::Requirement.new(v).satisfied_by?(Gem.ruby_version) } # Only slim and alpine are missing libyaml-dev/yaml-dev - matching_image = /FROM ruby:.+-(alpine|slim)/i.match?(dockerfile) + matching_image = /FROM .*ruby:.+-(alpine|slim)/i.match?(dockerfile) if !matching_ruby || !matching_image missing.delete("libyaml-dev") missing.delete("yaml-dev") From 57f4b2adb7679c1527d60c1b2388d467a9b4e82e Mon Sep 17 00:00:00 2001 From: Sam Ruby Date: Tue, 25 Feb 2025 09:30:17 -0500 Subject: [PATCH 2/4] Tighten up check: either "FROM ruby" or "FROM .../ruby" only --- lib/generators/dockerfile_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/dockerfile_generator.rb b/lib/generators/dockerfile_generator.rb index 3c679da..b5621f1 100644 --- a/lib/generators/dockerfile_generator.rb +++ b/lib/generators/dockerfile_generator.rb @@ -418,7 +418,7 @@ def generate_app # Older versions no longer release new images matching_ruby = [">= 3.4.2", "~> 3.3.7", "~> 3.2.7", "~> 3.1.7"].any? { |v| Gem::Requirement.new(v).satisfied_by?(Gem.ruby_version) } # Only slim and alpine are missing libyaml-dev/yaml-dev - matching_image = /FROM .*ruby:.+-(alpine|slim)/i.match?(dockerfile) + matching_image = /FROM (|.+/)ruby:.+-(alpine|slim)/i.match?(dockerfile) if !matching_ruby || !matching_image missing.delete("libyaml-dev") missing.delete("yaml-dev") From c41bbbd5d423729bc19bb2af67694f88ebf31288 Mon Sep 17 00:00:00 2001 From: Sam Ruby Date: Tue, 25 Feb 2025 09:45:53 -0500 Subject: [PATCH 3/4] fix escaping --- lib/generators/dockerfile_generator.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/generators/dockerfile_generator.rb b/lib/generators/dockerfile_generator.rb index b5621f1..9b898dd 100644 --- a/lib/generators/dockerfile_generator.rb +++ b/lib/generators/dockerfile_generator.rb @@ -418,7 +418,7 @@ def generate_app # Older versions no longer release new images matching_ruby = [">= 3.4.2", "~> 3.3.7", "~> 3.2.7", "~> 3.1.7"].any? { |v| Gem::Requirement.new(v).satisfied_by?(Gem.ruby_version) } # Only slim and alpine are missing libyaml-dev/yaml-dev - matching_image = /FROM (|.+/)ruby:.+-(alpine|slim)/i.match?(dockerfile) + matching_image = /FROM (|.+\/)ruby:.+-(alpine|slim)/i.match?(dockerfile) if !matching_ruby || !matching_image missing.delete("libyaml-dev") missing.delete("yaml-dev") From b6c3b3c5cbf485ca7e54941c8853ce2b9eb4015d Mon Sep 17 00:00:00 2001 From: Sam Ruby Date: Tue, 25 Feb 2025 10:33:43 -0500 Subject: [PATCH 4/4] accept alternate suggestion --- lib/generators/dockerfile_generator.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/generators/dockerfile_generator.rb b/lib/generators/dockerfile_generator.rb index 9b898dd..a70aadd 100644 --- a/lib/generators/dockerfile_generator.rb +++ b/lib/generators/dockerfile_generator.rb @@ -418,7 +418,8 @@ def generate_app # Older versions no longer release new images matching_ruby = [">= 3.4.2", "~> 3.3.7", "~> 3.2.7", "~> 3.1.7"].any? { |v| Gem::Requirement.new(v).satisfied_by?(Gem.ruby_version) } # Only slim and alpine are missing libyaml-dev/yaml-dev - matching_image = /FROM (|.+\/)ruby:.+-(alpine|slim)/i.match?(dockerfile) + # https://rubular.com/r/Jb4LEfrMSmxkp9 + matching_image = /FROM (.*\/)?ruby:(.+-)?(alpine|slim)/i.match?(dockerfile) if !matching_ruby || !matching_image missing.delete("libyaml-dev") missing.delete("yaml-dev")