dockerfile-rails 1.2.2 → 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a56568105d5613dd366d84227a550dcdbc3f1f71460330772aa32c128ce5b922
4
- data.tar.gz: 7b8539f3fb1ef2b26a29a9f33d7dccd825e433ddfdbc7034f6828118764f596f
3
+ metadata.gz: 98b182ee88ad6c1ba34edb41778c9d59dd329eefb6b199ede26697ded174aedb
4
+ data.tar.gz: 94e946801bc23ae53ce8ba8a4c7f8129a58e04aad1db4b9cf05bc5d43b22cebb
5
5
  SHA512:
6
- metadata.gz: ae18c0c80988fd501ffa053f31752f73e2d6c8d94784b701bda85e5c1e7a01c5d0d12c48f9b8f1f6cf3c2f5a4bb718d1f5648a686bc5e819e09021c03c8c5de4
7
- data.tar.gz: 3d4731ad7b9cc8b81c48fdb58a8324eee1c0b999a64cbe3fe27f2bde84afab6f7f7d83d09f5a40f6c829acfc8e235405e7126d6648e69282d4d68ec8e24436b3
6
+ metadata.gz: f20bb484ad3637c100cf2ff9a786404a686e961db71dbfdc1d48d0b33ea461c8031bb2ddacc05ebd3857aaa5d318fe2d49c2ecc21cd760b1fa08fac9e963a28f
7
+ data.tar.gz: 80f23221cf71777312e57165a23b93a165feae6db3af97ac8c836e71295493ff952ca34f36e2a190f392508fb0e8a92b56a42c090262076063d75b386b96be56
data/README.md CHANGED
@@ -36,11 +36,12 @@ bin/rails generate dockerfile
36
36
  * `--cache` - use build caching to speed up builds
37
37
  * `--parallel` - use multi-stage builds to install gems and node modules in parallel
38
38
 
39
- ### Add a Feature:
39
+ ### Add/remove a Feature:
40
40
 
41
41
  * `--ci` - include test gems in deployed image
42
42
  * `--compose` - generate a `docker-compose.yml` file
43
43
  * `--nginx` - serve static files via [nginx](https://www.nginx.com/). May require `--root` on some targets to access `/dev/stdout`
44
+ * `--no-lock` - don't add linux platforms, set `BUNDLE_DEPLOY`, or `--frozen-lockfile`. May be needed at times to work around a [rubygems bug](https://github.com/rubygems/rubygems/issues/6082#issuecomment-1329756343).
44
45
 
45
46
  ### Add a Database:
46
47
 
@@ -14,6 +14,7 @@ class DockerfileGenerator < Rails::Generators::Base
14
14
  "fullstaq" => false,
15
15
  "jemalloc" => false,
16
16
  "label" => {},
17
+ "lock" => true,
17
18
  "mysql" => false,
18
19
  "nginx" => false,
19
20
  "parallel" => false,
@@ -67,6 +68,9 @@ class DockerfileGenerator < Rails::Generators::Base
67
68
  class_option :ci, type: :boolean, default: OPTION_DEFAULTS.ci,
68
69
  desc: "include test gems in bundle"
69
70
 
71
+ class_option :lock, type: :boolean, default: OPTION_DEFAULTS.lock,
72
+ desc: "lock Gemfile/package.json"
73
+
70
74
  class_option :precompile, type: :string, default: OPTION_DEFAULTS.precompile,
71
75
  desc: 'if set to "defer", assets:precompile will be done at deploy time'
72
76
 
@@ -252,7 +256,7 @@ private
252
256
 
253
257
  def platform
254
258
  if options.platform
255
- "--platform #{options.platform} "
259
+ "--platform=#{options.platform} "
256
260
  else
257
261
  ""
258
262
  end
@@ -295,32 +299,47 @@ private
295
299
  def install_gems
296
300
  ENV["BUNDLE_IGNORE_MESSAGES"] = "1"
297
301
 
302
+ gemfile = IO.read("Gemfile")
303
+
298
304
  if options.postgresql? || @postgresql
299
- system "bundle add pg" unless @gemfile.include? "pg"
305
+ system "bundle add pg --skip-install" unless @gemfile.include? "pg"
300
306
  end
301
307
 
302
308
  if options.mysql? || @mysql
303
- system "bundle add mysql2" unless @gemfile.include? "mysql2"
309
+ system "bundle add mysql2 --skip-install" unless @gemfile.include? "mysql2"
304
310
  end
305
311
 
306
312
  if options.redis? || using_redis?
307
- system "bundle add redis" unless @gemfile.include? "redis"
313
+ system "bundle add redis --skip-install" unless @gemfile.include? "redis"
308
314
  end
309
315
 
310
- # ensure linux platform is in the bundle lock
311
- current_platforms = `bundle platform`
312
- add_platforms = []
313
-
314
- if !current_platforms.include?("x86_64-linux")
315
- add_platforms += ["--add-platform=x86_64-linux"]
316
+ # https://stackoverflow.com/questions/70500220/rails-7-ruby-3-1-loaderror-cannot-load-such-file-net-smtp/70500221#70500221
317
+ if @gemfile.include? "mail"
318
+ %w(net-smtp net-imap net-pop).each do |gem|
319
+ system "bundle add #{gem} --skip-install --require false" unless @gemfile.include? gem
320
+ end
316
321
  end
317
322
 
318
- if !current_platforms.include?("aarch64-linux") && RUBY_PLATFORM.start_with?("arm64")
319
- add_platforms += ["--add-platform=aarch64-linux"]
323
+ unless gemfile == IO.read("Gemfile")
324
+ system "bundle install --quiet"
320
325
  end
321
326
 
322
- unless add_platforms.empty?
323
- system "bundle lock #{add_platforms.join(" ")}"
327
+ if options.lock?
328
+ # ensure linux platform is in the bundle lock
329
+ current_platforms = `bundle platform`
330
+ add_platforms = []
331
+
332
+ if !current_platforms.include?("x86_64-linux")
333
+ add_platforms += ["--add-platform=x86_64-linux"]
334
+ end
335
+
336
+ if !current_platforms.include?("aarch64-linux") && RUBY_PLATFORM.start_with?("arm64")
337
+ add_platforms += ["--add-platform=aarch64-linux"]
338
+ end
339
+
340
+ unless add_platforms.empty?
341
+ system "bundle lock #{add_platforms.join(" ")}"
342
+ end
324
343
  end
325
344
  end
326
345
 
@@ -370,9 +389,6 @@ private
370
389
  # add git if needed to install gems
371
390
  packages << "git" if @git
372
391
 
373
- # add redis if Action Cable, caching, or sidekiq are used
374
- packages << "redis" if options.redis? || using_redis?
375
-
376
392
  # ActiveStorage preview support
377
393
  packages << "libvips" if @gemfile.include? "ruby-vips"
378
394
 
@@ -418,9 +434,6 @@ private
418
434
  packages << "postgresql-client" if options.postgresql? || @postgresql
419
435
  packages << "default-mysql-client" if options.mysql || @mysql
420
436
 
421
- # add redis in case Action Cable, caching, or sidekiq are added later
422
- packages << "redis" if using_redis?
423
-
424
437
  # ActiveStorage preview support
425
438
  packages << "libvips" if @gemfile.include? "ruby-vips"
426
439
 
@@ -465,10 +478,13 @@ private
465
478
  def base_env
466
479
  env = {
467
480
  "RAILS_ENV" => "production",
468
- "BUNDLE_DEPLOYMENT" => "1",
469
481
  "BUNDLE_WITHOUT" => options.ci? ? "development" : "development:test"
470
482
  }
471
483
 
484
+ if options.lock?
485
+ env["BUNDLE_DEPLOYMENT"] = "1"
486
+ end
487
+
472
488
  if @@args["base"]
473
489
  env.merge! @@args["base"].to_h { |key, value| [key, "$#{key}"] }
474
490
  end
@@ -8,7 +8,7 @@ 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-' : '' %>slim<% unless options.precompile == "defer" %> as base<% end %>
11
+ FROM <%= platform %>quay.io/evl.ms/fullstaq-ruby:${RUBY_VERSION}-<%= options.jemalloc ? 'jemalloc-' : '' %>slim<% unless options.precompile == "defer" %> as base<% end %>
12
12
  <% else -%>
13
13
  FROM <%= platform %>ruby:$RUBY_VERSION-slim<% unless options.precompile == "defer" %> as base<% end %>
14
14
  <% end -%>
@@ -32,7 +32,7 @@ ENV <%= base_env.join(" \\\n ") %>
32
32
 
33
33
  # Update gems and bundler
34
34
  RUN gem update --system --no-document && \
35
- <% if options.ci? -%>
35
+ <% if options.ci? and options.lock? -%>
36
36
  gem install -N irb reline && \
37
37
  <% end -%>
38
38
  gem install -N bundler
@@ -2,7 +2,7 @@
2
2
  COPY <%=sources.join(' ') %> .
3
3
  <% if sources.join.include? 'yarn' -%>
4
4
  RUN <% if options.cache? -%>--mount=type=cache,id=bld-yarn-cache,target=/root/.yarn \
5
- YARN_CACHE_FOLDER=/root/.yarn <% end -%>yarn install --frozen-lockfile
5
+ YARN_CACHE_FOLDER=/root/.yarn <% end -%>yarn install<% if options.lock? %> --frozen-lockfile<% end %>
6
6
  <% else -%>
7
7
  <% if options.cache? -%>
8
8
  RUN --mount=type=cache,id=bld-npm-cache,target=/root/.npm \
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.2.2
4
+ version: 1.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2023-02-26 00:00:00.000000000 Z
11
+ date: 2023-02-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails