fixture_farm 0.1.0 → 0.1.3

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: 90fbbd430cc9517a11e666fdb080b4289924871a2b73d23229e6293a16adc677
4
- data.tar.gz: ff02de63066e6b8b012cb55c6e04785dff300a62b8da6e85542d8d87770462c4
3
+ metadata.gz: 473a2a53021fcb6a622b9585c95769a343c7a5bbeaba96e25a347f96211ae156
4
+ data.tar.gz: ec5cbfaa5d092b11c1ba9716b47440795866fee6ae377d968ce1a44bf9a2e93c
5
5
  SHA512:
6
- metadata.gz: 7eead7fd8cc32ab9b27b1ce2fb825fa84f8ff3ca23073c13d1737e3f4f3c59fee6d6a5c38124d59e7980c1336ac2c3f7a8f93825240dd88f7714b4abb76b2137
7
- data.tar.gz: 253909f06e93222c1badb80dda9d8b06726080dca76356ddb562ac38df18bdc0dd9873211f79e4a3282967db50971b29ffb9f9e2a187e7eb79d9161791eb3516
6
+ metadata.gz: d32f502880c8e88e111c640cbdfa8ebfdf7a1369d06eb4421d55e9bfe3b014a91df399605037e77cdc0cbe8720c6a40808551f40c9d918af991d3dfba2ced2c5
7
+ data.tar.gz: e39d80ac110da1f67b1f219fe277bd83a85eb6e6e6dbac0cc4657fd6a22f6103ab469082a641c5caff11ed0b6d33f4a01c9fdcb1718c959422ef83819c1d318b
@@ -0,0 +1,23 @@
1
+ #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
3
+
4
+ require_relative '../lib/fixture_farm/fixture_recorder'
5
+
6
+ def usage
7
+ puts 'Usage: bundle exec fixture_farm <record|status|stop> [fixture_name_prefix]'
8
+ exit 1
9
+ end
10
+
11
+ case ARGV[0]
12
+ when 'record'
13
+ usage unless ARGV[1]
14
+ FixtureFarm::FixtureRecorder.start_recording_session!(ARGV[1])
15
+ puts "Recording fixtures with prefix #{ARGV[1]}"
16
+ when 'status'
17
+ puts "Recording is #{FixtureFarm::FixtureRecorder.recording_session_in_progress? ? 'on' : 'off'}"
18
+ when 'stop'
19
+ FixtureFarm::FixtureRecorder.stop_recording_session!
20
+ puts 'Stopped recording'
21
+ else
22
+ usage
23
+ end
@@ -5,15 +5,29 @@ module FixtureFarm
5
5
  def fixture_name
6
6
  require 'active_record/fixtures'
7
7
 
8
- return nil unless fixture_file_path
8
+ return nil unless File.exist?(fixtures_file_path)
9
9
 
10
- fixtures = YAML.load_file(fixture_file_path)
10
+ fixtures = YAML.load_file(fixtures_file_path)
11
11
  fixtures.keys.find do |key|
12
12
  ActiveRecord::FixtureSet.identify(key) == id
13
13
  end
14
14
  end
15
15
 
16
- def fixture_file_path
16
+ def fixtures_file_path
17
+ existing_fixtures_file_path || candidate_fixtures_file_path
18
+ end
19
+
20
+ def candidate_fixtures_file_path
21
+ klass = self.class
22
+ loop do
23
+ path = Rails.root.join('test', 'fixtures', "#{klass.to_s.underscore.pluralize}.yml")
24
+ return path if klass >= ActiveRecord::Base || !klass.columns.map(&:name).include?(klass.inheritance_column)
25
+
26
+ klass = klass.superclass
27
+ end
28
+ end
29
+
30
+ def existing_fixtures_file_path
17
31
  klass = self.class
18
32
 
19
33
  while klass < ActiveRecord::Base
@@ -43,7 +43,7 @@ module FixtureFarm
43
43
  subscriber = ActiveSupport::Notifications.subscribe 'sql.active_record' do |event|
44
44
  payload = event.payload
45
45
 
46
- next unless payload[:name] =~ /(\w+) Create/
46
+ next unless payload[:name] =~ /([:\w]+) Create/
47
47
 
48
48
  new_fixture_class_name = Regexp.last_match(1)
49
49
 
@@ -125,12 +125,14 @@ module FixtureFarm
125
125
  end
126
126
  end.to_h
127
127
 
128
- fixture_file_path = model_instance.fixture_file_path || Rails.root.join('test', 'fixtures', "#{model_instance.class.table_name}.yml")
128
+ fixtures_file_path = model_instance.fixtures_file_path
129
129
 
130
- fixtures = File.exist?(fixture_file_path) ? YAML.load_file(fixture_file_path) : {}
130
+ fixtures = File.exist?(fixtures_file_path) ? YAML.load_file(fixtures_file_path) : {}
131
131
  fixtures[new_fixture_name] = yaml_attributes
132
132
 
133
- File.open(fixture_file_path, 'w') do |file|
133
+ FileUtils.mkdir_p(fixtures_file_path.dirname)
134
+
135
+ File.open(fixtures_file_path, 'w') do |file|
134
136
  yaml = YAML.dump(fixtures).gsub(/\n(?=[^\s])/, "\n\n").delete_prefix("---\n\n")
135
137
  file.write(yaml)
136
138
  end
@@ -1,3 +1,3 @@
1
1
  module FixtureFarm
2
- VERSION = '0.1.0'
2
+ VERSION = '0.1.3'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fixture_farm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - artemave
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-11-26 00:00:00.000000000 Z
11
+ date: 2022-03-01 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -35,6 +35,7 @@ email:
35
35
  - mr@artem.rocks
36
36
  executables:
37
37
  - fixture_farm
38
+ - fixture_farm.rb
38
39
  extensions: []
39
40
  extra_rdoc_files: []
40
41
  files:
@@ -42,6 +43,7 @@ files:
42
43
  - README.md
43
44
  - Rakefile
44
45
  - bin/fixture_farm
46
+ - bin/fixture_farm.rb
45
47
  - lib/fixture_farm.rb
46
48
  - lib/fixture_farm/active_record_extension.rb
47
49
  - lib/fixture_farm/controller_hook.rb