deep_freezer 0.4.2 → 1.0.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 +4 -4
- data/Gemfile.lock +30 -1
- data/README.md +24 -4
- data/deep_freezer.gemspec +4 -0
- data/lib/deep_freezer.rb +0 -1
- data/lib/deep_freezer/base.rb +1 -1
- data/lib/deep_freezer/defrost.rb +14 -12
- data/lib/deep_freezer/version.rb +1 -1
- metadata +50 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e1efc00f291e048d002a8a4c8e3fbec16550e2d4
|
4
|
+
data.tar.gz: 2c0e6124cb1fbdac3fcb56d48824203d5ce9c377
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc16fed0eff7cdc4715518d1ad7de7dc9fd1e5e4e6befa4ed415b70f6fbd24a11715ae637da53b4e7245d12f74f603359cd422e22b006fec7f675282407fd793
|
7
|
+
data.tar.gz: a198b857b8fd00f1f7787ad3715765f45526cb23fef2d77b3a0e822501f17a84962392c609990e7ca3bdd94a7c731d503ca32e60f51cc4cb959b47ca19a362ef
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,36 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
deep_freezer (0.
|
4
|
+
deep_freezer (1.0.0)
|
5
|
+
activerecord (> 4.2.10, < 6.0.0)
|
5
6
|
|
6
7
|
GEM
|
7
8
|
remote: https://rubygems.org/
|
8
9
|
specs:
|
10
|
+
activemodel (5.1.5)
|
11
|
+
activesupport (= 5.1.5)
|
12
|
+
activerecord (5.1.5)
|
13
|
+
activemodel (= 5.1.5)
|
14
|
+
activesupport (= 5.1.5)
|
15
|
+
arel (~> 8.0)
|
16
|
+
activerecord-nulldb-adapter (0.3.8)
|
17
|
+
activerecord (>= 2.0.0)
|
18
|
+
activesupport (5.1.5)
|
19
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
20
|
+
i18n (~> 0.7)
|
21
|
+
minitest (~> 5.1)
|
22
|
+
tzinfo (~> 1.1)
|
23
|
+
arel (8.0.0)
|
24
|
+
coderay (1.1.2)
|
25
|
+
concurrent-ruby (1.0.5)
|
9
26
|
diff-lcs (1.3)
|
27
|
+
i18n (0.9.5)
|
28
|
+
concurrent-ruby (~> 1.0)
|
29
|
+
method_source (0.9.0)
|
30
|
+
minitest (5.11.3)
|
31
|
+
pry (0.11.3)
|
32
|
+
coderay (~> 1.1.0)
|
33
|
+
method_source (~> 0.9.0)
|
10
34
|
rake (10.4.2)
|
11
35
|
rspec (3.5.0)
|
12
36
|
rspec-core (~> 3.5.0)
|
@@ -21,13 +45,18 @@ GEM
|
|
21
45
|
diff-lcs (>= 1.2.0, < 2.0)
|
22
46
|
rspec-support (~> 3.5.0)
|
23
47
|
rspec-support (3.5.0)
|
48
|
+
thread_safe (0.3.6)
|
49
|
+
tzinfo (1.2.5)
|
50
|
+
thread_safe (~> 0.1)
|
24
51
|
|
25
52
|
PLATFORMS
|
26
53
|
ruby
|
27
54
|
|
28
55
|
DEPENDENCIES
|
56
|
+
activerecord-nulldb-adapter
|
29
57
|
bundler (~> 1.16)
|
30
58
|
deep_freezer!
|
59
|
+
pry
|
31
60
|
rake (~> 10.0)
|
32
61
|
rspec (~> 3.0)
|
33
62
|
|
data/README.md
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
# Deep Freezer
|
1
|
+
# Deep Freezer v1.0.0
|
2
2
|
## Freeze ActiveRecord models to Rails compatible fixtures.
|
3
3
|
|
4
|
-
This gem allows you to 'freeze' your ActiveRecord models to
|
4
|
+
This gem allows you to 'freeze' your ActiveRecord models to create repeatable datasets for development.
|
5
5
|
|
6
6
|
## Installation
|
7
7
|
|
@@ -31,7 +31,7 @@ end
|
|
31
31
|
|
32
32
|
Create an initializer and set the path for fixtures to be saved
|
33
33
|
|
34
|
-
`Freezer::Base.fixture_path = Rails.root.join("
|
34
|
+
`Freezer::Base.fixture_path = Rails.root.join("db", "seeds")`
|
35
35
|
|
36
36
|
### Define Freezers
|
37
37
|
|
@@ -49,6 +49,26 @@ class PostFreezer < DeepFreezer::Base
|
|
49
49
|
end
|
50
50
|
```
|
51
51
|
|
52
|
+
#### Overriding Attributes
|
53
|
+
|
54
|
+
Attributes can be overrode at time of freeze, similar to ActiveModel Serializers, by defining a method with the same name as the attribute name.
|
55
|
+
|
56
|
+
```
|
57
|
+
class PostFreezer < DeepFreezer::Base
|
58
|
+
|
59
|
+
freeze :id,
|
60
|
+
:title,
|
61
|
+
:body,
|
62
|
+
:created_at,
|
63
|
+
:updated_at
|
64
|
+
|
65
|
+
def title
|
66
|
+
"Frozen Title"
|
67
|
+
end
|
68
|
+
|
69
|
+
end
|
70
|
+
```
|
71
|
+
|
52
72
|
### Perform Freeze
|
53
73
|
|
54
74
|
And then write a script to select and freeze the records you want:
|
@@ -58,7 +78,7 @@ And then write a script to select and freeze the records you want:
|
|
58
78
|
posts.map { |p | PostFreezer.new(p).freeze }
|
59
79
|
```
|
60
80
|
|
61
|
-
This will result in a `posts.yml` file in `
|
81
|
+
This will result in a `posts.yml` file in `db/seeds` which can be loaded by adding `DeepFreezer::Defrost.load!` to your `seeds.rb` file.
|
62
82
|
|
63
83
|
### Reset Fixtures
|
64
84
|
|
data/deep_freezer.gemspec
CHANGED
@@ -30,7 +30,11 @@ Gem::Specification.new do |spec|
|
|
30
30
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
31
31
|
spec.require_paths = ["lib"]
|
32
32
|
|
33
|
+
spec.add_dependency "activerecord", "> 4.2.10", "< 6.0.0"
|
34
|
+
|
33
35
|
spec.add_development_dependency "bundler", "~> 1.16"
|
36
|
+
spec.add_development_dependency "pry"
|
34
37
|
spec.add_development_dependency "rake", "~> 10.0"
|
35
38
|
spec.add_development_dependency "rspec", "~> 3.0"
|
39
|
+
spec.add_development_dependency "activerecord-nulldb-adapter"
|
36
40
|
end
|
data/lib/deep_freezer.rb
CHANGED
data/lib/deep_freezer/base.rb
CHANGED
@@ -26,7 +26,7 @@ class DeepFreezer::Base
|
|
26
26
|
end
|
27
27
|
end
|
28
28
|
|
29
|
-
yaml = ({ "#{freezable.class.to_s
|
29
|
+
yaml = ([{ "#{freezable.class.to_s}" => freezable.attributes }].to_yaml).gsub("---", "")
|
30
30
|
|
31
31
|
write_to_file yaml, freezable.class.to_s.tableize
|
32
32
|
end
|
data/lib/deep_freezer/defrost.rb
CHANGED
@@ -1,26 +1,28 @@
|
|
1
1
|
class DeepFreezer::Defrost
|
2
2
|
|
3
3
|
def self.load!
|
4
|
-
|
5
4
|
path = DeepFreezer::Base.fixture_path.join("**/*.yml")
|
6
5
|
Dir.glob(path).each do |file|
|
7
6
|
objects = YAML.load(File.read(file))
|
8
7
|
puts "Loading #{objects.first.keys.first}"
|
9
|
-
objects.each do |
|
10
|
-
|
11
|
-
|
12
|
-
attrs = o[klass]
|
13
|
-
obj = klass.constantize.new
|
14
|
-
|
15
|
-
attrs.keys.each do |a|
|
16
|
-
obj.send("#{a}=", attrs[a])
|
17
|
-
end
|
18
|
-
|
19
|
-
sql = self.sql_for(obj)
|
8
|
+
objects.each do |object|
|
9
|
+
instance = self.hash_to_instance(object)
|
10
|
+
sql = self.sql_for(instance)
|
20
11
|
ActiveRecord::Base.connection.execute sql
|
21
12
|
end
|
22
13
|
end
|
14
|
+
end
|
15
|
+
|
16
|
+
def self.hash_to_instance(object)
|
17
|
+
klass = object.keys.first
|
18
|
+
attrs = object[klass]
|
19
|
+
instance = klass.constantize.new
|
23
20
|
|
21
|
+
attrs.keys.each do |a|
|
22
|
+
instance.send("#{a}=", attrs[a])
|
23
|
+
end
|
24
|
+
|
25
|
+
instance
|
24
26
|
end
|
25
27
|
|
26
28
|
def self.sql_for(record)
|
data/lib/deep_freezer/version.rb
CHANGED
metadata
CHANGED
@@ -1,15 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: deep_freezer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mark Provan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-03-
|
11
|
+
date: 2018-03-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: activerecord
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 4.2.10
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: 6.0.0
|
23
|
+
type: :runtime
|
24
|
+
prerelease: false
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
requirements:
|
27
|
+
- - ">"
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 4.2.10
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: 6.0.0
|
13
33
|
- !ruby/object:Gem::Dependency
|
14
34
|
name: bundler
|
15
35
|
requirement: !ruby/object:Gem::Requirement
|
@@ -24,6 +44,20 @@ dependencies:
|
|
24
44
|
- - "~>"
|
25
45
|
- !ruby/object:Gem::Version
|
26
46
|
version: '1.16'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: pry
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - ">="
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '0'
|
27
61
|
- !ruby/object:Gem::Dependency
|
28
62
|
name: rake
|
29
63
|
requirement: !ruby/object:Gem::Requirement
|
@@ -52,6 +86,20 @@ dependencies:
|
|
52
86
|
- - "~>"
|
53
87
|
- !ruby/object:Gem::Version
|
54
88
|
version: '3.0'
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: activerecord-nulldb-adapter
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - ">="
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '0'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
55
103
|
description: This gem allows you to 'freeze' your ActiveRecord models to Rails compatible
|
56
104
|
fixture files. This allows you to store real data statically for quick start dev/staging
|
57
105
|
evironments.
|