database-cloner-rails 1.0 → 1.0.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
- SHA1:
3
- metadata.gz: 48e4157dc6cd626d83c49a27e466374687a84bb4
4
- data.tar.gz: cc620f2d4f47c2b63dc5f0aa4cbce8cdac5ba241
2
+ SHA256:
3
+ metadata.gz: 2894784ecfef1a9062058766e1c00c741a570daafa530b834d5b6107ca91919f
4
+ data.tar.gz: b5c02fde16a181427e684a4bb5075a54741789e95c14843890070f79be16acff
5
5
  SHA512:
6
- metadata.gz: e6d70d18a11d291db4d2620657878b335b62b206b69748320e6c321ec3005f5bca6d7fab7a916455f60e8caedd79378178968614acde8acbe8c46e191edd7acc
7
- data.tar.gz: f02744591659bcacb361af1e9c3ac6ba06e4154f99c03c226f007d4231135ba18e2022417409cf43832101ae87297dcec1c77eb0f3562df60ec4fbac2fe2b78f
6
+ metadata.gz: faf0e1434b290814d8cb10c2f46ccd3e50546edd97da67e0bb07274d0d726be2c2bb57392e271d904dea95781df8e6649fb8008bab681d2b768cd8955ddc64c8
7
+ data.tar.gz: 3d073850db2e76aec441781a9a0f33da8f0ff33dd426b5837fcebc9dd0fadca337bc0420a5c8e0bd3c99c33720cd6c8ec24580d894b2d00247390ce8a49833f9
data/README.md ADDED
@@ -0,0 +1,49 @@
1
+ # database-cloner-rails
2
+
3
+ A Rails gem that provides Rake tasks to back up and restore your database records across environments.
4
+
5
+ ## How it works
6
+
7
+ The gem iterates over all ActiveRecord models in your app, serializes their records to Ruby files, and can replay those files to restore the data. Useful for seeding a staging environment from production data or creating snapshots.
8
+
9
+ ## Installation
10
+
11
+ Add this line to your `Gemfile`:
12
+
13
+ ```ruby
14
+ gem 'database-cloner-rails'
15
+ ```
16
+
17
+ Then run:
18
+
19
+ ```bash
20
+ bundle install
21
+ ```
22
+
23
+ ## Usage
24
+
25
+ ### Download (backup)
26
+
27
+ Dumps all records from every model into individual `.rb` files under `lib/tasks/database_cloner/db_dump/`:
28
+
29
+ ```bash
30
+ rake database:download
31
+ ```
32
+
33
+ Each file contains `Model.create(...)` calls — one per record — with `id`, `created_at`, and `updated_at` stripped out.
34
+
35
+ ### Upload (restore)
36
+
37
+ Replays the dumped files to recreate records in the current database:
38
+
39
+ ```bash
40
+ rake database:upload
41
+ ```
42
+
43
+ If a model's dump file fails to load, it prints a warning and continues with the rest.
44
+
45
+ ## Notes
46
+
47
+ - Only models that can be resolved via `classify.safe_constantize` are included.
48
+ - Records are ordered by `id` during the dump.
49
+ - The `db_dump/` directory must exist before running `database:download`.
@@ -0,0 +1,23 @@
1
+ require_relative "lib/database_cloner_rails/version"
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "database-cloner-rails"
5
+ spec.version = DatabaseClonerRails::VERSION
6
+ spec.authors = ["Abhishek Sharma"]
7
+ spec.email = ["abhsss96@gmail.com"]
8
+ spec.summary = "Rake tasks to back up and restore database records in Rails"
9
+ spec.description = "Provides rake tasks to dump all ActiveRecord model records to Ruby files and restore them — useful for seeding staging from production data."
10
+ spec.homepage = "https://github.com/abhsss96/database-cloner-rails"
11
+ spec.license = "MIT"
12
+ spec.required_ruby_version = ">= 2.7"
13
+
14
+ spec.files = Dir["lib/**/*", "README.md", "*.gemspec"]
15
+ spec.require_paths = ["lib"]
16
+
17
+ spec.add_dependency "rails", ">= 5.0"
18
+
19
+ spec.add_development_dependency "rspec", "~> 3.12"
20
+ spec.add_development_dependency "activerecord", ">= 5.0"
21
+ spec.add_development_dependency "activesupport", ">= 5.0"
22
+ spec.add_development_dependency "sqlite3", "~> 1.7"
23
+ end
@@ -0,0 +1,4 @@
1
+ require_relative "database_cloner_rails/version"
2
+ require_relative "database_cloner_rails/downloader"
3
+ require_relative "database_cloner_rails/uploader"
4
+ require_relative "database_cloner_rails/railtie" if defined?(Rails::Railtie)
@@ -0,0 +1,40 @@
1
+ module DatabaseClonerRails
2
+ class Downloader
3
+ def self.run(dump_dir: default_dump_dir)
4
+ new(dump_dir: dump_dir).run
5
+ end
6
+
7
+ def self.default_dump_dir
8
+ File.join(Rails.root, "lib", "tasks", "database_cloner", "db_dump")
9
+ end
10
+
11
+ def initialize(dump_dir: self.class.default_dump_dir)
12
+ @dump_dir = dump_dir
13
+ end
14
+
15
+ def run
16
+ ActiveRecord::Base.connection.tables.each do |table|
17
+ model = table.classify.safe_constantize
18
+ next unless model.present?
19
+ dump_table(table, model)
20
+ end
21
+ end
22
+
23
+ private
24
+
25
+ def dump_table(table, model)
26
+ lines = []
27
+ model.all.order(:id).each do |record|
28
+ puts record
29
+ attrs = JSON.parse(record.to_json)
30
+ attrs.delete("created_at")
31
+ attrs.delete("updated_at")
32
+ attrs.delete("id")
33
+ lines << "#{model}.create(#{attrs})"
34
+ lines << 'puts "uploading ...."'
35
+ lines << "puts ' ***===========>#{table}=====*** '"
36
+ end
37
+ File.open(File.join(@dump_dir, "#{table}.rb"), "w") { |f| f.puts lines }
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,9 @@
1
+ require "rails"
2
+
3
+ module DatabaseClonerRails
4
+ class Railtie < Rails::Railtie
5
+ rake_tasks do
6
+ load File.expand_path("../../tasks/database.rake", __dir__)
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,18 @@
1
+ module DatabaseClonerRails
2
+ class Uploader
3
+ def self.run
4
+ new.run
5
+ end
6
+
7
+ def run
8
+ ActiveRecord::Base.connection.tables.each do |table|
9
+ next unless table.classify.safe_constantize.present?
10
+ begin
11
+ require "tasks/database_cloner/db_dump/#{table}"
12
+ rescue LoadError, StandardError => e
13
+ puts "Oops!! #{table} could not be uploaded."
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,3 @@
1
+ module DatabaseClonerRails
2
+ VERSION = "1.0.1"
3
+ end
data/lib/railtie.rb CHANGED
@@ -1,9 +1 @@
1
- require 'database-cloner-rails'
2
- require 'rails'
3
- module DatabaseClonerRails
4
- class Railtie < Rails::Railtie
5
- rake_tasks do
6
- require 'lib/tasks/database.rake'
7
- end
8
- end
9
- end
1
+ require_relative "database_cloner_rails/railtie"
@@ -1,13 +1,11 @@
1
1
  namespace :database do
2
- desc "TODO"
3
- task upload: :environment do
4
- system("echo 'upload'")
5
- require "tasks/database_cloner/upload.rb"
6
- end
7
-
8
- desc "TODO"
2
+ desc "Dump all model records to Ruby files in lib/tasks/database_cloner/db_dump/"
9
3
  task download: :environment do
10
- require "tasks/database_cloner/download.rb"
4
+ DatabaseClonerRails::Downloader.run
11
5
  end
12
6
 
7
+ desc "Restore model records from dumped Ruby files"
8
+ task upload: :environment do
9
+ DatabaseClonerRails::Uploader.run
10
+ end
13
11
  end
metadata CHANGED
@@ -1,48 +1,125 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: database-cloner-rails
3
3
  version: !ruby/object:Gem::Version
4
- version: '1.0'
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abhishek Sharma
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-11-24 00:00:00.000000000 Z
12
- dependencies: []
13
- description: To create the database backup and restore.
14
- email: abhishek.sharma@medma.in
11
+ date: 2026-05-31 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rails
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '5.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '5.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.12'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '3.12'
41
+ - !ruby/object:Gem::Dependency
42
+ name: activerecord
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '5.0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '5.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: activesupport
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '5.0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '5.0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: sqlite3
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.7'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.7'
83
+ description: Provides rake tasks to dump all ActiveRecord model records to Ruby files
84
+ and restore them — useful for seeding staging from production data.
85
+ email:
86
+ - abhsss96@gmail.com
15
87
  executables: []
16
88
  extensions: []
17
89
  extra_rdoc_files: []
18
90
  files:
91
+ - README.md
92
+ - database-cloner-rails.gemspec
93
+ - lib/database-cloner-rails.rb
94
+ - lib/database_cloner_rails/downloader.rb
95
+ - lib/database_cloner_rails/railtie.rb
96
+ - lib/database_cloner_rails/uploader.rb
97
+ - lib/database_cloner_rails/version.rb
19
98
  - lib/railtie.rb
20
99
  - lib/tasks/database.rake
21
100
  - lib/tasks/database_cloner/download.rb
22
101
  - lib/tasks/database_cloner/upload.rb
23
- homepage: https://rubygems.org/gems/google-map-weather-intregration
102
+ homepage: https://github.com/abhsss96/database-cloner-rails
24
103
  licenses:
25
- - NONE
104
+ - MIT
26
105
  metadata: {}
27
- post_install_message:
106
+ post_install_message:
28
107
  rdoc_options: []
29
108
  require_paths:
30
109
  - lib
31
110
  required_ruby_version: !ruby/object:Gem::Requirement
32
111
  requirements:
33
- - - '>='
112
+ - - ">="
34
113
  - !ruby/object:Gem::Version
35
- version: '0'
114
+ version: '2.7'
36
115
  required_rubygems_version: !ruby/object:Gem::Requirement
37
116
  requirements:
38
- - - '>='
117
+ - - ">="
39
118
  - !ruby/object:Gem::Version
40
119
  version: '0'
41
120
  requirements: []
42
- rubyforge_project:
43
- rubygems_version: 2.3.0
44
- signing_key:
121
+ rubygems_version: 3.5.22
122
+ signing_key:
45
123
  specification_version: 4
46
- summary: Hello! This is library to create backup of database as rails requires.
124
+ summary: Rake tasks to back up and restore database records in Rails
47
125
  test_files: []
48
- has_rdoc: