fixation 1.3.0 → 2.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9030fd3deb6fe90db7f3386081d6f54022986bae
4
- data.tar.gz: c4ee3f55efd5e72710339bed2ec9c2a35381372d
3
+ metadata.gz: c574bc684d8f4b914fc2ecb3189c06eb603d0b47
4
+ data.tar.gz: 4c5ddf419b00ccb17f45d825c7c5681a3ffb328c
5
5
  SHA512:
6
- metadata.gz: bccd15f8df0a0562de2d1582c6a1fad9eb9aaea1465884c4878704ddb1ae4458ff985aeb8af745cbf70780b825be03529addef6ab172a80c5f5d5d37885e6b3d
7
- data.tar.gz: 28532d1a859500bfba29ead7aa8a09053d90ef11699ac68609a0769b0bf89b9659b069755283718c89962ec9ca32602d15d46fb11a20668f278f382f4c4610be
6
+ metadata.gz: 89541e134b63e0f395304f60aa5191d444a7e65becfcc6d6a296afa0905ef6ef8cd0362a5798258855ddd4d5ce9aabbb5d8ae2669f53ec1fde34111316afbcf2
7
+ data.tar.gz: 9e8f2cc7f32d14b7151024cb22f570a32bc7661863114bbb341c9e29646f899531d76d3cb0ef63334695f346ba81abcfa0af9077a6d2b527002df0839e1d3847
data/README.md CHANGED
@@ -76,6 +76,16 @@ if Rails.env.test? && Fixation.running_under_spring?
76
76
  end
77
77
  ```
78
78
 
79
+ ## Auto-clearing other tables
80
+
81
+ By default Fixation will only reset those tables that have a fixture file, like Rails. Optionally, you can tell it to clear all other tables so that you don't need to make empty fixture files.
82
+
83
+ ```ruby
84
+ if Rails.env.test?
85
+ Fixation.clear_other_tables = true
86
+ end
87
+ ```
88
+
79
89
 
80
90
  ## Contributing
81
91
 
@@ -3,263 +3,25 @@ require 'yaml'
3
3
  require 'set'
4
4
  require 'active_support/dependencies'
5
5
  require 'active_record/errors'
6
- require "fixation/version"
6
+ require_relative "fixation/version"
7
+ require_relative "fixation/fixture_table"
8
+ require_relative "fixation/fixtures"
7
9
 
8
10
  module Fixation
9
- class FixtureTable
10
- attr_reader :filename, :class_name, :table_name, :connection, :now
11
-
12
- def initialize(filename, basename, connection, now)
13
- @filename = filename
14
- @connection = connection
15
- @now = now
16
-
17
- @class_name = basename.classify
18
- begin
19
- @klass = @class_name.constantize
20
- @klass = nil unless @klass < ActiveRecord::Base
21
- rescue NameError
22
- ActiveRecord::Base.logger.warn "couldn't load #{class_name} for fixture table #{table_name}: #{$!}"
23
- end
24
-
25
- if @klass
26
- @table_name = @klass.table_name
27
- @primary_key = @klass.primary_key
28
- @record_timestamps = @klass.record_timestamps
29
- @inheritance_column = @klass.inheritance_column
30
- else
31
- @table_name = basename.gsub('/', '_')
32
- end
33
- end
34
-
35
- def columns_hash
36
- @columns_hash ||= connection.columns(table_name).index_by(&:name)
37
- end
38
-
39
- def content
40
- template = File.read(filename)
41
- render_context = ActiveRecord::FixtureSet::RenderContext.create_subclass.new.get_binding
42
- ERB.new(template).result(render_context)
43
- end
44
-
45
- def parsed_rows
46
- result = YAML.load(content)
47
- result ||= {} # for completely empty files
48
-
49
- unless (result.is_a?(Hash) || result.is_a?(YAML::Omap)) && result.all? { |name, attributes| name.is_a?(String) && attributes.is_a?(Hash) }
50
- raise ActiveRecord::Fixture::FormatError, "#{filename} needs to contain a hash of fixtures"
51
- end
52
-
53
- result.delete('DEFAULTS')
54
- result
55
- rescue ArgumentError, Psych::SyntaxError => error
56
- # we use exactly the same error class and message as ActiveRecord::FixtureSet in case anyone was depending on it
57
- raise ActiveRecord::Fixture::FormatError, "a YAML error occurred parsing #{filename}. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html\nThe exact error was:\n #{error.class}: #{error}", error.backtrace
58
- end
59
-
60
- def embellished_rows
61
- @embellished_rows ||= parsed_rows.each do |name, attributes|
62
- embellish_fixture(name, attributes, columns_hash)
63
- end
64
- end
65
-
66
- def embellish_fixture(name, attributes, columns_hash)
67
- # populate the primary key column, if not already set
68
- if @primary_key && columns_hash[@primary_key] && !attributes.has_key?(@primary_key)
69
- attributes[@primary_key] = Fixation.identify(name, columns_hash[@primary_key].type)
70
- end
71
-
72
- # substitute $LABEL into all string values
73
- attributes.each do |column_name, value|
74
- attributes[column_name] = value.gsub("$LABEL", name) if value.is_a?(String)
75
- end
76
-
77
- # populate any timestamp columns, if not already set
78
- if @record_timestamps
79
- %w(created_at updated_at).each do |column_name|
80
- attributes[column_name] = now if columns_hash[column_name] && !attributes.has_key?(column_name)
81
- end
82
- %w(created_at updated_at).each do |column_name|
83
- attributes[column_name] = now.to_date if columns_hash[column_name] && !attributes.has_key?(column_name)
84
- end
85
- end
86
-
87
- # convert enum names to values
88
- @klass.defined_enums.each do |name, values|
89
- attributes[name] = values.fetch(attributes[name], attributes[name]) if attributes.has_key?(name)
90
- end if @klass.respond_to?(:defined_enums)
91
-
92
- # convert any association names into the identity column equivalent - following code from activerecord's fixtures.rb
93
- nonexistant_columns = attributes.keys - columns_hash.keys
94
-
95
- if @klass && nonexistant_columns.present?
96
- # If STI is used, find the correct subclass for association reflection
97
- reflection_class =
98
- if attributes.include?(@inheritance_column)
99
- attributes[@inheritance_column].constantize rescue @klass
100
- else
101
- @klass
102
- end
103
-
104
- nonexistant_columns.each do |column_name|
105
- association = reflection_class.reflect_on_association(column_name)
106
-
107
- if association.nil?
108
- raise ActiveRecord::Fixture::FormatError, "No column named #{column_name} found in table #{table_name}"
109
- elsif association.macro != :belongs_to
110
- raise ActiveRecord::Fixture::FormatError, "Association #{column_name} in table #{table_name} has type #{association.macro}, which is not currently supported"
111
- else
112
- value = attributes.delete(column_name)
113
-
114
- if association.options[:polymorphic] && value.is_a?(String) && value.sub!(/\s*\(([^\)]*)\)\s*$/, "")
115
- # support polymorphic belongs_to as "label (Type)"
116
- attributes[association.foreign_type] = $1
117
- end
118
-
119
- fk_name = (association.options[:foreign_key] || "#{association.name}_id").to_s
120
- attributes[fk_name] = value ? ActiveRecord::FixtureSet.identify(value) : value
121
- end
122
- end
123
- end
124
- end
125
-
126
- def fixture_ids
127
- embellished_rows.each_with_object({}) do |(name, attributes), ids|
128
- ids[name] = attributes['id'] || attributes['uuid']
129
- end
130
- end
131
-
132
- def statements
133
- statements = ["DELETE FROM #{connection.quote_table_name table_name}"]
134
-
135
- unless embellished_rows.empty?
136
- # first figure out what columns we have to insert into; we're going to need to use the same names for
137
- # all rows so we can use the multi-line INSERT syntax
138
- columns_to_include = Set.new
139
- embellished_rows.each do |name, attributes|
140
- attributes.each do |column_name, value|
141
- raise ActiveRecord::Fixture::FormatError, "No column named #{column_name.inspect} found in table #{table_name.inspect} (attribute on fixture #{name.inspect})" unless columns_hash[column_name]
142
- columns_to_include.add(columns_hash[column_name])
143
- end
144
- end
145
-
146
- # now build the INSERT statement
147
- quoted_column_names = columns_to_include.collect { |column| connection.quote_column_name(column.name) }.join(', ')
148
- statements <<
149
- "INSERT INTO #{connection.quote_table_name table_name} (#{quoted_column_names}) VALUES " +
150
- embellished_rows.collect do |name, attributes|
151
- '(' + columns_to_include.collect do |column|
152
- if attributes.has_key?(column.name)
153
- quote_value(column, attributes[column.name])
154
- else
155
- column.default_function || quote_value(column, column.default)
156
- end
157
- end.join(', ') + ')'
158
- end.join(', ')
159
- end
160
-
161
- statements
162
- end
163
-
164
- def quote_value(column, value)
165
- connection.quote(value)
166
- rescue TypeError
167
- connection.quote(YAML.dump(value))
168
- end
169
- end
170
-
171
- class Fixtures
172
- def initialize
173
- @class_names = {}
174
- @fixture_ids = {}
175
- @statements = {}
176
-
177
- compile_fixture_files
178
- end
179
-
180
- def compile_fixture_files(connection = ActiveRecord::Base.connection)
181
- puts "#{Time.now} building fixtures" if Fixation.trace
182
-
183
- now = ActiveRecord::Base.default_timezone == :utc ? Time.now.utc : Time.now
184
- Fixation.paths.each do |path|
185
- Dir["#{path}/{**,*}/*.yml"].each do |pathname|
186
- basename = pathname[path.size + 1..-5]
187
- compile_fixture_file(pathname, basename, connection, now) if ::File.file?(pathname)
188
- end
189
- end
190
-
191
- puts "#{Time.now} built fixtures for #{@fixture_ids.size} tables" if Fixation.trace
192
- end
193
-
194
- def compile_fixture_file(filename, basename, connection, now)
195
- fixture_table = FixtureTable.new(filename, basename, connection, now)
196
- fixture_name = basename.gsub('/', '_')
197
- @fixture_ids[fixture_name] = fixture_table.fixture_ids
198
- @statements[fixture_name] = fixture_table.statements
199
- @class_names[fixture_name] = fixture_table.class_name
200
- end
201
-
202
- def apply_fixtures(connection = ActiveRecord::Base.connection)
203
- connection.transaction do
204
- @statements.each do |table_name, table_statements|
205
- table_statements.each do |statement|
206
- connection.execute(statement)
207
- end
208
- end
209
- end
210
- end
211
-
212
- def fixture_methods
213
- fixture_ids = @fixture_ids
214
- class_names = @class_names
215
-
216
- methods = Module.new do
217
- def setup_fixtures(config = ActiveRecord::Base)
218
- if run_in_transaction?
219
- @@fixated_fixtures_applied ||= false
220
- unless @@fixated_fixtures_applied
221
- puts "#{Time.now} applying fixtures" if Fixation.trace
222
- Fixation.apply_fixtures
223
- @@fixated_fixtures_applied = true
224
- puts "#{Time.now} applied fixtures" if Fixation.trace
225
- end
226
- else
227
- @@fixated_fixtures_applied = false
228
- end
229
- super
230
- end
231
-
232
- fixture_ids.each do |fixture_name, fixtures|
233
- begin
234
- klass = class_names[fixture_name].constantize
235
- rescue NameError
236
- next
237
- end
238
-
239
- define_method(fixture_name) do |*fixture_names|
240
- force_reload = fixture_names.pop if fixture_names.last == true || fixture_names.last == :reload
241
-
242
- @fixture_cache[fixture_name] ||= {}
11
+ # The list of paths to look in to find .yml fixture files.
12
+ cattr_accessor :paths
13
+ self.paths = %w(test/fixtures spec/fixtures)
243
14
 
244
- instances = fixture_names.map do |name|
245
- id = fixtures[name.to_s]
246
- raise StandardError, "No fixture named '#{name}' found for fixture set '#{fixture_name}'" if id.nil?
15
+ # Set to true to clear any tables found in the database that do *not* have a fixture file.
16
+ cattr_accessor :clear_other_tables
247
17
 
248
- @fixture_cache[fixture_name].delete(name) if force_reload
249
- @fixture_cache[fixture_name][name] ||= klass.find(id)
250
- end
251
-
252
- instances.size == 1 ? instances.first : instances
253
- end
254
- private fixture_name
255
- end
256
- end
257
- end
258
- end
18
+ # Set to the list of tables you don't want to clear (if clear_other_tables is turned on).
19
+ # Defaults to just schema_migrations.
20
+ cattr_accessor :tables_not_to_clear
21
+ self.tables_not_to_clear = %w(schema_migrations)
259
22
 
23
+ # Set to true to log some debugging information to stdout.
260
24
  cattr_accessor :trace
261
- cattr_accessor :paths
262
- self.paths = %w(test/fixtures spec/fixtures)
263
25
 
264
26
  def self.build_fixtures
265
27
  @fixtures = Fixtures.new
@@ -0,0 +1,163 @@
1
+ module Fixation
2
+ class FixtureTable
3
+ attr_reader :filename, :class_name, :table_name, :connection, :now
4
+
5
+ def initialize(filename, basename, connection, now)
6
+ @filename = filename
7
+ @connection = connection
8
+ @now = now
9
+
10
+ @class_name = basename.classify
11
+ begin
12
+ @klass = @class_name.constantize
13
+ @klass = nil unless @klass < ActiveRecord::Base
14
+ rescue NameError
15
+ ActiveRecord::Base.logger.warn "couldn't load #{class_name} for fixture table #{table_name}: #{$!}"
16
+ end
17
+
18
+ if @klass
19
+ @table_name = @klass.table_name
20
+ @primary_key = @klass.primary_key
21
+ @record_timestamps = @klass.record_timestamps
22
+ @inheritance_column = @klass.inheritance_column
23
+ else
24
+ @table_name = basename.gsub('/', '_')
25
+ end
26
+ end
27
+
28
+ def columns_hash
29
+ @columns_hash ||= connection.columns(table_name).index_by(&:name)
30
+ end
31
+
32
+ def content
33
+ template = File.read(filename)
34
+ render_context = ActiveRecord::FixtureSet::RenderContext.create_subclass.new.get_binding
35
+ ERB.new(template).result(render_context)
36
+ end
37
+
38
+ def parsed_rows
39
+ result = YAML.load(content)
40
+ result ||= {} # for completely empty files
41
+
42
+ unless (result.is_a?(Hash) || result.is_a?(YAML::Omap)) && result.all? { |name, attributes| name.is_a?(String) && attributes.is_a?(Hash) }
43
+ raise ActiveRecord::Fixture::FormatError, "#{filename} needs to contain a hash of fixtures"
44
+ end
45
+
46
+ result.delete('DEFAULTS')
47
+ result
48
+ rescue ArgumentError, Psych::SyntaxError => error
49
+ # we use exactly the same error class and message as ActiveRecord::FixtureSet in case anyone was depending on it
50
+ raise ActiveRecord::Fixture::FormatError, "a YAML error occurred parsing #{filename}. Please note that YAML must be consistently indented using spaces. Tabs are not allowed. Please have a look at http://www.yaml.org/faq.html\nThe exact error was:\n #{error.class}: #{error}", error.backtrace
51
+ end
52
+
53
+ def embellished_rows
54
+ @embellished_rows ||= parsed_rows.each do |name, attributes|
55
+ embellish_fixture(name, attributes, columns_hash)
56
+ end
57
+ end
58
+
59
+ def embellish_fixture(name, attributes, columns_hash)
60
+ # populate the primary key column, if not already set
61
+ if @primary_key && columns_hash[@primary_key] && !attributes.has_key?(@primary_key)
62
+ attributes[@primary_key] = Fixation.identify(name, columns_hash[@primary_key].type)
63
+ end
64
+
65
+ # substitute $LABEL into all string values
66
+ attributes.each do |column_name, value|
67
+ attributes[column_name] = value.gsub("$LABEL", name) if value.is_a?(String)
68
+ end
69
+
70
+ # populate any timestamp columns, if not already set
71
+ if @record_timestamps
72
+ %w(created_at updated_at).each do |column_name|
73
+ attributes[column_name] = now if columns_hash[column_name] && !attributes.has_key?(column_name)
74
+ end
75
+ %w(created_at updated_at).each do |column_name|
76
+ attributes[column_name] = now.to_date if columns_hash[column_name] && !attributes.has_key?(column_name)
77
+ end
78
+ end
79
+
80
+ # convert enum names to values
81
+ @klass.defined_enums.each do |name, values|
82
+ attributes[name] = values.fetch(attributes[name], attributes[name]) if attributes.has_key?(name)
83
+ end if @klass.respond_to?(:defined_enums)
84
+
85
+ # convert any association names into the identity column equivalent - following code from activerecord's fixtures.rb
86
+ nonexistant_columns = attributes.keys - columns_hash.keys
87
+
88
+ if @klass && nonexistant_columns.present?
89
+ # If STI is used, find the correct subclass for association reflection
90
+ reflection_class =
91
+ if attributes.include?(@inheritance_column)
92
+ attributes[@inheritance_column].constantize rescue @klass
93
+ else
94
+ @klass
95
+ end
96
+
97
+ nonexistant_columns.each do |column_name|
98
+ association = reflection_class.reflect_on_association(column_name)
99
+
100
+ if association.nil?
101
+ raise ActiveRecord::Fixture::FormatError, "No column named #{column_name} found in table #{table_name}"
102
+ elsif association.macro != :belongs_to
103
+ raise ActiveRecord::Fixture::FormatError, "Association #{column_name} in table #{table_name} has type #{association.macro}, which is not currently supported"
104
+ else
105
+ value = attributes.delete(column_name)
106
+
107
+ if association.options[:polymorphic] && value.is_a?(String) && value.sub!(/\s*\(([^\)]*)\)\s*$/, "")
108
+ # support polymorphic belongs_to as "label (Type)"
109
+ attributes[association.foreign_type] = $1
110
+ end
111
+
112
+ fk_name = (association.options[:foreign_key] || "#{association.name}_id").to_s
113
+ attributes[fk_name] = value ? ActiveRecord::FixtureSet.identify(value) : value
114
+ end
115
+ end
116
+ end
117
+ end
118
+
119
+ def fixture_ids
120
+ embellished_rows.each_with_object({}) do |(name, attributes), ids|
121
+ ids[name] = attributes['id'] || attributes['uuid']
122
+ end
123
+ end
124
+
125
+ def statements
126
+ statements = ["DELETE FROM #{connection.quote_table_name table_name}"]
127
+
128
+ unless embellished_rows.empty?
129
+ # first figure out what columns we have to insert into; we're going to need to use the same names for
130
+ # all rows so we can use the multi-line INSERT syntax
131
+ columns_to_include = Set.new
132
+ embellished_rows.each do |name, attributes|
133
+ attributes.each do |column_name, value|
134
+ raise ActiveRecord::Fixture::FormatError, "No column named #{column_name.inspect} found in table #{table_name.inspect} (attribute on fixture #{name.inspect})" unless columns_hash[column_name]
135
+ columns_to_include.add(columns_hash[column_name])
136
+ end
137
+ end
138
+
139
+ # now build the INSERT statement
140
+ quoted_column_names = columns_to_include.collect { |column| connection.quote_column_name(column.name) }.join(', ')
141
+ statements <<
142
+ "INSERT INTO #{connection.quote_table_name table_name} (#{quoted_column_names}) VALUES " +
143
+ embellished_rows.collect do |name, attributes|
144
+ '(' + columns_to_include.collect do |column|
145
+ if attributes.has_key?(column.name)
146
+ quote_value(column, attributes[column.name])
147
+ else
148
+ column.default_function || quote_value(column, column.default)
149
+ end
150
+ end.join(', ') + ')'
151
+ end.join(', ')
152
+ end
153
+
154
+ statements
155
+ end
156
+
157
+ def quote_value(column, value)
158
+ connection.quote(value)
159
+ rescue TypeError
160
+ connection.quote(YAML.dump(value))
161
+ end
162
+ end
163
+ end
@@ -0,0 +1,103 @@
1
+ module Fixation
2
+ class Fixtures
3
+ def initialize
4
+ @class_names = {}
5
+ @fixture_ids = {}
6
+ @statements = {}
7
+
8
+ compile_fixture_files
9
+ end
10
+
11
+ def compile_fixture_files(connection = ActiveRecord::Base.connection)
12
+ puts "#{Time.now} building fixtures" if Fixation.trace
13
+
14
+ now = ActiveRecord::Base.default_timezone == :utc ? Time.now.utc : Time.now
15
+ Fixation.paths.each do |path|
16
+ Dir["#{path}/{**,*}/*.yml"].each do |pathname|
17
+ basename = pathname[path.size + 1..-5]
18
+ compile_fixture_file(pathname, basename, connection, now) if ::File.file?(pathname)
19
+ end
20
+ end
21
+
22
+ puts "#{Time.now} built fixtures for #{@fixture_ids.size} tables" if Fixation.trace
23
+ end
24
+
25
+ def compile_fixture_file(filename, basename, connection, now)
26
+ fixture_table = FixtureTable.new(filename, basename, connection, now)
27
+ fixture_name = basename.gsub('/', '_')
28
+ @fixture_ids[fixture_name] = fixture_table.fixture_ids
29
+ @statements[fixture_name] = fixture_table.statements
30
+ @class_names[fixture_name] = fixture_table.class_name
31
+ end
32
+
33
+ def apply_fixtures(connection = ActiveRecord::Base.connection)
34
+ connection.disable_referential_integrity do
35
+ connection.transaction do
36
+ apply_fixture_statements(connection)
37
+ clear_other_tables(connection) if Fixation.clear_other_tables
38
+ end
39
+ end
40
+ end
41
+
42
+ def apply_fixture_statements(connection)
43
+ @statements.each do |table_name, table_statements|
44
+ table_statements.each do |statement|
45
+ connection.execute(statement)
46
+ end
47
+ end
48
+ end
49
+
50
+ def clear_other_tables(connection)
51
+ (connection.tables - Fixation.tables_not_to_clear - @statements.keys).each do |table_name|
52
+ connection.execute("DELETE FROM #{connection.quote_table_name table_name}")
53
+ end
54
+ end
55
+
56
+ def fixture_methods
57
+ fixture_ids = @fixture_ids
58
+ class_names = @class_names
59
+
60
+ methods = Module.new do
61
+ def setup_fixtures(config = ActiveRecord::Base)
62
+ if run_in_transaction?
63
+ @@fixated_fixtures_applied ||= false
64
+ unless @@fixated_fixtures_applied
65
+ puts "#{Time.now} applying fixtures" if Fixation.trace
66
+ Fixation.apply_fixtures
67
+ @@fixated_fixtures_applied = true
68
+ puts "#{Time.now} applied fixtures" if Fixation.trace
69
+ end
70
+ else
71
+ @@fixated_fixtures_applied = false
72
+ end
73
+ super
74
+ end
75
+
76
+ fixture_ids.each do |fixture_name, fixtures|
77
+ begin
78
+ klass = class_names[fixture_name].constantize
79
+ rescue NameError
80
+ next
81
+ end
82
+
83
+ define_method(fixture_name) do |*fixture_names|
84
+ force_reload = fixture_names.pop if fixture_names.last == true || fixture_names.last == :reload
85
+
86
+ @fixture_cache[fixture_name] ||= {}
87
+
88
+ instances = fixture_names.map do |name|
89
+ id = fixtures[name.to_s]
90
+ raise StandardError, "No fixture named '#{name}' found for fixture set '#{fixture_name}'" if id.nil?
91
+
92
+ @fixture_cache[fixture_name].delete(name) if force_reload
93
+ @fixture_cache[fixture_name][name] ||= klass.find(id)
94
+ end
95
+
96
+ instances.size == 1 ? instances.first : instances
97
+ end
98
+ private fixture_name
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
@@ -1,3 +1,3 @@
1
1
  module Fixation
2
- VERSION = "1.3.0"
2
+ VERSION = "2.0.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fixation
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 2.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Will Bryant
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-07-20 00:00:00.000000000 Z
11
+ date: 2016-08-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -57,6 +57,8 @@ files:
57
57
  - bin/setup
58
58
  - fixation.gemspec
59
59
  - lib/fixation.rb
60
+ - lib/fixation/fixture_table.rb
61
+ - lib/fixation/fixtures.rb
60
62
  - lib/fixation/version.rb
61
63
  homepage: https://github.com/willbryant/fixation
62
64
  licenses:
@@ -78,7 +80,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
80
  version: '0'
79
81
  requirements: []
80
82
  rubyforge_project:
81
- rubygems_version: 2.2.5
83
+ rubygems_version: 2.5.1
82
84
  signing_key:
83
85
  specification_version: 4
84
86
  summary: 10x faster fixture startup under spring.