dockerfile-rails 1.6.25 → 1.7.1

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: 749745baff7e3b0f67b72f9f94c2df9086c344c9665e2d67498c02c33cfbcbab
4
- data.tar.gz: 1b62d4bcf87fd0872057ee0e796b8f529a3b29b811e13447e7ac7df60961ab80
3
+ metadata.gz: fcfaafd6fd11a3363f54dded17edd09285980dea47ee23020527cc0c4c924275
4
+ data.tar.gz: c1b2f8f02fb35ce0e1958fe1b72392cd060532609fd9f00c355dbce3a206b145
5
5
  SHA512:
6
- metadata.gz: a88d05eac975d08d6ad47766300a996740c56e7a273488c7ec4e3f59729841d3edf132d91740a82410b7e60aff8017fb5aeabd15095b7ea0673f3088d08dd49f
7
- data.tar.gz: b78e868ec797f8c2bdb01e0afc7214e60b7a134414a06b15cc2151e8fcee62e6a59cfcbdde6898af22bb38a3742f4af433187b0e3aaa323c6dd85f956df3f012
6
+ metadata.gz: 02ea8f1cd74713c24d45b7570833ee48f7795023f1e6b22335909414940c260e327eac06772fdb1d655b6053b0e841ec4bc117ee748c02fd4afe40340a0a13bb
7
+ data.tar.gz: f823e819cdf9dfa86ff97e7c5c7c3e9d6617ae0ecddc639e96ecf035b4112749490890f187bee33c8b94f0cb8d22551c6dd270c58b000fed947d7ebac431ad94
data/README.md CHANGED
@@ -67,6 +67,7 @@ are actually using. But should you be using DATABASE_URL, for example, at runti
67
67
  additional support may be needed:
68
68
 
69
69
  * `--litefs` - use [LiteFS](https://fly.io/docs/litefs/)
70
+ * `--litestream` - use [LiteFS](https://litestream.io/)
70
71
  * `--mysql` - add mysql libraries
71
72
  * `--postgresql` - add postgresql libraries
72
73
  * `--redis` - add redis libraries
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "erb"
4
4
  require "json"
5
+ require "shellwords"
5
6
  require_relative "../dockerfile-rails/scanner.rb"
6
7
 
7
8
  class DockerfileGenerator < Rails::Generators::Base
@@ -15,10 +16,11 @@ class DockerfileGenerator < Rails::Generators::Base
15
16
  "compose" => false,
16
17
  "fullstaq" => false,
17
18
  "gemfile-updates" => true,
18
- "jemalloc" => false,
19
+ "jemalloc" => true,
19
20
  "label" => {},
20
21
  "link" => false,
21
22
  "litefs" => false,
23
+ "litestream" => false,
22
24
  "lock" => true,
23
25
  "max-idle" => nil,
24
26
  "migrate" => "",
@@ -71,10 +73,12 @@ class DockerfileGenerator < Rails::Generators::Base
71
73
  "libtiff-dev" => "tiff-dev",
72
74
  "libjemalloc2" => "jemalloc",
73
75
  "libvips" => "vips-dev",
76
+ "libyaml-dev" => "yaml-dev",
74
77
  "node-gyp" => "gyp",
75
78
  "pkg-config" => "pkgconfig",
76
79
  "python" => "python3",
77
- "python-is-python3" => "python3"
80
+ "python-is-python3" => "python3",
81
+ "sqlite3" => "sqlite",
78
82
  }
79
83
 
80
84
  # load defaults from config file
@@ -162,6 +166,9 @@ class DockerfileGenerator < Rails::Generators::Base
162
166
  class_option :litefs, type: :boolean, default: OPTION_DEFAULTS.litefs,
163
167
  desc: "replicate sqlite3 databases using litefs"
164
168
 
169
+ class_option :litestream, type: :boolean, default: OPTION_DEFAULTS.litestream,
170
+ desc: "replicate sqlite3 databases using litesream"
171
+
165
172
  class_option :tigris, type: :boolean, default: OPTION_DEFAULTS.tigris,
166
173
  desc: "configure active storage to use tigris"
167
174
 
@@ -346,6 +353,10 @@ class DockerfileGenerator < Rails::Generators::Base
346
353
  fly_attach_consul
347
354
  end
348
355
 
356
+ if using_litestream?
357
+ template "litestream.rake.erb", "lib/tasks/litestream.rake"
358
+ end
359
+
349
360
  if File.exist?("fly.toml") && (fly_processes || !options.prepare || options.swap || deploy_database == "sqlite3")
350
361
  if File.stat("fly.toml").size > 0
351
362
  template "fly.toml.erb", "fly.toml"
@@ -488,6 +499,10 @@ private
488
499
  @gemfile.include?("litestack")
489
500
  end
490
501
 
502
+ def using_litestream?
503
+ options.litestream?
504
+ end
505
+
491
506
  def using_node?
492
507
  return @using_node if @using_node != nil
493
508
  return if using_bun?
@@ -594,6 +609,10 @@ private
594
609
  system "bundle add mysql2 --skip-install" unless has_mysql_gem?
595
610
  end
596
611
 
612
+ if options.litestream?
613
+ system "bundle add litestream --skip-install" unless @gemfile.include? "litestream"
614
+ end
615
+
597
616
  if options.redis? || using_redis?
598
617
  system "bundle add redis --skip-install" unless @gemfile.include? "redis"
599
618
  end
@@ -662,19 +681,30 @@ private
662
681
  end
663
682
 
664
683
  def base_packages
665
- packages = []
684
+ packages = %w(curl) # work with the default healthcheck strategy in Kamal
666
685
  packages += @@packages["base"] if @@packages["base"]
667
686
 
687
+ packages << "libjemalloc2" if options.jemalloc? && !options.fullstaq?
688
+
689
+ # start with databases: sqlite3, postgres, mysql
690
+ packages << "postgresql-client" if options.postgresql? || @postgresql
691
+ packages << "default-mysql-client" if options.mysql? || @mysql
692
+ packages << "freetds-bin" if options.sqlserver? || @sqlserver
693
+ if options.sqlite3? || @sqlite3
694
+ packages << "sqlite3" unless packages.include? "sqlite3"
695
+ end
696
+
697
+ # ActiveStorage preview support
698
+ packages << "libvips" if @gemfile.include? "ruby-vips"
699
+
668
700
  if using_execjs?
669
701
  if node_version == "lts"
670
702
  packages += %w(nodejs npm)
671
- else
672
- packages += %w(curl)
673
703
  end
674
704
  end
675
705
 
676
706
  if using_puppeteer?
677
- packages += %w(curl gnupg)
707
+ packages += %w(gnupg)
678
708
  end
679
709
 
680
710
  # charlock_holmes. Placed here as the library itself is
@@ -708,10 +738,10 @@ private
708
738
 
709
739
  def build_packages
710
740
  # start with the essentials
711
- packages = %w(build-essential)
741
+ packages = %w(build-essential libyaml-dev)
712
742
  packages += @@packages["build"] if @@packages["build"]
713
743
  packages += %w(nodejs npm) if (node_version == "lts") && (not using_execjs?)
714
- packages << "libyaml-dev" if options.fullstaq?
744
+ packages << "libffi-dev" if @@packages["ffi"]
715
745
 
716
746
  # add databases: sqlite3, postgres, mysql
717
747
  packages << "pkg-config" if options.sqlite3? || @sqlite3
@@ -725,9 +755,6 @@ private
725
755
  # add git if needed to install gems
726
756
  packages << "git" if @git
727
757
 
728
- # ActiveStorage preview support
729
- packages << "libvips" if @gemfile.include? "ruby-vips"
730
-
731
758
  # Rmagick gem
732
759
  packages += %w[pkg-config libmagickwand-dev] if @gemfile.include? "rmagick"
733
760
 
@@ -736,7 +763,7 @@ private
736
763
  packages += %w(node-gyp pkg-config)
737
764
 
738
765
  unless using_execjs? || using_puppeteer?
739
- packages << "curl"
766
+ # packages << "curl"
740
767
  end
741
768
 
742
769
  # module build process depends on Python, and debian changed
@@ -762,7 +789,7 @@ private
762
789
  end
763
790
 
764
791
  if using_bun?
765
- packages += %w(curl unzip)
792
+ packages += %w(unzip)
766
793
  end
767
794
 
768
795
  if options.alpine?
@@ -773,18 +800,9 @@ private
773
800
  end
774
801
 
775
802
  def deploy_packages
776
- packages = %w(curl) # work with the default healthcheck strategy in MRSK
803
+ packages = []
777
804
  packages += @@packages["deploy"] if @@packages["deploy"]
778
805
 
779
- # start with databases: sqlite3, postgres, mysql
780
- packages << "postgresql-client" if options.postgresql? || @postgresql
781
- packages << "default-mysql-client" if options.mysql? || @mysql
782
- packages << "freetds-bin" if options.sqlserver? || @sqlserver
783
- packages << "libjemalloc2" if options.jemalloc? && !options.fullstaq?
784
- if options.sqlite3? || @sqlite3
785
- packages << "libsqlite3-0" unless packages.include? "sqlite3"
786
- end
787
-
788
806
  # litefs
789
807
  packages += ["ca-certificates", "fuse3", "sudo"] if options.litefs?
790
808
 
@@ -865,7 +883,7 @@ private
865
883
  packages = []
866
884
 
867
885
  if using_passenger?
868
- packages += %w(gnupg curl)
886
+ packages += %w(curl gnupg)
869
887
  repos += [
870
888
  "curl https://oss-binaries.phusionpassenger.com/auto-software-signing-gpg-key.txt |",
871
889
  " gpg --dearmor > /etc/apt/trusted.gpg.d/phusion.gpg &&",
@@ -891,7 +909,7 @@ private
891
909
  packages = []
892
910
 
893
911
  if using_puppeteer? && deploy_packages.include?("google-chrome-stable")
894
- packages += %w(gnupg curl)
912
+ packages += %w(gnupg)
895
913
  repos += [
896
914
  "curl https://dl-ssl.google.com/linux/linux_signing_key.pub |",
897
915
  " gpg --dearmor > /etc/apt/trusted.gpg.d/google-archive.gpg &&",
@@ -979,8 +997,8 @@ private
979
997
  end
980
998
 
981
999
  if options.jemalloc? && !options.fullstaq?
982
- env["LD_PRELOAD"] = "libjemalloc.so.2"
983
- env["MALLOC_CONF"] = "dirty_decay_ms:1000,narenas:2,background_thread:true"
1000
+ # env["LD_PRELOAD"] = "libjemalloc.so.2"
1001
+ # env["MALLOC_CONF"] = "dirty_decay_ms:1000,narenas:2,background_thread:true"
984
1002
  end
985
1003
 
986
1004
  if using_puppeteer?
@@ -1133,6 +1151,30 @@ private
1133
1151
  end
1134
1152
  end
1135
1153
 
1154
+ def start_command
1155
+ if !options.procfile.blank?
1156
+ ["foreman", "start", "--procfile=#{options.procfile}"]
1157
+ elsif procfile.size > 1
1158
+ ["foreman", "start", "--procfile=Procfile.prod"]
1159
+ else
1160
+ command = Shellwords.split(procfile.values.first)
1161
+
1162
+ if command.first == "./bin/thrust"
1163
+ command[1..]
1164
+ else
1165
+ command
1166
+ end
1167
+ end
1168
+ end
1169
+
1170
+ def shellescape(string)
1171
+ if %r{\A[-\w._/= ]+\z}.match?(string)
1172
+ string.inspect
1173
+ else
1174
+ Shellwords.escape(string)
1175
+ end
1176
+ end
1177
+
1136
1178
  def node_version
1137
1179
  return unless using_node? || using_execjs?
1138
1180
 
@@ -1252,6 +1294,10 @@ private
1252
1294
  }
1253
1295
  end
1254
1296
 
1297
+ if using_litestream? && base[:rails]
1298
+ base[:rails] = "./bin/rake litestream:run " + base[:rails]
1299
+ end
1300
+
1255
1301
  if solidq_launcher == :procfile
1256
1302
  base["solidq"] = "bundle exec rake solid_queue:start"
1257
1303
  end
@@ -1263,6 +1309,10 @@ private
1263
1309
  options.thruster? || @gemfile.include?("thruster")
1264
1310
  end
1265
1311
 
1312
+ def using_kamal?
1313
+ @gemfile.include?("kamal")
1314
+ end
1315
+
1266
1316
  def fly_processes
1267
1317
  return unless File.exist? "fly.toml"
1268
1318
  return unless using_sidekiq? || using_solidq? || using_thruster?
@@ -1468,6 +1518,10 @@ private
1468
1518
  list[primary] = list[primary].sub(/^.*thrust /, "")
1469
1519
  end
1470
1520
 
1521
+ if using_litestream? && list["app"]
1522
+ list["app"] = "./bin/rake litestream:run #{list["app"]}"
1523
+ end
1524
+
1471
1525
  if toml.include? "[processes]"
1472
1526
  toml.sub!(/\[processes\].*?(\n\n|\n?\z)/m, "[processes]\n" +
1473
1527
  list.map { |name, cmd| " #{name} = #{cmd.inspect}" }.join("\n") + '\1')
@@ -1,6 +1,15 @@
1
- # syntax = docker/dockerfile:1
1
+ # syntax=docker/dockerfile:1
2
+ # check=error=true
3
+ <% if using_kamal? -%>
2
4
 
3
- # Make sure RUBY_VERSION matches the Ruby version in .ruby-version and Gemfile
5
+ # This Dockerfile is designed for production, not development. Use with Kamal or build'n'run by hand:
6
+ # docker build -t demo .
7
+ # docker run -d -p 80:80 -e RAILS_MASTER_KEY=<value from config/master.key> --name demo demo
8
+
9
+ # For a containerized dev environment, see Dev Containers: https://guides.rubyonrails.org/getting_started_with_devcontainer.html
10
+ <% end -%>
11
+
12
+ # Make sure RUBY_VERSION matches the Ruby version in .ruby-version
4
13
  ARG RUBY_VERSION=<%= RUBY_VERSION %>
5
14
  <% if api_client_dir -%>
6
15
  <%= render partial: 'node_client' %>
@@ -27,18 +36,18 @@ WORKDIR /rails
27
36
  ARG <%= base_args.map {|key, value| "#{key}=#{value.inspect}"}.join(" \\\n ") %>
28
37
 
29
38
  <% end -%>
30
- # Set production environment
31
- ENV <%= base_env.join(" \\\n ") %>
32
-
33
39
  # Update gems and bundler
34
40
  RUN gem update --system <% if RUBY_VERSION.start_with? '2' %>3.4.22 <% end %>--no-document && \
35
41
  gem install -N <%= base_gems.join(" ") %>
36
42
 
37
43
  <% unless base_packages.empty? -%>
38
- # Install packages<% unless base_requirements.empty? -%> needed to install <%= base_requirements %><% end %>
44
+ # Install base packages<% unless base_requirements.empty? -%> needed to install <%= base_requirements %><% end %>
39
45
  <%= render partial: 'apt_install', locals: {packages: base_packages, clean: true, repos: base_repos} %>
40
46
 
41
47
  <% end -%>
48
+ # Set production environment
49
+ ENV <%= base_env.join(" \\\n ") %>
50
+
42
51
  <% if using_execjs? and node_version != 'lts' -%>
43
52
  <%= render partial: 'install_node', locals: {yarn_version: nil} %>
44
53
 
@@ -54,7 +63,7 @@ FROM base AS <%= parallel? ? 'pre' : '' %>build
54
63
 
55
64
  <% end -%>
56
65
  # Install packages needed to build gems<%= using_node? ? " and node modules" : "" %>
57
- <%= render partial: 'apt_install', locals: {packages: build_packages, clean: false, repos: ''} %>
66
+ <%= render partial: 'apt_install', locals: {packages: build_packages, clean: true, repos: ''} %>
58
67
 
59
68
  <% if parallel? -%>
60
69
 
@@ -113,13 +122,12 @@ RUN --mount=type=cache,id=bld-gem-cache,sharing=locked,target=/srv/vendor \
113
122
  RUN --mount=type=secret,id=gemserver_credentials,target=/kaniko/gemserver_credentials \
114
123
  <%= private_gemserver_env_variable_name %>="$(cat /kaniko/gemserver_credentials)" && \
115
124
  export <%= private_gemserver_env_variable_name %> && \
116
- bundle install<% if depend_on_bootsnap? && options.precompile != "defer" -%> && \
117
- bundle exec bootsnap precompile --gemfile<% end %> && \
125
+ bundle install && \
118
126
  <% else -%>
119
- RUN <% if options["precompiled-gems"] != true %>bundle config set force_ruby_platform true && \<%= "\n " %><% end %>bundle install<% if depend_on_bootsnap? && options.precompile != "defer" -%> && \
120
- bundle exec bootsnap precompile --gemfile<% end %> && \
127
+ RUN <% if options["precompiled-gems"] != true %>bundle config set force_ruby_platform true && \<%= "\n " %><% end %>bundle install && \
121
128
  <% end -%>
122
- rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git
129
+ rm -rf ~/.bundle/ "${BUNDLE_PATH}"/ruby/*/cache "${BUNDLE_PATH}"/ruby/*/bundler/gems/*/.git<% if depend_on_bootsnap? && options.precompile != "defer" -%> && \
130
+ bundle exec bootsnap precompile --gemfile<% end %>
123
131
 
124
132
  <% end -%>
125
133
  <% if using_passenger? -%>
@@ -298,7 +306,11 @@ COPY <<-"EOF" /rails/Procfile.prod
298
306
  EOF
299
307
 
300
308
  <% end -%>
309
+ <% if using_thruster? -%>
310
+ # Start server via Thruster by default, this can be overwritten at runtime
311
+ <% else -%>
301
312
  # Start the server by default, this can be overwritten at runtime
313
+ <% end -%>
302
314
  EXPOSE <%= using_thruster? ? '80' : '3000' %>
303
315
  <% if deploy_database == 'sqlite3' -%>
304
316
  VOLUME /data
@@ -4,6 +4,14 @@
4
4
  #!/bin/bash -e
5
5
  <% end -%>
6
6
 
7
+ <% if options.jemalloc? -%>
8
+ # Enable jemalloc for reduced memory usage and latency.
9
+ if [ -z "${LD_PRELOAD+x}" ]; then
10
+ LD_PRELOAD=$(find /usr/lib -name libjemalloc.so.2 -print -quit)
11
+ export LD_PRELOAD
12
+ fi
13
+
14
+ <% end -%>
7
15
  <% if options.swap && !File.exist?("fly.toml")-%>
8
16
  <% if run_as_root? or using_passenger? -%>
9
17
  <% @space = "" -%>
@@ -36,17 +44,13 @@ fi
36
44
  <% end -%>
37
45
  <% if options.prepare -%>
38
46
  <% if !options.procfile.blank? -%>
39
- if [ "${*}" == "foreman start --procfile=<%= options.procfile %>" ]; then
47
+ # If running the specified procfile then create or migrate existing database
40
48
  <% elsif procfile.size > 1 -%>
41
49
  # If running the production procfile then create or migrate existing database
42
- if [ "${*}" == "foreman start --procfile=Procfile.prod" ]; then
43
- <% elsif procfile.values.first.start_with? "./bin/rails server" -%>
44
- # If running the rails server then create or migrate existing database
45
- if [ "${1}" == "./bin/rails" ] && [ "${2}" == "server" ]<% if using_litefs? %> && [ "$FLY_REGION" == "$PRIMARY_REGION" ]<%end%>; then
46
50
  <% else -%>
47
51
  # If running the rails server then create or migrate existing database
48
- if [ "${*}" == <%= procfile.values.first.inspect %> <% if using_litefs? %>-a "$FLY_REGION" == "$PRIMARY_REGION" <%end%>]; then
49
52
  <% end -%>
53
+ if <%= start_command.map.with_index {|word, index| "[ \"${@: #{index - start_command.length}:1}\" == #{shellescape(word)} ]"}.join(" && ") %><% if using_litefs? %> && [ "$FLY_REGION" == "$PRIMARY_REGION" ]<%end%>; then
50
54
  <% if options.precompile == "defer" -%>
51
55
  ./bin/rails assets:precompile
52
56
  <% end -%>
@@ -2,13 +2,13 @@
2
2
 
3
3
  # Ignore git directory.
4
4
  /.git/
5
+ /.gitignore
5
6
 
6
7
  # Ignore bundler config.
7
8
  /.bundle
8
9
 
9
- # Ignore all environment files (except templates).
10
+ # Ignore all environment files.
10
11
  /.env*
11
- !/.env*.erb
12
12
 
13
13
  # Ignore all default key files.
14
14
  /config/master.key
@@ -50,4 +50,18 @@ GEMSERVER_CREDENTIALS.secret.txt
50
50
  <% end -%>
51
51
  /public/assets
52
52
  <% end -%>
53
+
54
+ # Ignore CI service files.
55
+ /.github
56
+
57
+ # Ignore Kamal files.
58
+ /config/deploy*.yml
59
+ /.kamal
60
+
61
+ # Ignore development files
62
+ /.devcontainer
63
+
64
+ # Ignore Docker-related files
65
+ /.dockerignore
66
+ /Dockerfile*
53
67
  <%= more_docker_ignores -%>
@@ -0,0 +1,55 @@
1
+ LITESTREAM_CONFIG = ENV["LITESTREAM_CONFIG"] || Rails.root.join("tmp/litestream.yml").to_s
2
+
3
+ LITESTREAM_TEMPLATE = <<-EOF
4
+ # This is the configuration file for litestream.
5
+ #
6
+ # For more details, see: https://litestream.io/reference/config/
7
+ #
8
+ dbs:
9
+ <%% for db in @dbs -%>
10
+ - path: <%%= db %>
11
+ replicas:
12
+ - type: s3
13
+ endpoint: $AWS_ENDPOINT_URL_S3
14
+ bucket: $BUCKET_NAME
15
+ path: storage/<%%= File.basename(db) %>
16
+ access-key-id: $AWS_ACCESS_KEY_ID
17
+ secret-access-key: $AWS_SECRET_ACCESS_KEY
18
+ <%% end -%>
19
+ EOF
20
+
21
+ namespace :litestream do
22
+ task prepare: "db:load_config" do
23
+ require "erubi"
24
+
25
+ @dbs =
26
+ ActiveRecord::Base
27
+ .configurations
28
+ .configs_for(env_name: "production", include_hidden: true)
29
+ .select { |config| [ "sqlite3", "litedb" ].include? config.adapter }
30
+ .map(&:database)
31
+
32
+ result = eval(Erubi::Engine.new(LITESTREAM_TEMPLATE).src)
33
+
34
+ unless File.exist?(LITESTREAM_CONFIG) && File.read(LITESTREAM_CONFIG) == result
35
+ File.write(LITESTREAM_CONFIG, result)
36
+ end
37
+
38
+ @dbs.each do |db|
39
+ next if File.exist?(db) or !ENV["BUCKET_NAME"]
40
+ system "litestream restore -config #{LITESTREAM_CONFIG} -if-replica-exists #{db}"
41
+ exit $?.exitstatus unless $?.exitstatus == 0
42
+ end
43
+ end
44
+
45
+ task :run do
46
+ require "shellwords"
47
+
48
+ exec(*%w[bundle exec litestream replicate -config],
49
+ LITESTREAM_CONFIG, "-exec", Shellwords.join(ARGV[1..-1]))
50
+ end
51
+ end
52
+
53
+ namespace :db do
54
+ task prepare: "litestream:prepare"
55
+ end
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dockerfile-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.25
4
+ version: 1.7.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Ruby
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2024-12-12 00:00:00.000000000 Z
10
+ date: 2025-01-14 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: rails
@@ -24,7 +23,6 @@ dependencies:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
25
  version: 3.0.0
27
- description:
28
26
  email: rubys@intertwingly.net
29
27
  executables: []
30
28
  extensions: []
@@ -52,6 +50,7 @@ files:
52
50
  - lib/generators/templates/dockerignore.erb
53
51
  - lib/generators/templates/fly.toml.erb
54
52
  - lib/generators/templates/litefs.yml.erb
53
+ - lib/generators/templates/litestream.rake.erb
55
54
  - lib/generators/templates/node-version.erb
56
55
  - lib/generators/templates/rollbar.rb.erb
57
56
  - lib/generators/templates/sentry.rb.erb
@@ -60,7 +59,6 @@ licenses:
60
59
  - MIT
61
60
  metadata:
62
61
  homepage_uri: https://github.com/fly-apps/dockerfile-rails
63
- post_install_message:
64
62
  rdoc_options: []
65
63
  require_paths:
66
64
  - lib
@@ -75,8 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
75
73
  - !ruby/object:Gem::Version
76
74
  version: '0'
77
75
  requirements: []
78
- rubygems_version: 3.5.18
79
- signing_key:
76
+ rubygems_version: 3.6.2
80
77
  specification_version: 4
81
78
  summary: Dockerfile generator for Rails
82
79
  test_files: []