planter 0.0.9 → 0.0.10

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
2
  SHA256:
3
- metadata.gz: 61c2952a2b44b89c48245554cd6be4b19598891aa958b3f2f0dd3e3d2548a079
4
- data.tar.gz: 91e099c652ce4bfb0bf87320f9efa3d1e0e0826ae031e17e967563beb8561f19
3
+ metadata.gz: 259e8d195e480b9b5f16d67ee729d822f9c67131650997d2c95958f1356d76ab
4
+ data.tar.gz: f2722663f8f1628268208dd0e35da17507a62b339e0dc45004ba16c59f0879b5
5
5
  SHA512:
6
- metadata.gz: d70a187f4064ab1081a5a4b3df180f4ced5436601151029fca74b985cc0658e0422b56f338693b08a885a5dfc7d241357ef86144373825d8553117c3e7f6f30e
7
- data.tar.gz: 923979e971e3cbc573a9eaffbc39481d8fc8a4930894de1ea8d8f4ef79c3f6d7bbaba0ab111d0099ee67298b336373a0836802126c5d5bba4c237eb41ab0c5d8
6
+ metadata.gz: 3598c5503a8fef0db359b9ba6bcbd29e22ca3566e6f9ec0ebf0daa9a23961a227cad94478178b700d7b696b638fed51ea9bb61c5a71fb7a1874eb0765c6334ec
7
+ data.tar.gz: 92d6beec3c0c16fb9dd03d3b26fe6aadf94e28298f058795508c18863e6e41c0f3034c254eb995804d59f211c14bbdc1565848260026b0cf4c2e87f9bd1f7f6e
data/README.md CHANGED
@@ -19,10 +19,12 @@ Features include:
19
19
  You can view the documentation [here](https://evanthegrayt.github.io/planter/).
20
20
 
21
21
  ## Installation
22
- Add this line to your application's Gemfile:
22
+ Add the following line to your application's Gemfile. Because this plugin is
23
+ currently a pre-release version, it's recommended to lock it to a specific
24
+ version, as breaking changes may occur, even at the patch level.
23
25
 
24
26
  ```ruby
25
- gem 'planter'
27
+ gem 'planter', '0.0.10'
26
28
  ```
27
29
 
28
30
  And then execute:
@@ -51,7 +53,7 @@ Planter.configure do |config|
51
53
  # The list of seeders. These files are stored in the
52
54
  # config.seeders_directory, which can be changed below. When a new
53
55
  # seeder is generated, it will be appended to the bottom of this
54
- # list. If the order is incorrect, you'll need to adjust the it.
56
+ # list. If the order is incorrect, you'll need to adjust it.
55
57
  # Just be sure to keep the ending bracket on its own line, or the
56
58
  # generator won't know where to put new elements.
57
59
  config.seeders = %i[
@@ -138,7 +140,7 @@ file name. For example, `users.csv.erb`. Note that lines starting with `<%` and
138
140
  ending with `%>` will not be considered rows, so you can use `ERB` rows to set
139
141
  values. For example:
140
142
 
141
- ```csv.erb
143
+ ```
142
144
  email,login_attempts
143
145
  <% count = 1 %>
144
146
  test2@example.com,<%= count += 1 %>
@@ -12,7 +12,7 @@ module Planter
12
12
  # The list of seeders. These files are stored in the
13
13
  # config.seeders_directory, which can be changed below. When a new
14
14
  # seeder is generated, it will be appended to the bottom of this
15
- # list. If the order is incorrect, you'll need to adjust the it.
15
+ # list. If the order is incorrect, you'll need to adjust it.
16
16
  # Just be sure to keep the ending bracket on its own line, or the
17
17
  # generator won't know where to put new elements.
18
18
  config.seeders = %i[
@@ -138,6 +138,7 @@ module Planter
138
138
  parent_model: nil,
139
139
  association: nil,
140
140
  csv_name: nil,
141
+ erb_trim_mode: nil,
141
142
  unique_columns: nil
142
143
  )
143
144
  if !SEEDING_METHODS.include?(method.intern)
@@ -152,6 +153,7 @@ module Planter
152
153
  @parent_model = parent_model
153
154
  @association = @parent_model && (association || determine_association)
154
155
  @csv_file = determine_csv_filename(csv_name) if @seeding_method == :csv
156
+ @erb_trim_mode = erb_trim_mode
155
157
  @unique_columns =
156
158
  case unique_columns
157
159
  when String, Symbol then [unique_columns.intern]
@@ -260,6 +262,14 @@ module Planter
260
262
  @unique_columns ||= self.class.instance_variable_get('@unique_columns')
261
263
  end
262
264
 
265
+ ##
266
+ # Trim mode for ERB when parsing CSVs.
267
+ #
268
+ # @return [String, nil]
269
+ def erb_trim_mode
270
+ @erb_trim_mode ||= self.class.instance_variable_get('@erb_trim_mode')
271
+ end
272
+
263
273
  ##
264
274
  # Creates records from the +data+ attribute.
265
275
  def create_records
@@ -309,7 +319,7 @@ module Planter
309
319
  when :csv
310
320
  contents = ::File.read(csv_file)
311
321
  if csv_file.end_with?('.erb')
312
- contents = ERB.new(contents, trim_mode: '<>').result(binding)
322
+ contents = ERB.new(contents, trim_mode: erb_trim_mode).result(binding)
313
323
  end
314
324
 
315
325
  @data ||= ::CSV.parse(
@@ -323,8 +333,13 @@ module Planter
323
333
  end
324
334
 
325
335
  def split_record(rec) # :nodoc:
326
- return [rec, {}] unless unique_columns
327
- u = unique_columns.each_with_object({}) { |c, h| h[c] = rec.delete(c) }
336
+ u = {}
337
+ model.constantize.reflect_on_all_associations.map(&:name).each do |a|
338
+ u[a] = rec.delete(a) if rec.key?(a)
339
+ end
340
+ return [u, rec] unless unique_columns
341
+
342
+ unique_columns.each { |c, h| h[c] = rec.delete(c) }
328
343
  [u, rec]
329
344
  end
330
345
  end
@@ -21,7 +21,7 @@ module Planter
21
21
  # Patch version.
22
22
  #
23
23
  # @return [Integer]
24
- PATCH = 9
24
+ PATCH = 10
25
25
 
26
26
  ##
27
27
  # Version as +[MAJOR, MINOR, PATCH]+
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: planter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.9
4
+ version: 0.0.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Evan Gray
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-06-11 00:00:00.000000000 Z
11
+ date: 2021-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -57,7 +57,7 @@ metadata:
57
57
  homepage_uri: https://github.com/evanthegrayt/planter
58
58
  source_code_uri: https://github.com/evanthegrayt/planter
59
59
  documentation_uri: https://evanthegrayt.github.io/planter/
60
- post_install_message:
60
+ post_install_message:
61
61
  rdoc_options: []
62
62
  require_paths:
63
63
  - lib
@@ -72,8 +72,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
72
72
  - !ruby/object:Gem::Version
73
73
  version: '0'
74
74
  requirements: []
75
- rubygems_version: 3.2.15
76
- signing_key:
75
+ rubygems_version: 3.2.22
76
+ signing_key:
77
77
  specification_version: 4
78
78
  summary: Framework for seeding rails applications.
79
79
  test_files: []