live_fixtures 2.2.0 → 3.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5eeba979242569ec0f94e990bae7d73b5dc35bac27b15ad7efff6f073de3589e
4
- data.tar.gz: 54cebba2b0a73a58c916e4e416d66127e3fa0d625c2eaf1cfdac83e2cab2c441
3
+ metadata.gz: 43a4d648f92b357bd4751c7f4961b57d6f5d306b90c97ebb0dff6be7f7b4c932
4
+ data.tar.gz: 89c802bf38daaa3ab9238073af9f6bdf761bd0b67b234c2283b9f0fd7270129d
5
5
  SHA512:
6
- metadata.gz: 1373aa766f1c8772a3d6e72f501320efd919396876ec276c50c4a661ac714b99a65fa815e86b01a41943bcc5323530bd52a72e5a98f29ba4188cacef25c4b57f
7
- data.tar.gz: 70d4d8b975c414de07b1255416f6ef7128a4a622db16afd00a670e3879fe1f48ad5e16fc9d92ffba3c8803d500d303e5faac8d705d50734c416609767bdf3cec
6
+ metadata.gz: eecf0c868c069a33fcdb2d1ac38dce617409b28eba873149bab74fbcb802324b2b2921d0afb982de1142bc02036e467cef658de71ddaacd0a9e51b514f0a6f51
7
+ data.tar.gz: c37c360ccf11eb29c09308827cde01948fab84201ba6b2228b50eec31352d8c106a5e263e6ee8207f11dbb35f2788d8866e2e1182f8250a867b4ec63a8fd25f7
data/CHANGELOG.md CHANGED
@@ -2,6 +2,21 @@
2
2
  All notable changes to this project will be documented in this file.
3
3
  This project adheres to [Semantic Versioning](http://semver.org/).
4
4
 
5
+ ## [3.1.1] - 2024-04-04
6
+ ### Fixed
7
+ Expose the `skip_attributes` option in LiveFixtures::Export.
8
+
9
+ ## [3.1.0] - 2024-04-04
10
+ ### Added
11
+ It's now possible to specify a list of attributes to skip while exporting.
12
+
13
+ ## [3.0.0] - 2023-07-24
14
+ ### Added
15
+ support ruby >= 3.1
16
+
17
+ ### Removed
18
+ drop support for ruby < 3.1, rails < 6.0
19
+
5
20
  ## [2.2.0] - 2020-12-09
6
21
  ### Added
7
22
  support rails 6, ruby 1.66, 1.7.2
@@ -7,15 +7,16 @@ module LiveFixtures::Export::Fixture
7
7
  # @param model [ActiveRecord::Base] an ActiveRecord record to serialize
8
8
  # @param references [Symbol, Array<Symbol>] the names of associations whose foreign_keys should be replaced with references
9
9
  # @param more_attributes [Hash{String => Time, DateTime, Date, Hash, String, LiveFixtures::Export::Template, LiveFixtures::Export::Reference, #to_s}] a hash of additional attributes to serialize with each record.
10
+ # @param skip_attributes [Array<String>] a list of attributes to skip when serializing the model
10
11
  # @return [String] the model serialized in YAML, with specified foreign_keys replaced by references, including additional attributes.
11
- def to_yaml(model, references = [], more_attributes = {})
12
+ def to_yaml(model, references = [], more_attributes = {}, skip_attributes: [])
12
13
  table_name = model.class.table_name
13
14
 
14
15
  more_attributes.merge! attributes_from_references(model, references)
15
16
 
16
17
  <<-YML
17
18
  #{table_name}_#{model.id || SecureRandom.uuid.underscore}:
18
- #{yml_attributes(model, more_attributes)}
19
+ #{yml_attributes(model, more_attributes, skip_attributes)}
19
20
 
20
21
  YML
21
22
  end
@@ -35,9 +36,10 @@ module LiveFixtures::Export::Fixture
35
36
  end
36
37
  end
37
38
 
38
- private_class_method def yml_attributes(model, more_attributes)
39
+ private_class_method def yml_attributes(model, more_attributes, skip_attributes)
39
40
  model.attributes.except("id").merge(more_attributes).map do |name, value|
40
41
  next if value.nil?
42
+ next if skip_attributes.include?(name)
41
43
 
42
44
  serialize_attribute(model, name, value)
43
45
  end.compact.join("\n ")
@@ -48,6 +48,7 @@ module LiveFixtures::Export
48
48
  # Export models to a yml file named after the corresponding table.
49
49
  # @param models [Enumerable] an Enumerable containing ActiveRecord models.
50
50
  # @param with_references [Array<Symbol>] the associations whose foreign_keys should be replaced with references.
51
+ # @param skip_attributes [Array<String>] the attributes to skip when exporting the model.
51
52
  #
52
53
  # Takes an optional block that will be invoked for each model.
53
54
  # The block should return a hash of attributes to be merged and
@@ -55,7 +56,7 @@ module LiveFixtures::Export
55
56
  # @yield [model] an optional block that will be invoked for each model.
56
57
  # @yieldparam model [ActiveRecord::Base] each successive model.
57
58
  # @yieldreturn [Hash{String => Object}] a hash of attributes to be merged and saved with the model's attributes.
58
- def export_fixtures(models, with_references = [])
59
+ def export_fixtures(models, with_references = [], skip_attributes: [])
59
60
  return [] unless models.present?
60
61
 
61
62
  model_class = models.first.class
@@ -70,7 +71,7 @@ module LiveFixtures::Export
70
71
 
71
72
  iterator.new(models).each do |model|
72
73
  more_attributes = block_given? ? yield(model) : {}
73
- file.write Fixture.to_yaml(model, with_references, more_attributes)
74
+ file.write Fixture.to_yaml(model, with_references, more_attributes, skip_attributes: skip_attributes)
74
75
  end
75
76
  end
76
77
  end
@@ -66,12 +66,12 @@ class LiveFixtures::Import
66
66
  end
67
67
 
68
68
  join_table_rows.each do |table_name, rows|
69
- rows.each do |targets:, association:, label:|
70
- targets.each do |target|
69
+ rows.each do |row|
70
+ row[:targets].each do |target|
71
71
  assoc_fk = @label_to_id[target] || target
72
- row = { association.foreign_key => fetch_id_for_label(label),
73
- association.association_foreign_key => assoc_fk }
74
- yield [table_name, NO_LABEL, row]
72
+ row_with_fk = { row[:association].foreign_key => fetch_id_for_label(row[:label]),
73
+ row[:association].association_foreign_key => assoc_fk }
74
+ yield [table_name, NO_LABEL, row_with_fk]
75
75
  end
76
76
  end
77
77
  end
@@ -1,3 +1,3 @@
1
1
  module LiveFixtures
2
- VERSION = "2.2.0"
2
+ VERSION = "3.1.1"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: live_fixtures
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 3.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - jleven
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-12-09 00:00:00.000000000 Z
11
+ date: 1980-01-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -16,7 +16,7 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '5.2'
19
+ version: '6.0'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: 7.0.0
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ">="
28
28
  - !ruby/object:Gem::Version
29
- version: '5.2'
29
+ version: '6.0'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: 7.0.0
@@ -106,14 +106,14 @@ dependencies:
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: '3.10'
109
+ version: '4.0'
110
110
  type: :development
111
111
  prerelease: false
112
112
  version_requirements: !ruby/object:Gem::Requirement
113
113
  requirements:
114
114
  - - "~>"
115
115
  - !ruby/object:Gem::Version
116
- version: '3.10'
116
+ version: '4.0'
117
117
  - !ruby/object:Gem::Dependency
118
118
  name: byebug
119
119
  requirement: !ruby/object:Gem::Requirement
@@ -227,14 +227,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
227
227
  requirements:
228
228
  - - ">="
229
229
  - !ruby/object:Gem::Version
230
- version: '2.1'
230
+ version: '3.1'
231
231
  required_rubygems_version: !ruby/object:Gem::Requirement
232
232
  requirements:
233
233
  - - ">="
234
234
  - !ruby/object:Gem::Version
235
235
  version: '0'
236
236
  requirements: []
237
- rubygems_version: 3.1.5
237
+ rubygems_version: 3.4.13
238
238
  signing_key:
239
239
  specification_version: 4
240
240
  summary: Tools for exporting and importing between databases managed by ActiveRecord.