backy_rb 0.1.3 → 0.1.5

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.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/.backyrc.example +17 -0
  3. data/CHANGELOG.md +3 -0
  4. data/Gemfile +4 -0
  5. data/Gemfile.lock +134 -1
  6. data/README.md +69 -11
  7. data/{backy.gemspec → backy_rb.gemspec} +5 -2
  8. data/bin/backy +4 -0
  9. data/dummy/psql/Gemfile +0 -34
  10. data/lib/backy/cli.rb +88 -0
  11. data/lib/backy/configuration.rb +65 -2
  12. data/lib/backy/db.rb +1 -0
  13. data/lib/backy/list.rb +1 -1
  14. data/lib/backy/logger.rb +27 -0
  15. data/lib/backy/pg_dump.rb +60 -6
  16. data/lib/backy/pg_restore.rb +73 -7
  17. data/lib/backy/version.rb +1 -1
  18. data/lib/{backy.rb → backy_rb.rb} +15 -0
  19. metadata +53 -61
  20. data/dummy/psql/.gitattributes +0 -7
  21. data/dummy/psql/.gitignore +0 -22
  22. data/dummy/psql/.ruby-version +0 -1
  23. data/dummy/psql/Gemfile.lock +0 -207
  24. data/dummy/psql/README.md +0 -24
  25. data/dummy/psql/Rakefile +0 -6
  26. data/dummy/psql/app/assets/config/manifest.js +0 -2
  27. data/dummy/psql/app/assets/images/.keep +0 -0
  28. data/dummy/psql/app/assets/stylesheets/application.css +0 -15
  29. data/dummy/psql/app/controllers/application_controller.rb +0 -2
  30. data/dummy/psql/app/controllers/concerns/.keep +0 -0
  31. data/dummy/psql/app/controllers/posts_controller.rb +0 -59
  32. data/dummy/psql/app/helpers/application_helper.rb +0 -2
  33. data/dummy/psql/app/helpers/posts_helper.rb +0 -2
  34. data/dummy/psql/app/models/application_record.rb +0 -3
  35. data/dummy/psql/app/models/concerns/.keep +0 -0
  36. data/dummy/psql/app/models/post.rb +0 -2
  37. data/dummy/psql/app/views/layouts/application.html.erb +0 -15
  38. data/dummy/psql/app/views/posts/_form.html.erb +0 -27
  39. data/dummy/psql/app/views/posts/_post.html.erb +0 -12
  40. data/dummy/psql/app/views/posts/edit.html.erb +0 -10
  41. data/dummy/psql/app/views/posts/index.html.erb +0 -14
  42. data/dummy/psql/app/views/posts/new.html.erb +0 -9
  43. data/dummy/psql/app/views/posts/show.html.erb +0 -10
  44. data/dummy/psql/bin/bundle +0 -109
  45. data/dummy/psql/bin/rails +0 -4
  46. data/dummy/psql/bin/rake +0 -4
  47. data/dummy/psql/bin/setup +0 -33
  48. data/dummy/psql/config/application.rb +0 -43
  49. data/dummy/psql/config/boot.rb +0 -3
  50. data/dummy/psql/config/credentials.yml.enc +0 -1
  51. data/dummy/psql/config/database.yml +0 -87
  52. data/dummy/psql/config/environment.rb +0 -5
  53. data/dummy/psql/config/environments/development.rb +0 -62
  54. data/dummy/psql/config/environments/production.rb +0 -75
  55. data/dummy/psql/config/environments/test.rb +0 -50
  56. data/dummy/psql/config/locales/en.yml +0 -33
  57. data/dummy/psql/config/master.key +0 -1
  58. data/dummy/psql/config/puma.rb +0 -43
  59. data/dummy/psql/config/routes.rb +0 -7
  60. data/dummy/psql/config.ru +0 -6
  61. data/dummy/psql/db/migrate/20230330203226_create_posts.rb +0 -10
  62. data/dummy/psql/db/schema.rb +0 -23
  63. data/dummy/psql/db/seeds.rb +0 -8
  64. data/dummy/psql/log/.keep +0 -0
  65. data/dummy/psql/public/404.html +0 -67
  66. data/dummy/psql/public/422.html +0 -67
  67. data/dummy/psql/public/500.html +0 -66
  68. data/dummy/psql/public/apple-touch-icon-precomposed.png +0 -0
  69. data/dummy/psql/public/apple-touch-icon.png +0 -0
  70. data/dummy/psql/public/favicon.ico +0 -0
  71. data/dummy/psql/public/robots.txt +0 -1
  72. data/dummy/psql/tmp/.keep +0 -0
  73. data/dummy/psql/tmp/pids/.keep +0 -0
data/lib/backy/pg_dump.rb CHANGED
@@ -1,32 +1,86 @@
1
+ require "fileutils"
2
+ require "etc"
3
+
1
4
  module Backy
2
5
  class PgDump
3
6
  include Db
4
7
  include AppConfig
5
8
 
6
9
  DUMP_DIR = "db/dump"
7
- DUMP_CMD_OPTS = "--no-acl --no-owner --no-subscriptions --no-publications --exclude-table=awsdms_ddl_audit"
10
+ DUMP_CMD_OPTS = "--no-acl --no-owner --no-subscriptions --no-publications"
8
11
 
9
12
  def call
10
13
  FileUtils.mkdir_p(DUMP_DIR)
14
+ Logger.log("Starting backy for #{database}")
15
+
16
+ if use_parallel?
17
+ Logger.log("Using multicore dump with pigz")
18
+ parallel_backup
19
+ else
20
+ Logger.log("Using single core dump")
21
+ plain_text_backup
22
+ end
23
+ end
24
+
25
+ private
11
26
 
12
- dump_file = "#{DUMP_DIR}/#{database}_#{whoami}@#{hostname}_#{Time.zone.now.strftime("%Y%m%d_%H%M%S")}.sql.gz"
27
+ def plain_text_backup
28
+ timestamp = Time.now.strftime("%Y%m%d_%H%M%S")
29
+ dump_file = "#{DUMP_DIR}/#{database}_#{whoami}@#{hostname}_single_#{timestamp}.sql.gz"
13
30
 
14
31
  cmd = "(#{pg_password_env}pg_dump #{pg_credentials} #{database} #{DUMP_CMD_OPTS} | gzip -9 > #{dump_file}) 2>&1 >> #{log_file}"
15
32
 
16
33
  print "Saving to #{dump_file} ... "
17
34
 
18
35
  if system(cmd)
19
- puts "done"
36
+ Logger.success("done")
20
37
  else
21
- puts "error. See #{log_file}"
22
-
38
+ Logger.error("error. See #{log_file}")
23
39
  return
24
40
  end
25
41
 
26
42
  dump_file
27
43
  end
28
44
 
29
- private
45
+ def parallel_backup
46
+ timestamp = Time.now.strftime("%Y%m%d_%H%M%S")
47
+ dump_dir = "#{DUMP_DIR}/#{database}_dump_parallel_#{timestamp}"
48
+ dump_file = "#{dump_dir}.tar.gz"
49
+
50
+ pg_dump_cmd = "pg_dump -Z0 -j #{Etc.nprocessors} -Fd #{database} -f #{dump_dir} #{pg_credentials} #{DUMP_CMD_OPTS}"
51
+ tar_cmd = "tar -cf - #{dump_dir} | pigz -p #{Etc.nprocessors} > #{dump_file}"
52
+ cleanup_cmd = "rm -rf #{dump_dir}"
53
+
54
+ Logger.log("Running pg_dump #{database}")
55
+ if system("#{pg_password_env}#{pg_dump_cmd} 2>&1 >> #{log_file}")
56
+ Logger.log("pg_dump completed successfully.")
57
+ else
58
+ Logger.error("pg_dump failed. See #{log_file} for details.")
59
+ return
60
+ end
61
+
62
+ # Execute tar command
63
+ Logger.log("Compressing #{dump_dir}")
64
+ if system(tar_cmd)
65
+ Logger.log("Compression completed successfully.")
66
+ else
67
+ Logger.error("Compression failed. See #{log_file} for details.")
68
+ return
69
+ end
70
+
71
+ # Execute cleanup command
72
+ Logger.log("Cleaning up #{dump_dir}")
73
+ if system(cleanup_cmd)
74
+ Logger.log("Cleanup completed successfully.")
75
+ else
76
+ Logger.error("Cleanup failed. See #{log_file} for details.")
77
+ return
78
+ end
79
+
80
+ Logger.success("Backup process completed. Output file: #{dump_file}")
81
+
82
+ dump_file # Return the name of the dump file
83
+ end
30
84
 
31
85
  def hostname
32
86
  @hostname ||= `hostname`.strip
@@ -3,25 +3,91 @@ module Backy
3
3
  include Db
4
4
  include AppConfig
5
5
 
6
+ DUMP_DIR = "db/dump"
7
+
6
8
  def initialize(file_name:)
7
9
  @file_name = file_name
8
10
  end
9
11
 
10
12
  def call
11
- terminate_connection_sql = "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '#{database}' AND pid <> pg_backend_pid();"
12
- cmd = "(#{pg_password_env}psql -c \"#{terminate_connection_sql};\" #{pg_credentials} #{database}; #{pg_password_env}dropdb #{pg_credentials} #{database}; #{pg_password_env}createdb #{pg_credentials} #{database}; gunzip -c #{file_name} | #{pg_password_env}psql #{pg_credentials} -q -d #{database}) 2>&1 >> #{log_file}"
13
+ pigz_installed = system('which pigz > /dev/null 2>&1')
14
+ multicore = Etc.nprocessors > 1
15
+ use_multicore = ENV["BACKY_USE_PARALLEL"] == "true"
13
16
 
14
- print "Restoring #{database} from #{file_name} ... "
15
-
16
- if system(cmd)
17
- puts "done"
17
+ if pigz_installed && multicore && use_multicore
18
+ Logger.log('Using parallel restore with pigz')
19
+ parallel_restore
18
20
  else
19
- puts "error. See #{log_file}"
21
+ Logger.log("Pigz not installed or system is not multicore")
22
+ Logger.log('Using plain text restore')
23
+ plain_text_restore
20
24
  end
21
25
  end
22
26
 
23
27
  private
24
28
 
25
29
  attr_reader :file_name
30
+
31
+ def plain_text_restore
32
+ cmd = "(#{pg_password_env}psql -c \"#{terminate_connection_sql};\" #{pg_credentials} #{database}; #{pg_password_env}dropdb #{pg_credentials} #{database}; #{pg_password_env}createdb #{pg_credentials} #{database}; gunzip -c #{file_name} | #{pg_password_env}psql #{pg_credentials} -q -d #{database}) 2>&1 >> #{log_file}"
33
+
34
+ Logger.log("Restoring #{database} from #{file_name} ...")
35
+ if system(cmd)
36
+ Logger.log("Database restoration completed successfully.")
37
+ else
38
+ Logger.log("Database restoration failed. See #{log_file} for details.")
39
+ end
40
+ end
41
+
42
+ def parallel_restore
43
+ timestamp = Time.now.strftime("%Y%m%d_%H%M%S")
44
+ dump_dir = "#{DUMP_DIR}/#{database}_dump_#{timestamp}"
45
+ FileUtils.mkdir_p(dump_dir)
46
+
47
+ decompress_cmd = "pigz -p #{Etc.nprocessors} -dc #{file_name} | tar -C #{dump_dir} --strip-components 3 -xf -"
48
+ restore_cmd = "pg_restore -j #{Etc.nprocessors} -Fd -O -d #{database} #{dump_dir}"
49
+
50
+ # Terminate connections and drop/create database
51
+ terminate_and_recreate_db = "(#{pg_password_env}psql -c \"#{terminate_connection_sql};\" #{pg_credentials} #{database}; #{pg_password_env}dropdb #{pg_credentials} #{database}; #{pg_password_env}createdb #{pg_credentials} #{database}) 2>&1 >> #{log_file}"
52
+
53
+ Logger.log("Terminating connections to #{database}")
54
+ if system(terminate_and_recreate_db)
55
+ Logger.log("Database connections terminated and database recreated.")
56
+ else
57
+ Logger.log("Error during database termination and recreation. See #{log_file}")
58
+ return
59
+ end
60
+
61
+ # Decompress and restore
62
+ Logger.log("Decompressing #{file_name} into #{dump_dir} ...")
63
+ if system(decompress_cmd)
64
+ Logger.log("Decompression completed successfully.")
65
+
66
+ # Check the expected file
67
+ unless File.exist?("#{dump_dir}/toc.dat")
68
+ Logger.log("toc.dat not found in #{dump_dir}.")
69
+ return
70
+ end
71
+ else
72
+ Logger.log("Decompression failed. See #{log_file} for details.")
73
+ return
74
+ end
75
+
76
+ Logger.log("Restoring database from #{dump_dir} ...")
77
+ if system(restore_cmd)
78
+ Logger.log("Database restoration completed successfully.")
79
+ else
80
+ Logger.log("Database restoration failed. See #{log_file} for details.")
81
+ return
82
+ end
83
+
84
+ Logger.log("Cleanup: Removing #{dump_dir} ...")
85
+ FileUtils.rm_rf(dump_dir)
86
+ Logger.log("Cleanup completed.")
87
+ end
88
+
89
+ def terminate_connection_sql
90
+ "SELECT pg_terminate_backend(pg_stat_activity.pid) FROM pg_stat_activity WHERE pg_stat_activity.datname = '#{database}' AND pid <> pg_backend_pid();"
91
+ end
26
92
  end
27
93
  end
data/lib/backy/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Backy
2
- VERSION = "0.1.3"
2
+ VERSION = "0.1.5"
3
3
  end
@@ -1,12 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "active_support"
3
4
  require "active_support/core_ext/integer/time"
4
5
  require "active_support/core_ext/object/blank"
5
6
 
7
+ require_relative "backy/cli"
6
8
  require_relative "backy/configuration"
7
9
  require_relative "backy/app_config"
8
10
  require_relative "backy/db"
9
11
  require_relative "backy/list"
12
+ require_relative "backy/logger"
10
13
  require_relative "backy/pg_dump"
11
14
  require_relative "backy/pg_restore"
12
15
  require_relative "backy/s3"
@@ -27,4 +30,16 @@ module Backy
27
30
  def self.configuration
28
31
  @configuration ||= Configuration.new
29
32
  end
33
+
34
+ def self.setup
35
+ Logger.log("Setting up Backy...")
36
+ configuration.load
37
+ setup_logging
38
+ end
39
+
40
+ def self.setup_logging
41
+ log_file = configuration.log_file
42
+ log_dir = File.dirname(log_file)
43
+ FileUtils.mkdir_p(log_dir) unless Dir.exist?(log_dir)
44
+ end
30
45
  end
metadata CHANGED
@@ -1,16 +1,16 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backy_rb
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Kharchenko
8
8
  - Martin Ulleberg
9
9
  - Pål André Sundt
10
10
  autorequire:
11
- bindir: exe
11
+ bindir: bin
12
12
  cert_chain: []
13
- date: 2023-06-16 00:00:00.000000000 Z
13
+ date: 2023-12-28 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: rspec
@@ -124,6 +124,48 @@ dependencies:
124
124
  - - "~>"
125
125
  - !ruby/object:Gem::Version
126
126
  version: 0.9.6
127
+ - !ruby/object:Gem::Dependency
128
+ name: zlib
129
+ requirement: !ruby/object:Gem::Requirement
130
+ requirements:
131
+ - - "~>"
132
+ - !ruby/object:Gem::Version
133
+ version: '3.0'
134
+ type: :development
135
+ prerelease: false
136
+ version_requirements: !ruby/object:Gem::Requirement
137
+ requirements:
138
+ - - "~>"
139
+ - !ruby/object:Gem::Version
140
+ version: '3.0'
141
+ - !ruby/object:Gem::Dependency
142
+ name: rails
143
+ requirement: !ruby/object:Gem::Requirement
144
+ requirements:
145
+ - - ">="
146
+ - !ruby/object:Gem::Version
147
+ version: '4.0'
148
+ type: :development
149
+ prerelease: false
150
+ version_requirements: !ruby/object:Gem::Requirement
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ version: '4.0'
155
+ - !ruby/object:Gem::Dependency
156
+ name: faker
157
+ requirement: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - ">="
160
+ - !ruby/object:Gem::Version
161
+ version: '3.1'
162
+ type: :development
163
+ prerelease: false
164
+ version_requirements: !ruby/object:Gem::Requirement
165
+ requirements:
166
+ - - ">="
167
+ - !ruby/object:Gem::Version
168
+ version: '3.1'
127
169
  - !ruby/object:Gem::Dependency
128
170
  name: activerecord
129
171
  requirement: !ruby/object:Gem::Requirement
@@ -173,10 +215,12 @@ email:
173
215
  - akharchenko@gmail.com
174
216
  - martin.ulleberg@gmail.com
175
217
  - pal@rubynor.com
176
- executables: []
218
+ executables:
219
+ - backy
177
220
  extensions: []
178
221
  extra_rdoc_files: []
179
222
  files:
223
+ - ".backyrc.example"
180
224
  - ".drone.yml"
181
225
  - ".idea/.gitignore"
182
226
  - ".rspec"
@@ -186,70 +230,17 @@ files:
186
230
  - Gemfile.lock
187
231
  - README.md
188
232
  - Rakefile
189
- - backy.gemspec
233
+ - backy_rb.gemspec
234
+ - bin/backy
190
235
  - bucky.png
191
236
  - config/database.example.yml
192
- - dummy/psql/.gitattributes
193
- - dummy/psql/.gitignore
194
- - dummy/psql/.ruby-version
195
237
  - dummy/psql/Gemfile
196
- - dummy/psql/Gemfile.lock
197
- - dummy/psql/README.md
198
- - dummy/psql/Rakefile
199
- - dummy/psql/app/assets/config/manifest.js
200
- - dummy/psql/app/assets/images/.keep
201
- - dummy/psql/app/assets/stylesheets/application.css
202
- - dummy/psql/app/controllers/application_controller.rb
203
- - dummy/psql/app/controllers/concerns/.keep
204
- - dummy/psql/app/controllers/posts_controller.rb
205
- - dummy/psql/app/helpers/application_helper.rb
206
- - dummy/psql/app/helpers/posts_helper.rb
207
- - dummy/psql/app/models/application_record.rb
208
- - dummy/psql/app/models/concerns/.keep
209
- - dummy/psql/app/models/post.rb
210
- - dummy/psql/app/views/layouts/application.html.erb
211
- - dummy/psql/app/views/posts/_form.html.erb
212
- - dummy/psql/app/views/posts/_post.html.erb
213
- - dummy/psql/app/views/posts/edit.html.erb
214
- - dummy/psql/app/views/posts/index.html.erb
215
- - dummy/psql/app/views/posts/new.html.erb
216
- - dummy/psql/app/views/posts/show.html.erb
217
- - dummy/psql/bin/bundle
218
- - dummy/psql/bin/rails
219
- - dummy/psql/bin/rake
220
- - dummy/psql/bin/setup
221
- - dummy/psql/config.ru
222
- - dummy/psql/config/application.rb
223
- - dummy/psql/config/boot.rb
224
- - dummy/psql/config/credentials.yml.enc
225
- - dummy/psql/config/database.yml
226
- - dummy/psql/config/environment.rb
227
- - dummy/psql/config/environments/development.rb
228
- - dummy/psql/config/environments/production.rb
229
- - dummy/psql/config/environments/test.rb
230
- - dummy/psql/config/locales/en.yml
231
- - dummy/psql/config/master.key
232
- - dummy/psql/config/puma.rb
233
- - dummy/psql/config/routes.rb
234
- - dummy/psql/db/migrate/20230330203226_create_posts.rb
235
- - dummy/psql/db/schema.rb
236
- - dummy/psql/db/seeds.rb
237
- - dummy/psql/log/.keep
238
- - dummy/psql/public/404.html
239
- - dummy/psql/public/422.html
240
- - dummy/psql/public/500.html
241
- - dummy/psql/public/apple-touch-icon-precomposed.png
242
- - dummy/psql/public/apple-touch-icon.png
243
- - dummy/psql/public/favicon.ico
244
- - dummy/psql/public/robots.txt
245
- - dummy/psql/tmp/.keep
246
- - dummy/psql/tmp/pids/.keep
247
- - lib/backy.rb
248
238
  - lib/backy/app_config.rb
249
239
  - lib/backy/cli.rb
250
240
  - lib/backy/configuration.rb
251
241
  - lib/backy/db.rb
252
242
  - lib/backy/list.rb
243
+ - lib/backy/logger.rb
253
244
  - lib/backy/pg_dump.rb
254
245
  - lib/backy/pg_restore.rb
255
246
  - lib/backy/railtie.rb
@@ -258,6 +249,7 @@ files:
258
249
  - lib/backy/s3_load.rb
259
250
  - lib/backy/s3_save.rb
260
251
  - lib/backy/version.rb
252
+ - lib/backy_rb.rb
261
253
  - lib/tasks/backy_tasks.rake
262
254
  homepage: https://rubynor.com
263
255
  licenses: []
@@ -280,7 +272,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
280
272
  - !ruby/object:Gem::Version
281
273
  version: '0'
282
274
  requirements: []
283
- rubygems_version: 3.4.1
275
+ rubygems_version: 3.4.22
284
276
  signing_key:
285
277
  specification_version: 4
286
278
  summary: Backy is a powerful and user-friendly database backup gem designed specifically
@@ -1,7 +0,0 @@
1
- # See https://git-scm.com/docs/gitattributes for more about git attribute files.
2
-
3
- # Mark the database schema as having been generated.
4
- db/schema.rb linguist-generated
5
-
6
- # Mark any vendored files as having been vendored.
7
- vendor/* linguist-vendored
@@ -1,22 +0,0 @@
1
- # See https://help.github.com/articles/ignoring-files for more about ignoring files.
2
- #
3
- # If you find yourself ignoring temporary files generated by your text editor
4
- # or operating system, you probably want to add a global ignore instead:
5
- # git config --global core.excludesfile '~/.gitignore_global'
6
-
7
- # Ignore bundler config.
8
- /.bundle
9
-
10
- # Ignore all logfiles and tempfiles.
11
- /log/*
12
- /tmp/*
13
- !/log/.keep
14
- !/tmp/.keep
15
-
16
- # Ignore pidfiles, but keep the directory.
17
- /tmp/pids/*
18
- !/tmp/pids/
19
- !/tmp/pids/.keep
20
-
21
-
22
- /public/assets
@@ -1 +0,0 @@
1
- ruby-3.2.0
@@ -1,207 +0,0 @@
1
- PATH
2
- remote: ../..
3
- specs:
4
- backy (0.1.3)
5
- activerecord (>= 4.0)
6
- activesupport (>= 4.0)
7
- aws-sdk-s3 (>= 1.117)
8
-
9
- GEM
10
- remote: https://rubygems.org/
11
- specs:
12
- actioncable (7.0.4.3)
13
- actionpack (= 7.0.4.3)
14
- activesupport (= 7.0.4.3)
15
- nio4r (~> 2.0)
16
- websocket-driver (>= 0.6.1)
17
- actionmailbox (7.0.4.3)
18
- actionpack (= 7.0.4.3)
19
- activejob (= 7.0.4.3)
20
- activerecord (= 7.0.4.3)
21
- activestorage (= 7.0.4.3)
22
- activesupport (= 7.0.4.3)
23
- mail (>= 2.7.1)
24
- net-imap
25
- net-pop
26
- net-smtp
27
- actionmailer (7.0.4.3)
28
- actionpack (= 7.0.4.3)
29
- actionview (= 7.0.4.3)
30
- activejob (= 7.0.4.3)
31
- activesupport (= 7.0.4.3)
32
- mail (~> 2.5, >= 2.5.4)
33
- net-imap
34
- net-pop
35
- net-smtp
36
- rails-dom-testing (~> 2.0)
37
- actionpack (7.0.4.3)
38
- actionview (= 7.0.4.3)
39
- activesupport (= 7.0.4.3)
40
- rack (~> 2.0, >= 2.2.0)
41
- rack-test (>= 0.6.3)
42
- rails-dom-testing (~> 2.0)
43
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
44
- actiontext (7.0.4.3)
45
- actionpack (= 7.0.4.3)
46
- activerecord (= 7.0.4.3)
47
- activestorage (= 7.0.4.3)
48
- activesupport (= 7.0.4.3)
49
- globalid (>= 0.6.0)
50
- nokogiri (>= 1.8.5)
51
- actionview (7.0.4.3)
52
- activesupport (= 7.0.4.3)
53
- builder (~> 3.1)
54
- erubi (~> 1.4)
55
- rails-dom-testing (~> 2.0)
56
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
57
- activejob (7.0.4.3)
58
- activesupport (= 7.0.4.3)
59
- globalid (>= 0.3.6)
60
- activemodel (7.0.4.3)
61
- activesupport (= 7.0.4.3)
62
- activerecord (7.0.4.3)
63
- activemodel (= 7.0.4.3)
64
- activesupport (= 7.0.4.3)
65
- activestorage (7.0.4.3)
66
- actionpack (= 7.0.4.3)
67
- activejob (= 7.0.4.3)
68
- activerecord (= 7.0.4.3)
69
- activesupport (= 7.0.4.3)
70
- marcel (~> 1.0)
71
- mini_mime (>= 1.1.0)
72
- activesupport (7.0.4.3)
73
- concurrent-ruby (~> 1.0, >= 1.0.2)
74
- i18n (>= 1.6, < 2)
75
- minitest (>= 5.1)
76
- tzinfo (~> 2.0)
77
- aws-eventstream (1.2.0)
78
- aws-partitions (1.779.0)
79
- aws-sdk-core (3.174.0)
80
- aws-eventstream (~> 1, >= 1.0.2)
81
- aws-partitions (~> 1, >= 1.651.0)
82
- aws-sigv4 (~> 1.5)
83
- jmespath (~> 1, >= 1.6.1)
84
- aws-sdk-kms (1.66.0)
85
- aws-sdk-core (~> 3, >= 3.174.0)
86
- aws-sigv4 (~> 1.1)
87
- aws-sdk-s3 (1.124.0)
88
- aws-sdk-core (~> 3, >= 3.174.0)
89
- aws-sdk-kms (~> 1)
90
- aws-sigv4 (~> 1.4)
91
- aws-sigv4 (1.5.2)
92
- aws-eventstream (~> 1, >= 1.0.2)
93
- builder (3.2.4)
94
- concurrent-ruby (1.2.2)
95
- crass (1.0.6)
96
- date (3.3.3)
97
- debug (1.7.2)
98
- irb (>= 1.5.0)
99
- reline (>= 0.3.1)
100
- erubi (1.12.0)
101
- faker (3.1.1)
102
- i18n (>= 1.8.11, < 2)
103
- globalid (1.1.0)
104
- activesupport (>= 5.0)
105
- i18n (1.12.0)
106
- concurrent-ruby (~> 1.0)
107
- io-console (0.6.0)
108
- irb (1.6.3)
109
- reline (>= 0.3.0)
110
- jmespath (1.6.2)
111
- loofah (2.19.1)
112
- crass (~> 1.0.2)
113
- nokogiri (>= 1.5.9)
114
- mail (2.8.1)
115
- mini_mime (>= 0.1.1)
116
- net-imap
117
- net-pop
118
- net-smtp
119
- marcel (1.0.2)
120
- method_source (1.0.0)
121
- mini_mime (1.1.2)
122
- minitest (5.18.0)
123
- net-imap (0.3.4)
124
- date
125
- net-protocol
126
- net-pop (0.1.2)
127
- net-protocol
128
- net-protocol (0.2.1)
129
- timeout
130
- net-smtp (0.3.3)
131
- net-protocol
132
- nio4r (2.5.8)
133
- nokogiri (1.14.2-arm64-darwin)
134
- racc (~> 1.4)
135
- nokogiri (1.14.2-x86_64-linux)
136
- racc (~> 1.4)
137
- pg (1.4.6)
138
- puma (5.6.5)
139
- nio4r (~> 2.0)
140
- racc (1.6.2)
141
- rack (2.2.6.4)
142
- rack-test (2.1.0)
143
- rack (>= 1.3)
144
- rails (7.0.4.3)
145
- actioncable (= 7.0.4.3)
146
- actionmailbox (= 7.0.4.3)
147
- actionmailer (= 7.0.4.3)
148
- actionpack (= 7.0.4.3)
149
- actiontext (= 7.0.4.3)
150
- actionview (= 7.0.4.3)
151
- activejob (= 7.0.4.3)
152
- activemodel (= 7.0.4.3)
153
- activerecord (= 7.0.4.3)
154
- activestorage (= 7.0.4.3)
155
- activesupport (= 7.0.4.3)
156
- bundler (>= 1.15.0)
157
- railties (= 7.0.4.3)
158
- rails-dom-testing (2.0.3)
159
- activesupport (>= 4.2.0)
160
- nokogiri (>= 1.6)
161
- rails-html-sanitizer (1.5.0)
162
- loofah (~> 2.19, >= 2.19.1)
163
- railties (7.0.4.3)
164
- actionpack (= 7.0.4.3)
165
- activesupport (= 7.0.4.3)
166
- method_source
167
- rake (>= 12.2)
168
- thor (~> 1.0)
169
- zeitwerk (~> 2.5)
170
- rake (13.0.6)
171
- reline (0.3.3)
172
- io-console (~> 0.5)
173
- sprockets (4.2.0)
174
- concurrent-ruby (~> 1.0)
175
- rack (>= 2.2.4, < 4)
176
- sprockets-rails (3.4.2)
177
- actionpack (>= 5.2)
178
- activesupport (>= 5.2)
179
- sprockets (>= 3.0.0)
180
- thor (1.2.1)
181
- timeout (0.3.2)
182
- tzinfo (2.0.6)
183
- concurrent-ruby (~> 1.0)
184
- websocket-driver (0.7.5)
185
- websocket-extensions (>= 0.1.0)
186
- websocket-extensions (0.1.5)
187
- zeitwerk (2.6.7)
188
-
189
- PLATFORMS
190
- arm64-darwin-22
191
- x86_64-linux
192
-
193
- DEPENDENCIES
194
- backy!
195
- debug
196
- faker (~> 3.1)
197
- pg (~> 1.1)
198
- puma (~> 5.0)
199
- rails (~> 7.0.4, >= 7.0.4.2)
200
- sprockets-rails
201
- tzinfo-data
202
-
203
- RUBY VERSION
204
- ruby 3.2.0p0
205
-
206
- BUNDLED WITH
207
- 2.4.8
data/dummy/psql/README.md DELETED
@@ -1,24 +0,0 @@
1
- # README
2
-
3
- This README would normally document whatever steps are necessary to get the
4
- application up and running.
5
-
6
- Things you may want to cover:
7
-
8
- * Ruby version
9
-
10
- * System dependencies
11
-
12
- * Configuration
13
-
14
- * Database creation
15
-
16
- * Database initialization
17
-
18
- * How to run the test suite
19
-
20
- * Services (job queues, cache servers, search engines, etc.)
21
-
22
- * Deployment instructions
23
-
24
- * ...
data/dummy/psql/Rakefile DELETED
@@ -1,6 +0,0 @@
1
- # Add your own tasks in files placed in lib/tasks ending in .rake,
2
- # for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
3
-
4
- require_relative "config/application"
5
-
6
- Rails.application.load_tasks
@@ -1,2 +0,0 @@
1
- //= link_tree ../images
2
- //= link_directory ../stylesheets .css
File without changes