dockerfile-rails 1.6.16 → 1.6.18

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 58f8f53b0d27c7e345bd334b553fee30ae766900f396097e062a6436aeada430
4
- data.tar.gz: 71f820e93e2b14351a33a1ab0f612850446676d24060e8f44d53f7e4a38da3ba
3
+ metadata.gz: '06001664944f094c87433a52a0dcdb69fe820682478861d502923676e26f3c73'
4
+ data.tar.gz: 4189db8d30eefd52ddf399368f60ea63d940325f143c506304f257b87301b508
5
5
  SHA512:
6
- metadata.gz: 9d959ba0aaf0890a66a914054c624e7575536ea33e441aa672bfd445f683964bab05bbb7f87ee11aaab9b6a285cc955c71164fb48668b5a194670eec97dc8dd3
7
- data.tar.gz: 473551cdb95d6c409252ceda5cb721991b36b86c283960ca188c0b05bc7b0d417bec97b95ab5a3c2c285b0800fa1690417e294277e3aa535a95ba8b39f77dfeb
6
+ metadata.gz: 46e8f29cdfdfd8b16feb8392e65c57e4d5a6ea60e2b596273f1c2af43cb4cb88ac969b0a25a2702e35c6c29422e5e557046aa30a1f9c12df3b1b8663d747c159
7
+ data.tar.gz: 417cd9a7715a2769c9060f9f2438f6486a06362c662a9ea3dc254f2d842b5120e0fea78661eab18f2cc00529b2db5a0a18be5a44055d29e84f7cbca57ceeb009
data/Rakefile CHANGED
@@ -1,5 +1,8 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "rails"
4
+ Rails.env = "test"
5
+
3
6
  require "bundler/gem_tasks"
4
7
 
5
8
  # Run `rake release` to release a new version of the gem.
@@ -14,6 +14,12 @@ module DockerfileRails
14
14
  @git ||= ENV["RAILS_ENV"] != "test" && parser.specs.any? do |spec|
15
15
  spec.source.instance_of? Bundler::Source::Git
16
16
  end
17
+
18
+ # determine if the application is affected by the net-pop bug
19
+ # https://github.com/ruby/ruby/pull/11006#issuecomment-2176562332
20
+ if RUBY_VERSION == "3.3.3" && @gemfile.include?("net-pop")
21
+ @netpopbug = parser.specs.find { |spec| spec.name == "net-pop" }.dependencies.empty?
22
+ end
17
23
  end
18
24
 
19
25
  if File.exist? "Gemfile"
@@ -86,5 +92,11 @@ module DockerfileRails
86
92
  def using_trilogy?
87
93
  @gemfile.include?("trilogy") || @gemfile.include?("activerecord-trilogy-adapter")
88
94
  end
95
+
96
+ ### patches ###
97
+ if RUBY_VERSION == "3.3.3"
98
+ Bundler::LockfileParser.new(Bundler.read_file("Gemfile.lock"))
99
+
100
+ end
89
101
  end
90
102
  end
@@ -402,6 +402,15 @@ class DockerfileGenerator < Rails::Generators::Base
402
402
  STDERR.puts "\n" + shell.set_color(message, Thor::Shell::Color::RED, Thor::Shell::Color::BOLD)
403
403
  end
404
404
 
405
+ if @netpopbug && !dockerfile.include?("net-pop")
406
+ message = "Ruby 3.3.3 net-pop bug detected."
407
+ STDERR.puts "\n" + shell.set_color(message, Thor::Shell::Color::RED, Thor::Shell::Color::BOLD)
408
+ STDERR.puts "Please see https://github.com/ruby/ruby/pull/11006"
409
+ STDERR.puts "Change your Ruby version, or run `bin/rails generate dockerfile`,"
410
+ STDERR.puts "or add the following to your Dockerfile:"
411
+ STDERR.puts 'RUN sed -i "/net-pop (0.1.2)/a\ net-protocol" Gemfile.lock'
412
+ end
413
+
405
414
  if (options.sqlite3? || @sqlite3) && !dockerfile.include?("DATABASE_URL") && File.exist?("fly.toml")
406
415
  toml = IO.read("fly.toml")
407
416
  if !toml.include?("[[env]]")
@@ -508,12 +517,16 @@ private
508
517
  options.passenger? or options["max-idle"]
509
518
  end
510
519
 
520
+ def includes_jobs?
521
+ !(Dir["app/jobs/*.rb"] - ["app/jobs/application_job.rb"]).empty?
522
+ end
523
+
511
524
  def using_sidekiq?
512
- @gemfile.include?("sidekiq")
525
+ @gemfile.include?("sidekiq") and includes_jobs?
513
526
  end
514
527
 
515
528
  def using_solidq?
516
- @gemfile.include?("solid_queue")
529
+ @gemfile.include?("solid_queue") and includes_jobs?
517
530
  end
518
531
 
519
532
  def parallel?
@@ -1243,6 +1256,19 @@ private
1243
1256
  more
1244
1257
  end
1245
1258
 
1259
+ def compose_web_volumes
1260
+ volumes = %w[ log storage ]
1261
+
1262
+ if deploy_database == "sqlite3"
1263
+ database = YAML.load_file("config/database.yml", aliases: true).dig("production", "database")
1264
+ if database && database =~ /^\w/
1265
+ volumes << File.dirname(database)
1266
+ end
1267
+ end
1268
+
1269
+ volumes.uniq.sort
1270
+ end
1271
+
1246
1272
  def max_idle
1247
1273
  option = options["max-idle"]
1248
1274
 
@@ -1394,10 +1420,10 @@ private
1394
1420
  "kb" => 1000,
1395
1421
  "mib" => 1048576,
1396
1422
  "m" => 1048576,
1397
- "mb" => 100000,
1423
+ "mb" => 1000000,
1398
1424
  "gib" => 1073741824,
1399
1425
  "g" => 1073741824,
1400
- "gb" => 100000000,
1426
+ "gb" => 1000000000,
1401
1427
  }
1402
1428
 
1403
1429
  pattern = Regexp.new("^(\\d+)(#{suffixes.keys.join('|')})?$", "i")
@@ -8,9 +8,9 @@ ARG RUBY_VERSION=<%= RUBY_VERSION %>
8
8
 
9
9
  <% end -%>
10
10
  <% if options.fullstaq -%>
11
- FROM <%= platform %>quay.io/evl.ms/fullstaq-ruby:${RUBY_VERSION}-<%= options.jemalloc ? 'jemalloc-' : 'malloctrim-' %><%= variant %><% unless options.precompile == "defer" %> as base<% end %>
11
+ FROM <%= platform %>quay.io/evl.ms/fullstaq-ruby:${RUBY_VERSION}-<%= options.jemalloc ? 'jemalloc-' : 'malloctrim-' %><%= variant %><% unless options.precompile == "defer" %> AS base<% end %>
12
12
  <% else -%>
13
- FROM <%= platform %><%= options.registry %>ruby:$RUBY_VERSION-<%= variant %><% unless options.precompile == "defer" %> as base<% end %>
13
+ FROM <%= platform %><%= options.registry %>ruby:$RUBY_VERSION-<%= variant %><% unless options.precompile == "defer" %> AS base<% end %>
14
14
  <% end -%>
15
15
 
16
16
  <% unless options.label.empty? -%>
@@ -50,7 +50,7 @@ RUN gem update --system <% if RUBY_VERSION.start_with? '2' %>3.4.22 <% end %>--n
50
50
  <% unless options.precompile == "defer" -%>
51
51
 
52
52
  # Throw-away build stage<%= parallel? ? 's' : '' %> to reduce size of final image
53
- FROM base as <%= parallel? ? 'pre' : '' %>build
53
+ FROM base AS <%= parallel? ? 'pre' : '' %>build
54
54
 
55
55
  <% end -%>
56
56
  # Install packages needed to build gems<%= using_node? ? " and node modules" : "" %>
@@ -58,7 +58,7 @@ FROM base as <%= parallel? ? 'pre' : '' %>build
58
58
 
59
59
  <% if parallel? -%>
60
60
 
61
- FROM prebuild as <% if using_bun? %>bun<% else %>node<% end %>
61
+ FROM prebuild AS <% if using_bun? %>bun<% else %>node<% end %>
62
62
 
63
63
  <% end -%>
64
64
  <% if using_bun? and (!using_execjs? || File.exist?('bun.lockb')) -%>
@@ -72,7 +72,7 @@ FROM prebuild as <% if using_bun? %>bun<% else %>node<% end %>
72
72
  <%= render partial: 'npm_install', locals: {sources: Dir[*%w(package.json yarn.lock bun.lockb)]} %>
73
73
 
74
74
 
75
- FROM prebuild as build
75
+ FROM prebuild AS build
76
76
 
77
77
  <% end -%>
78
78
  <% unless build_args.empty? -%>
@@ -87,6 +87,9 @@ ENV <%= build_env.join(" \\\n ") %>
87
87
  <% end -%>
88
88
  # Install application gems
89
89
  COPY<% if options.link? %> --link<% end %> Gemfile Gemfile.lock <% if references_ruby_version_file? %>.ruby-version <% end %>./
90
+ <% if @netpopbug && Rails.env != "test" -%>
91
+ RUN sed -i "/net-pop (0.1.2)/a\ net-protocol" Gemfile.lock
92
+ <% end -%>
90
93
  <% if options.cache? -%>
91
94
  RUN --mount=type=cache,id=bld-gem-cache,sharing=locked,target=/srv/vendor \
92
95
  <% if private_gemserver_env_variable_name -%>
@@ -1,6 +1,6 @@
1
1
  ARG NODE_VERSION=<%= node_version %>
2
2
 
3
- FROM <%= platform %>node:$NODE_VERSION-slim as client
3
+ FROM <%= platform %>node:$NODE_VERSION-slim AS client
4
4
 
5
5
  WORKDIR /rails/<%= api_client_dir %>
6
6
 
@@ -1,4 +1,5 @@
1
1
  version: "3.8"
2
+
2
3
  services:
3
4
  web:
4
5
  <% if all_args.empty? -%>
@@ -18,11 +19,14 @@ services:
18
19
  secrets:
19
20
  - gemserver_credentials
20
21
  <% end -%>
22
+ <% end -%>
23
+ volumes:
24
+ <% compose_web_volumes.each do |path| -%>
25
+ - ./<%= path %>:/rails/<%= path %>
21
26
  <% end -%>
22
27
  ports:
23
28
  - "3000:3000"
24
29
  environment:
25
- - RAILS_MASTER_KEY=$RAILS_MASTER_KEY
26
30
  <% if using_redis? -%>
27
31
  - REDIS_URL=redis://redis-db:6379
28
32
  <% end -%>
@@ -35,10 +39,9 @@ services:
35
39
  - DATABASE_URL=mysql2://root:password@mysql-db/
36
40
  <% end -%>
37
41
  <% end -%>
38
- <% if deploy_database == 'sqlite3' -%>
39
- volumes:
40
- - ./db:/rails/db
41
- <% end -%>
42
+ secrets:
43
+ - source: master_key
44
+ target: /rails/config/master.key
42
45
  <% if using_redis? or deploy_database != 'sqlite3' -%>
43
46
  depends_on:
44
47
  <% if using_redis? -%>
@@ -60,9 +63,7 @@ services:
60
63
  POSTGRES_USER: root
61
64
  POSTGRES_PASSWORD: password
62
65
  volumes:
63
- - ./tmp/db:/var/lib/postgresql/data
64
- ports:
65
- - "5432:5432"
66
+ - ./tmp/postgres-db:/var/lib/postgresql/data
66
67
  healthcheck:
67
68
  test: pg_isready
68
69
  interval: 2s
@@ -77,7 +78,7 @@ services:
77
78
  environment:
78
79
  MYSQL_ROOT_PASSWORD: password
79
80
  volumes:
80
- - ./tmp/db:/var/lib/mysql
81
+ - ./tmp/mysql-db:/var/lib/mysql
81
82
  healthcheck:
82
83
  test: mysqladmin ping -h 127.0.0.1 -u root --password=password
83
84
  interval: 2s
@@ -132,3 +133,7 @@ secrets:
132
133
  gemserver_credentials:
133
134
  file: ./GEMSERVER_CREDENTIALS.secret.txt
134
135
  <% end -%>
136
+
137
+ secrets:
138
+ master_key:
139
+ file: ./config/master.key
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockerfile-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.16
4
+ version: 1.6.18
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-06-05 00:00:00.000000000 Z
11
+ date: 2024-09-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -37,7 +37,6 @@ files:
37
37
  - Rakefile
38
38
  - lib/dockerfile-rails.rb
39
39
  - lib/dockerfile-rails/scanner.rb
40
- - lib/fly_replay.rb
41
40
  - lib/generators/dockerfile_generator.rb
42
41
  - lib/generators/templates/Dockerfile.erb
43
42
  - lib/generators/templates/_apt_install.erb
@@ -75,7 +74,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
74
  - !ruby/object:Gem::Version
76
75
  version: '0'
77
76
  requirements: []
78
- rubygems_version: 3.5.9
77
+ rubygems_version: 3.5.18
79
78
  signing_key:
80
79
  specification_version: 4
81
80
  summary: Dockerfile generator for Rails
data/lib/fly_replay.rb DELETED
@@ -1,29 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- module Fly
4
- class FlyReplay
5
- def initialize(app)
6
- @app = app
7
- end
8
-
9
- def call(env)
10
- # replay /prometheus/* to the prom proxy in bubblegum
11
- if env["PATH_INFO"].starts_with?("/prometheus")
12
- return [307, { "Fly-Replay" => "app=flyio-bubblegum-api" }, []]
13
- end
14
-
15
- # replay /debug to the debug app. unsure if this is actually used
16
- if env["PATH_INFO"].starts_with?("/debug")
17
- return [307, { "Fly-Replay" => "app=debug" }, []]
18
- end
19
-
20
- @status, @headers, @response = @app.call(env)
21
-
22
- context = OpenTelemetry::Trace.current_span.context
23
- @headers["fly-trace-id"] = context.trace_id.unpack1("H*")
24
- @headers["fly-span-id"] = context.span_id.unpack1("H*")
25
-
26
- [@status, @headers, @response]
27
- end
28
- end
29
- end