grainery 0.1.0 → 0.2.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.
@@ -1,3 +1,3 @@
1
1
  module Grainery
2
- VERSION = "0.1.0"
2
+ VERSION = "0.2.0"
3
3
  end
@@ -22,7 +22,7 @@ namespace :grainery do
22
22
  puts "Harvesting data from all tables..."
23
23
 
24
24
  grainery = Grainery::Grainer.new
25
- grainery.harvest_all(limit: 100) # Default limit of 100 records per table
25
+ grainery.harvest_all(limit: 100, dump_schema: true, anonymize: true) # Default limit of 100 records per table
26
26
 
27
27
  puts "\n✓ Data harvested to db/grainery/"
28
28
  end
@@ -33,15 +33,72 @@ namespace :grainery do
33
33
  puts " This may take a while and create large files\n\n"
34
34
 
35
35
  grainery = Grainery::Grainer.new
36
- grainery.harvest_all(limit: nil)
36
+ grainery.harvest_all(limit: nil, dump_schema: true, anonymize: true)
37
37
 
38
38
  puts "\n✓ All data harvested to db/grainery/"
39
39
  end
40
40
 
41
+ desc "Harvest data without schema dump"
42
+ task generate_data_only: :environment do
43
+ puts "Harvesting data from all tables (no schema dump)..."
44
+
45
+ grainery = Grainery::Grainer.new
46
+ grainery.harvest_all(limit: 100, dump_schema: false, anonymize: true)
47
+
48
+ puts "\n✓ Data harvested to db/grainery/"
49
+ end
50
+
51
+ desc "Harvest data without anonymization (raw production data)"
52
+ task generate_raw: :environment do
53
+ puts "⚠ WARNING: Harvesting RAW production data without anonymization!"
54
+ puts " This will include sensitive information (emails, names, etc.)"
55
+ puts " DO NOT commit these files to version control\n\n"
56
+
57
+ grainery = Grainery::Grainer.new
58
+ grainery.harvest_all(limit: 100, dump_schema: true, anonymize: false)
59
+
60
+ puts "\n✓ Raw data harvested to db/grainery/"
61
+ puts "⚠ Remember: This data contains sensitive information!"
62
+ end
63
+
41
64
  desc "Load harvested seeds into database (in dependency order)"
42
65
  task load: :environment do
66
+ if Rails.env.production?
67
+ puts "❌ ERROR: Cannot load seeds in production environment!"
68
+ puts " This is a destructive operation that could overwrite production data."
69
+ puts "\n If you absolutely must load seeds in production:"
70
+ puts " Set GRAINERY_ALLOW_PRODUCTION=true environment variable"
71
+ puts "\n Example: GRAINERY_ALLOW_PRODUCTION=true rake grainery:load"
72
+ exit 1 unless ENV['GRAINERY_ALLOW_PRODUCTION'] == 'true'
73
+
74
+ puts "⚠️ WARNING: Loading seeds in PRODUCTION environment!"
75
+ puts " Proceeding because GRAINERY_ALLOW_PRODUCTION=true"
76
+ puts " Press Ctrl+C within 5 seconds to cancel..."
77
+ sleep 5
78
+ end
79
+
80
+ grainery = Grainery::Grainer.new
81
+ grainery.load_seeds(load_schema: false)
82
+ end
83
+
84
+ desc "Load schemas and seeds into database"
85
+ task load_with_schema: :environment do
86
+ if Rails.env.production?
87
+ puts "❌ ERROR: Cannot load schemas in production environment!"
88
+ puts " This is a destructive operation that could overwrite production data."
89
+ puts "\n If you absolutely must load schemas in production:"
90
+ puts " Set GRAINERY_ALLOW_PRODUCTION=true environment variable"
91
+ puts "\n Example: GRAINERY_ALLOW_PRODUCTION=true rake grainery:load_with_schema"
92
+ exit 1 unless ENV['GRAINERY_ALLOW_PRODUCTION'] == 'true'
93
+
94
+ puts "⚠️ WARNING: Loading schemas and seeds in PRODUCTION environment!"
95
+ puts " Proceeding because GRAINERY_ALLOW_PRODUCTION=true"
96
+ puts " Press Ctrl+C within 5 seconds to cancel..."
97
+ sleep 5
98
+ end
99
+
43
100
  grainery = Grainery::Grainer.new
44
- grainery.load_seeds
101
+ grainery.load_seeds(load_schema: true)
45
102
  end
46
103
 
47
104
  desc "Clean grainery directory"
@@ -2,6 +2,12 @@ namespace :test do
2
2
  namespace :db do
3
3
  desc "Setup clean test database for grainery-based testing"
4
4
  task setup_for_grainery: :environment do
5
+ if Rails.env.production?
6
+ puts "❌ ERROR: Cannot run test database setup in production environment!"
7
+ puts " This task is only for test/development environments."
8
+ exit 1
9
+ end
10
+
5
11
  puts "Setting up clean test database for grainery-based testing..."
6
12
 
7
13
  # Switch to test environment
@@ -76,6 +82,12 @@ namespace :test do
76
82
 
77
83
  desc "Clean test database (truncate all tables)"
78
84
  task clean: :environment do
85
+ if Rails.env.production?
86
+ puts "❌ ERROR: Cannot truncate tables in production environment!"
87
+ puts " This is a destructive operation."
88
+ exit 1
89
+ end
90
+
79
91
  Rails.env = 'test'
80
92
  ActiveRecord::Base.establish_connection(:test)
81
93
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: grainery
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Michail Pantelelis
@@ -11,32 +11,52 @@ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
12
  - !ruby/object:Gem::Dependency
13
13
  name: rails
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '6.1'
19
+ - - "<"
20
+ - !ruby/object:Gem::Version
21
+ version: '9'
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ version: '6.1'
29
+ - - "<"
30
+ - !ruby/object:Gem::Version
31
+ version: '9'
32
+ - !ruby/object:Gem::Dependency
33
+ name: faker
14
34
  requirement: !ruby/object:Gem::Requirement
15
35
  requirements:
16
36
  - - "~>"
17
37
  - !ruby/object:Gem::Version
18
- version: '6.0'
38
+ version: '3.0'
19
39
  type: :runtime
20
40
  prerelease: false
21
41
  version_requirements: !ruby/object:Gem::Requirement
22
42
  requirements:
23
43
  - - "~>"
24
44
  - !ruby/object:Gem::Version
25
- version: '6.0'
45
+ version: '3.0'
26
46
  - !ruby/object:Gem::Dependency
27
- name: rspec
47
+ name: minitest
28
48
  requirement: !ruby/object:Gem::Requirement
29
49
  requirements:
30
50
  - - "~>"
31
51
  - !ruby/object:Gem::Version
32
- version: '3.0'
52
+ version: '5.0'
33
53
  type: :development
34
54
  prerelease: false
35
55
  version_requirements: !ruby/object:Gem::Requirement
36
56
  requirements:
37
57
  - - "~>"
38
58
  - !ruby/object:Gem::Version
39
- version: '3.0'
59
+ version: '5.0'
40
60
  - !ruby/object:Gem::Dependency
41
61
  name: sqlite3
42
62
  requirement: !ruby/object:Gem::Requirement
@@ -82,7 +102,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
82
102
  requirements:
83
103
  - - ">="
84
104
  - !ruby/object:Gem::Version
85
- version: 2.7.0
105
+ version: 3.2.0
86
106
  required_rubygems_version: !ruby/object:Gem::Requirement
87
107
  requirements:
88
108
  - - ">="