seed_builder 1.0.1 → 1.2.0

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: 4ecee50238e268d48a12368a6120f6e5aacdce21672621a19b6bbdf82215585e
4
- data.tar.gz: '059a0424d354435ef544dc6627541d9ac64de3b25aad0191050a378dbdb81b27'
3
+ metadata.gz: 85c0a52e743506b14e76f91dbf1b0e8a524d6edb934df69490303200b37513ee
4
+ data.tar.gz: 5a4f1a7083612b45fbc663c15b8ea48a1efbbaaef8a08149619a6fe4a804f499
5
5
  SHA512:
6
- metadata.gz: 6d79169514a3b938ad45c8e57e68bb14f6de8e69cae56ac49cbc495fb64b314ea601d2798aebb42233b5b6f36d51d3b6666f9e7cec5746d69eb3a6d140089469
7
- data.tar.gz: e9eb0af111a273efd24f7b883de27ff055ef8c19124475c4492fc7da553aa417135c06fab0506189afa48d327f6e6448b8fbbb00d166ae095479c88dee81d52c
6
+ metadata.gz: 893889ebedc9e81076d5234ab0bb46eba553704055aaa96c8e63aab6d70753eaf53425b04cf0a00f55149d865829c84a7d4a50d102ff02ed9389f1f6440597dc
7
+ data.tar.gz: e61fb9c54039470ce71bcdbdc9d460d30751b458cc44ce85eb4de359b4d020c19c05cc55ab90991e142c056d45a596a3f39d07297623fdb3f30fae992f9ba09c
data/CHANGELOG.md CHANGED
@@ -1,3 +1,13 @@
1
+ # 1.2.0
2
+
3
+ - Automatically configure loader for Rails seeds
4
+ - Add `use_seed_loader` config option to control loader usage
5
+
6
+ # 1.1.0
7
+
8
+ - Fix `seeds_path` to be relative to Rails root
9
+ - Improve test coverage for generator
10
+
1
11
  # 1.0.1
2
12
 
3
13
  - Fix boolean config options to properly handle `nil` and `false` values
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seed_builder (1.0.1)
4
+ seed_builder (1.2.0)
5
5
  activerecord (>= 6, < 8.1)
6
6
  rails (>= 6, < 8.1)
7
7
 
data/README.md CHANGED
@@ -57,7 +57,7 @@ SeedBuilder.config.load_default_seeds = false
57
57
  Absolute path will be resolved by using `Rails.root`.
58
58
 
59
59
  ```ruby
60
- SeedBuilder.config.seeds_relative_path = "db/seeds"
60
+ SeedBuilder.config.seeds_path = "db/seeds"
61
61
  ```
62
62
 
63
63
  ### Turn off test script generation
@@ -66,6 +66,12 @@ SeedBuilder.config.seeds_relative_path = "db/seeds"
66
66
  SeedBuilder.config.generate_spec = false
67
67
  ```
68
68
 
69
+ ### Turn off loader usage for ActiveRecord
70
+
71
+ ```ruby
72
+ SeedBuilder.config.use_seed_loader = false
73
+ ```
74
+
69
75
  ## Specification checklist
70
76
 
71
77
  - [x] User can generate seed file under `db/seeds` directory with common format
@@ -6,7 +6,7 @@ end
6
6
  <%- if SeedBuilder.config.generate_spec? %>
7
7
 
8
8
  # TESTING:
9
- # - bin/rspec <%= SeedBuilder.config.seeds_relative_path %>/<%= migration_number %>_<%= migration_file_name %>.rb
9
+ # - bin/rspec <%= SeedBuilder.config.seeds_path %>/<%= migration_number %>_<%= migration_file_name %>.rb
10
10
  if Rails.env.test? && Object.const_defined?(:RSpec)
11
11
  require "rails_helper"
12
12
 
data/lib/rails_config.rb CHANGED
@@ -1,3 +1,3 @@
1
- if Object.const_defined?(:ActiveRecord)
1
+ if Object.const_defined?(:ActiveRecord) && SeedBuilder.config.use_seed_loader?
2
2
  ActiveRecord::Tasks::DatabaseTasks.seed_loader = SeedBuilder::Loader.new
3
3
  end
@@ -7,16 +7,16 @@ module SeedBuilder
7
7
 
8
8
  attr_writer :seeds_path
9
9
  def seeds_path
10
- @seeds_path ||= Rails.root.join(seeds_relative_path)
10
+ @seeds_path ||= "db/seeds"
11
11
  end
12
12
 
13
- def seeds_path_glob
14
- "#{seeds_path}/*.rb"
13
+ attr_writer :seeds_full_path
14
+ def seeds_full_path
15
+ @seeds_full_path ||= Rails.root.join(seeds_path)
15
16
  end
16
17
 
17
- attr_writer :seeds_relative_path
18
- def seeds_relative_path
19
- @seeds_relative_path ||= "db/seeds"
18
+ def seeds_path_glob
19
+ "#{seeds_full_path}/*.rb"
20
20
  end
21
21
 
22
22
  attr_writer :load_default_seeds
@@ -33,5 +33,10 @@ module SeedBuilder
33
33
  def generate_spec?
34
34
  @generate_spec.nil? ? true : @generate_spec
35
35
  end
36
+
37
+ attr_writer :use_seed_loader
38
+ def use_seed_loader?
39
+ @use_seed_loader.nil? ? true : @use_seed_loader
40
+ end
36
41
  end
37
42
  end
data/lib/seed_builder.rb CHANGED
@@ -2,7 +2,7 @@ require "seed_builder/config"
2
2
  require "seed_builder/loader"
3
3
 
4
4
  module SeedBuilder
5
- VERSION = "1.0.1".freeze
5
+ VERSION = "1.2.0".freeze
6
6
 
7
7
  module_function
8
8
 
@@ -14,3 +14,5 @@ module SeedBuilder
14
14
  yield config
15
15
  end
16
16
  end
17
+
18
+ require "rails_config"
@@ -7,12 +7,18 @@ describe SeedGenerator, type: :generator do
7
7
 
8
8
  subject(:generator) { described_class.start params }
9
9
  let(:destination_root) { File.expand_path("../../tmp/rspec", __FILE__) }
10
+ let(:seeds_path) { rails_root.join("db/seeds") }
10
11
 
11
- let(:params) { ["create_users"] }
12
+ let(:seed_name) { "create_users" }
13
+ let(:params) { [seed_name] }
14
+
15
+ let(:created_files) { Dir["#{seeds_path}/*_#{seed_name}.rb"] }
16
+ let(:file_contents) { File.readlines(created_files.first).map(&:strip).reject(&:blank?) }
12
17
 
13
18
  before do
14
19
  mkdir_p destination_root
15
20
 
21
+ allow(SeedBuilder.config).to receive(:seeds_path).and_return(seeds_path)
16
22
  allow(Rails).to receive(:root).and_return(rails_root(destination_root))
17
23
  end
18
24
 
@@ -22,7 +28,23 @@ describe SeedGenerator, type: :generator do
22
28
 
23
29
  it "creates a migration file" do
24
30
  generator
25
- seed_files = Dir[rails_root.join("db/seeds/*_create_users.rb")]
26
- expect(seed_files).not_to be_empty
31
+
32
+ expect(created_files).not_to be_empty
33
+ expect(file_contents).to include("class CreateUsers")
34
+ expect(file_contents).not_to include("RSpec.describe CreateUsers")
35
+ end
36
+
37
+ context "when generate_spec is false" do
38
+ before do
39
+ allow(SeedBuilder.config).to receive(:generate_spec?).and_return(false)
40
+ end
41
+
42
+ it "does not create a spec file" do
43
+ generator
44
+
45
+ expect(created_files).not_to be_empty
46
+ expect(file_contents).to include("class CreateUsers")
47
+ expect(file_contents).not_to include("RSpec.describe CreateUsers")
48
+ end
27
49
  end
28
50
  end
@@ -8,7 +8,7 @@ describe SeedBuilder::Config do
8
8
  end
9
9
 
10
10
  it "has default seeds path" do
11
- expect(config.seeds_relative_path).to eq "db/seeds"
11
+ expect(config.seeds_path).to eq "db/seeds"
12
12
  end
13
13
 
14
14
  it "has default load_seeds" do
@@ -23,8 +23,8 @@ describe SeedBuilder::Config do
23
23
  expect(config.generate_spec?).to be true
24
24
  end
25
25
 
26
- it "has default seeds_path" do
27
- expect(config.seeds_path).to eq Rails.root.join("db/seeds")
26
+ it "has default seeds_full_path" do
27
+ expect(config.seeds_full_path).to eq Rails.root.join("db/seeds")
28
28
  end
29
29
 
30
30
  it "has default seeds_path_glob" do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seed_builder
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andrei Makarov
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-12-08 00:00:00.000000000 Z
11
+ date: 2024-12-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails