dbreap 0.1.0
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 +7 -0
- data/.github/dependabot.yml +13 -0
- data/.github/workflows/ci.yml +51 -0
- data/.github/workflows/dependabot-auto-merge.yml +28 -0
- data/.github/workflows/release.yml +18 -0
- data/.gitignore +14 -0
- data/.rspec +2 -0
- data/.rubocop.yml +36 -0
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/Gemfile +4 -0
- data/README.md +77 -0
- data/Rakefile +6 -0
- data/bin/rubocop +27 -0
- data/db/seeds.rb +11 -0
- data/dbreap.gemspec +35 -0
- data/lefthook.yml +9 -0
- data/lib/db/empty.rake +8 -0
- data/lib/db/reap.rake +18 -0
- data/lib/dbreap/empty.rb +10 -0
- data/lib/dbreap/railtie.rb +10 -0
- data/lib/dbreap/reap.rb +37 -0
- data/lib/dbreap/version.rb +5 -0
- data/lib/dbreap.rb +11 -0
- data/lib/generators/dbreap/install/install_generator.rb +26 -0
- data/lib/generators/dbreap/install/templates/seeds.rb +11 -0
- metadata +192 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: f48e84aa481947c4420a1ccf50711da91291de547ae0b00307ec63411472b7a8
|
|
4
|
+
data.tar.gz: 4ec7e1a94682c8c7ff9a331eb74cbf8b6a460ebf765d34b3590b58b78075920b
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: dbf4fccb4cfc85c6463e266594ce4f4e764a2e8acee74eb768ce6bb53ae40a8e7a4777f94884c3c41b1dd4050623cbc005a484a36f2af6bac7738f8121d0b8b9
|
|
7
|
+
data.tar.gz: 01d19e7d1d411dd4d630583f4a91ada900a90c84fdf616b956f5d34dfb574e3a83a2305191d9e0e90efa392e0f42fde29aab7597e16f6a0d02f18e4f8c645b76
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
name: CI
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [main, master]
|
|
6
|
+
pull_request:
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
test:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
|
|
12
|
+
strategy:
|
|
13
|
+
matrix:
|
|
14
|
+
ruby: ["3.3", "3.4"]
|
|
15
|
+
|
|
16
|
+
steps:
|
|
17
|
+
- uses: actions/checkout@v4
|
|
18
|
+
|
|
19
|
+
- uses: ruby/setup-ruby@v1
|
|
20
|
+
with:
|
|
21
|
+
ruby-version: ${{ matrix.ruby }}
|
|
22
|
+
bundler-cache: true
|
|
23
|
+
|
|
24
|
+
- run: bundle exec rspec
|
|
25
|
+
|
|
26
|
+
audit:
|
|
27
|
+
runs-on: ubuntu-latest
|
|
28
|
+
|
|
29
|
+
steps:
|
|
30
|
+
- uses: actions/checkout@v4
|
|
31
|
+
|
|
32
|
+
- uses: ruby/setup-ruby@v1
|
|
33
|
+
with:
|
|
34
|
+
ruby-version: "3.4"
|
|
35
|
+
bundler-cache: true
|
|
36
|
+
|
|
37
|
+
- run: gem install bundler-audit
|
|
38
|
+
- run: bundle-audit check --update
|
|
39
|
+
|
|
40
|
+
lint:
|
|
41
|
+
runs-on: ubuntu-latest
|
|
42
|
+
|
|
43
|
+
steps:
|
|
44
|
+
- uses: actions/checkout@v4
|
|
45
|
+
|
|
46
|
+
- uses: ruby/setup-ruby@v1
|
|
47
|
+
with:
|
|
48
|
+
ruby-version: "3.4"
|
|
49
|
+
bundler-cache: true
|
|
50
|
+
|
|
51
|
+
- run: bundle exec rubocop
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
name: Dependabot Auto-Merge
|
|
2
|
+
on: pull_request
|
|
3
|
+
|
|
4
|
+
permissions:
|
|
5
|
+
contents: write
|
|
6
|
+
pull-requests: write
|
|
7
|
+
|
|
8
|
+
jobs:
|
|
9
|
+
dependabot:
|
|
10
|
+
runs-on: ubuntu-latest
|
|
11
|
+
if: github.actor == 'dependabot[bot]'
|
|
12
|
+
steps:
|
|
13
|
+
- name: Dependabot metadata
|
|
14
|
+
id: metadata
|
|
15
|
+
uses: dependabot/fetch-metadata@v2
|
|
16
|
+
with:
|
|
17
|
+
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
|
18
|
+
|
|
19
|
+
- name: Auto-approve and enable auto-merge (patch and minor only)
|
|
20
|
+
if: |
|
|
21
|
+
steps.metadata.outputs.update-type == 'version-update:semver-patch' ||
|
|
22
|
+
steps.metadata.outputs.update-type == 'version-update:semver-minor'
|
|
23
|
+
run: |
|
|
24
|
+
gh pr review --approve "$PR_URL"
|
|
25
|
+
gh pr merge --auto --squash "$PR_URL"
|
|
26
|
+
env:
|
|
27
|
+
PR_URL: ${{ github.event.pull_request.html_url }}
|
|
28
|
+
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
name: Release
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
tags: ['v*']
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
release:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
permissions:
|
|
11
|
+
id-token: write
|
|
12
|
+
steps:
|
|
13
|
+
- uses: actions/checkout@v4
|
|
14
|
+
- uses: ruby/setup-ruby@v1
|
|
15
|
+
with:
|
|
16
|
+
ruby-version: "3.4"
|
|
17
|
+
bundler-cache: true
|
|
18
|
+
- uses: rubygems/release-gem@v1
|
data/.gitignore
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
Gemfile.lock
|
|
2
|
+
tmp/
|
|
3
|
+
spec/dummy/config/master.key
|
|
4
|
+
spec/dummy/config/credentials.yml.enc
|
|
5
|
+
spec/dummy/config/ci.rb
|
|
6
|
+
spec/dummy/config/puma.rb
|
|
7
|
+
spec/dummy/config/environments/development.rb
|
|
8
|
+
spec/dummy/config/environments/production.rb
|
|
9
|
+
spec/dummy/Rakefile
|
|
10
|
+
spec/dummy/db/seeds.rb
|
|
11
|
+
spec/dummy/log/
|
|
12
|
+
spec/log/
|
|
13
|
+
spec/dummy/tmp/
|
|
14
|
+
spec/dummy/storage/
|
data/.rspec
ADDED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
plugins:
|
|
2
|
+
- rubocop-rspec
|
|
3
|
+
|
|
4
|
+
AllCops:
|
|
5
|
+
TargetRubyVersion: 3.3
|
|
6
|
+
NewCops: enable
|
|
7
|
+
SuggestExtensions: false
|
|
8
|
+
Exclude:
|
|
9
|
+
- "spec/dummy/**/*"
|
|
10
|
+
- "bin/**/*"
|
|
11
|
+
- "tmp/**/*"
|
|
12
|
+
- "vendor/**/*"
|
|
13
|
+
|
|
14
|
+
Style/Documentation:
|
|
15
|
+
Enabled: false
|
|
16
|
+
|
|
17
|
+
Gemspec/DevelopmentDependencies:
|
|
18
|
+
Enabled: false
|
|
19
|
+
|
|
20
|
+
Metrics/BlockLength:
|
|
21
|
+
Exclude:
|
|
22
|
+
- "spec/**/*"
|
|
23
|
+
|
|
24
|
+
RSpec/SpecFilePathFormat:
|
|
25
|
+
Enabled: false
|
|
26
|
+
|
|
27
|
+
RSpec/DescribeClass:
|
|
28
|
+
Exclude:
|
|
29
|
+
- "spec/integration/**/*"
|
|
30
|
+
- "spec/unit/reap_table_spec.rb"
|
|
31
|
+
|
|
32
|
+
RSpec/MultipleExpectations:
|
|
33
|
+
Enabled: false
|
|
34
|
+
|
|
35
|
+
RSpec/ExampleLength:
|
|
36
|
+
Enabled: false
|
data/.ruby-gemset
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
dbreap
|
data/.ruby-version
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
3.4.8
|
data/Gemfile
ADDED
data/README.md
ADDED
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# dbreap
|
|
2
|
+
|
|
3
|
+
[](https://github.com/brentgreeff/dbreap/actions/workflows/ci.yml)
|
|
4
|
+
|
|
5
|
+
Namespaced seed data - saved in YML. Much easier to see what's going on with your seed data than a bunch of ruby code that no-one maintains.
|
|
6
|
+
|
|
7
|
+
Share essential database records between developers, staging, and demo environments.
|
|
8
|
+
|
|
9
|
+
## Installation
|
|
10
|
+
|
|
11
|
+
```ruby
|
|
12
|
+
# Gemfile
|
|
13
|
+
gem "dbreap"
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
bundle install
|
|
18
|
+
rails generate dbreap:install
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
This creates `db/fixtures/` and installs the seed loader into `db/seeds.rb` (appends if the file already exists).
|
|
22
|
+
|
|
23
|
+
## Workflow
|
|
24
|
+
|
|
25
|
+
### 1. Create your data
|
|
26
|
+
|
|
27
|
+
Working on a new feature - Does having some example data help other developers on dev work with and test your new code in the UI?
|
|
28
|
+
|
|
29
|
+
Create your data in the UI or console - and commit the seed YML alongside the feature code.
|
|
30
|
+
|
|
31
|
+
### 2. Reap to YAML
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Reap specific tables
|
|
35
|
+
rake db:reap FIXTURES=products,categories
|
|
36
|
+
|
|
37
|
+
# Reap everything
|
|
38
|
+
rake db:reap FIXTURES=ALL
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Fixtures are written to `db/fixtures/<env>/`. Commit these files.
|
|
42
|
+
|
|
43
|
+
### 3. Seed on another machine
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
# Clear existing data, then seed from fixtures
|
|
47
|
+
rake db:empty
|
|
48
|
+
rake db:seed
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
`db:seed` uses Rails' standard `db/seeds.rb`, configured by the install generator.
|
|
52
|
+
|
|
53
|
+
## Rake tasks
|
|
54
|
+
|
|
55
|
+
| Task | Description |
|
|
56
|
+
|------|-------------|
|
|
57
|
+
| `rake db:reap FIXTURES=ALL` | Reap all tables to YAML |
|
|
58
|
+
| `rake db:reap FIXTURES=t1,t2` | Reap specific tables |
|
|
59
|
+
| `rake db:empty` | Delete all rows from all tables (preserves schema) |
|
|
60
|
+
|
|
61
|
+
## Development
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
bundle install
|
|
65
|
+
bundle exec lefthook install # installs pre-commit hooks
|
|
66
|
+
bundle exec rspec
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
## Notes
|
|
70
|
+
|
|
71
|
+
- Fixture files are ordered by `id` — reap → seed → reap produces identical output
|
|
72
|
+
- JSON columns are preserved as structured data
|
|
73
|
+
- String columns containing numeric values (e.g. `"123"`) are not cast to integers
|
|
74
|
+
- `schema_migrations` and `ar_internal_metadata` are always skipped
|
|
75
|
+
- `db:empty` uses `DELETE` (not `TRUNCATE`) — schema and sequences are preserved, no DDL lock
|
|
76
|
+
- Run `db:empty` before `db:seed` to avoid duplicate records on repeated seeds
|
|
77
|
+
- Fixture files are namespaced by environment (`db/fixtures/<env>/`) — development, staging, and demo data can coexist
|
data/Rakefile
ADDED
data/bin/rubocop
ADDED
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
#
|
|
5
|
+
# This file was generated by Bundler.
|
|
6
|
+
#
|
|
7
|
+
# The application 'rubocop' is installed as part of a gem, and
|
|
8
|
+
# this file is here to facilitate running it.
|
|
9
|
+
#
|
|
10
|
+
|
|
11
|
+
ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../Gemfile", __dir__)
|
|
12
|
+
|
|
13
|
+
bundle_binstub = File.expand_path("bundle", __dir__)
|
|
14
|
+
|
|
15
|
+
if File.file?(bundle_binstub)
|
|
16
|
+
if File.read(bundle_binstub, 300).include?("This file was generated by Bundler")
|
|
17
|
+
load(bundle_binstub)
|
|
18
|
+
else
|
|
19
|
+
abort("Your `bin/bundle` was not generated by Bundler, so this binstub cannot run.
|
|
20
|
+
Replace `bin/bundle` by running `bundle binstubs bundler --force`, then run this command again.")
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
require "rubygems"
|
|
25
|
+
require "bundler/setup"
|
|
26
|
+
|
|
27
|
+
load Gem.bin_path("rubocop", "rubocop")
|
data/db/seeds.rb
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'active_record/fixtures'
|
|
4
|
+
FIXTURES_PATHS = ['db/fixtures', "db/fixtures/#{Rails.env}"].freeze
|
|
5
|
+
|
|
6
|
+
FIXTURES_PATHS.each do |path|
|
|
7
|
+
Dir.glob("#{Rails.root}/#{path}/*.yml").each do |file|
|
|
8
|
+
puts File.basename(file, '.*')
|
|
9
|
+
ActiveRecord::FixtureSet.create_fixtures(path, File.basename(file, '.*'))
|
|
10
|
+
end
|
|
11
|
+
end
|
data/dbreap.gemspec
ADDED
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'lib/dbreap/version'
|
|
4
|
+
|
|
5
|
+
Gem::Specification.new do |spec|
|
|
6
|
+
spec.name = 'dbreap'
|
|
7
|
+
spec.version = Dbreap::VERSION
|
|
8
|
+
spec.authors = ['Brent Greeff']
|
|
9
|
+
spec.email = ['brent@example.com']
|
|
10
|
+
spec.summary = 'Reap database records to YAML fixtures and seed them back.'
|
|
11
|
+
spec.homepage = 'https://github.com/brentgreeff/dbreap'
|
|
12
|
+
spec.license = 'MIT'
|
|
13
|
+
|
|
14
|
+
spec.required_ruby_version = '>= 3.3'
|
|
15
|
+
|
|
16
|
+
spec.metadata = {
|
|
17
|
+
'source_code_uri' => 'https://github.com/brentgreeff/dbreap',
|
|
18
|
+
'rubygems_mfa_required' => 'true'
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
spec.files = Dir.chdir(__dir__) do
|
|
22
|
+
`git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:spec|test)/}) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
spec.add_dependency 'activerecord', '>= 7.0'
|
|
26
|
+
spec.add_dependency 'railties', '>= 7.0'
|
|
27
|
+
|
|
28
|
+
spec.add_development_dependency 'bundler-audit'
|
|
29
|
+
spec.add_development_dependency 'factory_bot_rails'
|
|
30
|
+
spec.add_development_dependency 'lefthook'
|
|
31
|
+
spec.add_development_dependency 'rspec-rails'
|
|
32
|
+
spec.add_development_dependency 'rubocop'
|
|
33
|
+
spec.add_development_dependency 'rubocop-rspec'
|
|
34
|
+
spec.add_development_dependency 'sqlite3'
|
|
35
|
+
end
|
data/lefthook.yml
ADDED
data/lib/db/empty.rake
ADDED
data/lib/db/reap.rake
ADDED
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
namespace :db do
|
|
4
|
+
desc 'Create YAML seed fixtures from data in an existing database. Set FIXTURES=ALL or FIXTURES=table1,table2.'
|
|
5
|
+
task reap: :environment do
|
|
6
|
+
if ENV['FIXTURES'].nil?
|
|
7
|
+
puts 'Please specify FIXTURES: ALL or a comma-separated list of table names'
|
|
8
|
+
exit
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
tables = ENV['FIXTURES'] == 'ALL' ? ActiveRecord::Base.connection.tables : ENV['FIXTURES'].split(',').map(&:strip)
|
|
12
|
+
tables -= Dbreap::SKIP_TABLES
|
|
13
|
+
|
|
14
|
+
FileUtils.mkdir_p("#{Rails.root}/db/fixtures/#{Rails.env}")
|
|
15
|
+
|
|
16
|
+
tables.each(&Dbreap::Reap.method(:write_fixture))
|
|
17
|
+
end
|
|
18
|
+
end
|
data/lib/dbreap/empty.rb
ADDED
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Dbreap
|
|
4
|
+
module Empty
|
|
5
|
+
def self.call(connection = ActiveRecord::Base.connection)
|
|
6
|
+
tables = connection.tables - Dbreap::SKIP_TABLES
|
|
7
|
+
tables.each { |t| connection.delete("DELETE FROM #{connection.quote_table_name(t)}") }
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
end
|
data/lib/dbreap/reap.rb
ADDED
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Dbreap
|
|
4
|
+
module Reap
|
|
5
|
+
def self.build_yml(table_name, connection: ActiveRecord::Base.connection)
|
|
6
|
+
raw = fetch_rows(table_name, connection:)
|
|
7
|
+
|
|
8
|
+
rows = raw.each_with_index.with_object({}) do |(row, i), accum|
|
|
9
|
+
key = "#{table_name}_#{format('%03d', i + 1)}"
|
|
10
|
+
accum[key] = row.transform_values { |v| cast_value(v) }
|
|
11
|
+
end
|
|
12
|
+
Psych.dump(rows, line_width: -1)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def self.fetch_rows(table_name, connection: ActiveRecord::Base.connection)
|
|
16
|
+
quoted = connection.quote_table_name(table_name)
|
|
17
|
+
connection.select_all("SELECT * FROM #{quoted} ORDER BY id")
|
|
18
|
+
rescue ActiveRecord::StatementInvalid
|
|
19
|
+
connection.select_all("SELECT * FROM #{quoted} ORDER BY 1")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def self.cast_value(value)
|
|
23
|
+
return value unless value.is_a?(String) && value.match?(/\A[\[{]/)
|
|
24
|
+
|
|
25
|
+
JSON.parse(value)
|
|
26
|
+
rescue JSON::ParserError
|
|
27
|
+
value
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def self.write_fixture(table_name, root: Rails.root, env: Rails.env)
|
|
31
|
+
path = "#{root}/db/fixtures/#{env}/#{table_name}.yml"
|
|
32
|
+
yaml = build_yml(table_name)
|
|
33
|
+
File.write(path, yaml)
|
|
34
|
+
puts "Reaped #{table_name}"
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
data/lib/dbreap.rb
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'dbreap/version'
|
|
4
|
+
|
|
5
|
+
module Dbreap
|
|
6
|
+
SKIP_TABLES = %w[schema_migrations ar_internal_metadata].freeze
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
require_relative 'dbreap/empty'
|
|
10
|
+
require_relative 'dbreap/reap'
|
|
11
|
+
require_relative 'dbreap/railtie' if defined?(Rails::Railtie)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Dbreap
|
|
4
|
+
module Generators
|
|
5
|
+
class InstallGenerator < Rails::Generators::Base
|
|
6
|
+
source_root File.expand_path('templates', __dir__)
|
|
7
|
+
|
|
8
|
+
desc 'Sets up db/seeds.rb and db/fixtures/ for dbreap.'
|
|
9
|
+
|
|
10
|
+
def create_fixtures_directory
|
|
11
|
+
empty_directory 'db/fixtures'
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def install_seeds
|
|
15
|
+
seeds_path = File.join(destination_root, 'db/seeds.rb')
|
|
16
|
+
if File.exist?(seeds_path) && !File.read(seeds_path).strip.empty?
|
|
17
|
+
append_to_file 'db/seeds.rb', "\n#{File.read(File.join(self.class.source_root, 'seeds.rb'))}"
|
|
18
|
+
say 'Appended dbreap seed loader to db/seeds.rb', :green
|
|
19
|
+
else
|
|
20
|
+
copy_file 'seeds.rb', 'db/seeds.rb'
|
|
21
|
+
say 'Created db/seeds.rb', :green
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'active_record/fixtures'
|
|
4
|
+
|
|
5
|
+
FIXTURES_PATHS = ['db/fixtures', "db/fixtures/#{Rails.env}"].freeze
|
|
6
|
+
|
|
7
|
+
FIXTURES_PATHS.each do |path|
|
|
8
|
+
Dir.glob("#{Rails.root}/#{path}/*.yml").each do |file|
|
|
9
|
+
ActiveRecord::FixtureSet.create_fixtures(path, File.basename(file, '.*'))
|
|
10
|
+
end
|
|
11
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: dbreap
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.1.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Brent Greeff
|
|
8
|
+
bindir: bin
|
|
9
|
+
cert_chain: []
|
|
10
|
+
date: 1980-01-02 00:00:00.000000000 Z
|
|
11
|
+
dependencies:
|
|
12
|
+
- !ruby/object:Gem::Dependency
|
|
13
|
+
name: activerecord
|
|
14
|
+
requirement: !ruby/object:Gem::Requirement
|
|
15
|
+
requirements:
|
|
16
|
+
- - ">="
|
|
17
|
+
- !ruby/object:Gem::Version
|
|
18
|
+
version: '7.0'
|
|
19
|
+
type: :runtime
|
|
20
|
+
prerelease: false
|
|
21
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
+
requirements:
|
|
23
|
+
- - ">="
|
|
24
|
+
- !ruby/object:Gem::Version
|
|
25
|
+
version: '7.0'
|
|
26
|
+
- !ruby/object:Gem::Dependency
|
|
27
|
+
name: railties
|
|
28
|
+
requirement: !ruby/object:Gem::Requirement
|
|
29
|
+
requirements:
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: '7.0'
|
|
33
|
+
type: :runtime
|
|
34
|
+
prerelease: false
|
|
35
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - ">="
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: '7.0'
|
|
40
|
+
- !ruby/object:Gem::Dependency
|
|
41
|
+
name: bundler-audit
|
|
42
|
+
requirement: !ruby/object:Gem::Requirement
|
|
43
|
+
requirements:
|
|
44
|
+
- - ">="
|
|
45
|
+
- !ruby/object:Gem::Version
|
|
46
|
+
version: '0'
|
|
47
|
+
type: :development
|
|
48
|
+
prerelease: false
|
|
49
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
50
|
+
requirements:
|
|
51
|
+
- - ">="
|
|
52
|
+
- !ruby/object:Gem::Version
|
|
53
|
+
version: '0'
|
|
54
|
+
- !ruby/object:Gem::Dependency
|
|
55
|
+
name: factory_bot_rails
|
|
56
|
+
requirement: !ruby/object:Gem::Requirement
|
|
57
|
+
requirements:
|
|
58
|
+
- - ">="
|
|
59
|
+
- !ruby/object:Gem::Version
|
|
60
|
+
version: '0'
|
|
61
|
+
type: :development
|
|
62
|
+
prerelease: false
|
|
63
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
64
|
+
requirements:
|
|
65
|
+
- - ">="
|
|
66
|
+
- !ruby/object:Gem::Version
|
|
67
|
+
version: '0'
|
|
68
|
+
- !ruby/object:Gem::Dependency
|
|
69
|
+
name: lefthook
|
|
70
|
+
requirement: !ruby/object:Gem::Requirement
|
|
71
|
+
requirements:
|
|
72
|
+
- - ">="
|
|
73
|
+
- !ruby/object:Gem::Version
|
|
74
|
+
version: '0'
|
|
75
|
+
type: :development
|
|
76
|
+
prerelease: false
|
|
77
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
78
|
+
requirements:
|
|
79
|
+
- - ">="
|
|
80
|
+
- !ruby/object:Gem::Version
|
|
81
|
+
version: '0'
|
|
82
|
+
- !ruby/object:Gem::Dependency
|
|
83
|
+
name: rspec-rails
|
|
84
|
+
requirement: !ruby/object:Gem::Requirement
|
|
85
|
+
requirements:
|
|
86
|
+
- - ">="
|
|
87
|
+
- !ruby/object:Gem::Version
|
|
88
|
+
version: '0'
|
|
89
|
+
type: :development
|
|
90
|
+
prerelease: false
|
|
91
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
92
|
+
requirements:
|
|
93
|
+
- - ">="
|
|
94
|
+
- !ruby/object:Gem::Version
|
|
95
|
+
version: '0'
|
|
96
|
+
- !ruby/object:Gem::Dependency
|
|
97
|
+
name: rubocop
|
|
98
|
+
requirement: !ruby/object:Gem::Requirement
|
|
99
|
+
requirements:
|
|
100
|
+
- - ">="
|
|
101
|
+
- !ruby/object:Gem::Version
|
|
102
|
+
version: '0'
|
|
103
|
+
type: :development
|
|
104
|
+
prerelease: false
|
|
105
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
106
|
+
requirements:
|
|
107
|
+
- - ">="
|
|
108
|
+
- !ruby/object:Gem::Version
|
|
109
|
+
version: '0'
|
|
110
|
+
- !ruby/object:Gem::Dependency
|
|
111
|
+
name: rubocop-rspec
|
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
|
113
|
+
requirements:
|
|
114
|
+
- - ">="
|
|
115
|
+
- !ruby/object:Gem::Version
|
|
116
|
+
version: '0'
|
|
117
|
+
type: :development
|
|
118
|
+
prerelease: false
|
|
119
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
120
|
+
requirements:
|
|
121
|
+
- - ">="
|
|
122
|
+
- !ruby/object:Gem::Version
|
|
123
|
+
version: '0'
|
|
124
|
+
- !ruby/object:Gem::Dependency
|
|
125
|
+
name: sqlite3
|
|
126
|
+
requirement: !ruby/object:Gem::Requirement
|
|
127
|
+
requirements:
|
|
128
|
+
- - ">="
|
|
129
|
+
- !ruby/object:Gem::Version
|
|
130
|
+
version: '0'
|
|
131
|
+
type: :development
|
|
132
|
+
prerelease: false
|
|
133
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
134
|
+
requirements:
|
|
135
|
+
- - ">="
|
|
136
|
+
- !ruby/object:Gem::Version
|
|
137
|
+
version: '0'
|
|
138
|
+
email:
|
|
139
|
+
- brent@example.com
|
|
140
|
+
executables: []
|
|
141
|
+
extensions: []
|
|
142
|
+
extra_rdoc_files: []
|
|
143
|
+
files:
|
|
144
|
+
- ".github/dependabot.yml"
|
|
145
|
+
- ".github/workflows/ci.yml"
|
|
146
|
+
- ".github/workflows/dependabot-auto-merge.yml"
|
|
147
|
+
- ".github/workflows/release.yml"
|
|
148
|
+
- ".gitignore"
|
|
149
|
+
- ".rspec"
|
|
150
|
+
- ".rubocop.yml"
|
|
151
|
+
- ".ruby-gemset"
|
|
152
|
+
- ".ruby-version"
|
|
153
|
+
- Gemfile
|
|
154
|
+
- README.md
|
|
155
|
+
- Rakefile
|
|
156
|
+
- bin/rubocop
|
|
157
|
+
- db/seeds.rb
|
|
158
|
+
- dbreap.gemspec
|
|
159
|
+
- lefthook.yml
|
|
160
|
+
- lib/db/empty.rake
|
|
161
|
+
- lib/db/reap.rake
|
|
162
|
+
- lib/dbreap.rb
|
|
163
|
+
- lib/dbreap/empty.rb
|
|
164
|
+
- lib/dbreap/railtie.rb
|
|
165
|
+
- lib/dbreap/reap.rb
|
|
166
|
+
- lib/dbreap/version.rb
|
|
167
|
+
- lib/generators/dbreap/install/install_generator.rb
|
|
168
|
+
- lib/generators/dbreap/install/templates/seeds.rb
|
|
169
|
+
homepage: https://github.com/brentgreeff/dbreap
|
|
170
|
+
licenses:
|
|
171
|
+
- MIT
|
|
172
|
+
metadata:
|
|
173
|
+
source_code_uri: https://github.com/brentgreeff/dbreap
|
|
174
|
+
rubygems_mfa_required: 'true'
|
|
175
|
+
rdoc_options: []
|
|
176
|
+
require_paths:
|
|
177
|
+
- lib
|
|
178
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
179
|
+
requirements:
|
|
180
|
+
- - ">="
|
|
181
|
+
- !ruby/object:Gem::Version
|
|
182
|
+
version: '3.3'
|
|
183
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
184
|
+
requirements:
|
|
185
|
+
- - ">="
|
|
186
|
+
- !ruby/object:Gem::Version
|
|
187
|
+
version: '0'
|
|
188
|
+
requirements: []
|
|
189
|
+
rubygems_version: 3.6.9
|
|
190
|
+
specification_version: 4
|
|
191
|
+
summary: Reap database records to YAML fixtures and seed them back.
|
|
192
|
+
test_files: []
|