flex_columns 1.0.3 → 1.0.4

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
- ---
2
- SHA1:
3
- metadata.gz: 2875989d866789ac577e31552738fa6466139eb0
4
- data.tar.gz: 0976a94f461db06c5157dce3e0831ff5ce07c1c7
5
- SHA512:
6
- metadata.gz: c6605b81107eacb261547aaa2f0f1ebd5110f65b09ff7166c2f15cb104019e2fc696db59dfc72f4e796359b81ed3dca6f62baff7d857d3cfe35535e5fda1b105
7
- data.tar.gz: 61c57838d0b1b06a19775e8f00f70edbdecf56d6fc8a4185d5ebed273a40c1cbd91e324e7c797c55fb92b4fa1449dfd2efaf7076a3a3133cee7bc5ea4941830f
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 6beca81659e3d23049cba155f6991641af01d31e
4
+ data.tar.gz: 5c476c72d15bd39871ae3e46bbab7b9d9b66d40c
5
+ SHA512:
6
+ metadata.gz: e33340f20bc94ab8aa1e097a0533ea6e03ad019fe53f9dfee95dbf78997f3a450bb24f72118278f38cee8822bb4280398a9bd5d8439392f829e51c6de503dfc2
7
+ data.tar.gz: 08aeb48a67d3b06146e9ccf1a39e210d55e0ade0f4a82ddbad1f7303d21cfe409831513bfc4b11533f7f418540f045ae362828ab10cc8f2d89ae6e421838382a
data/CHANGES.md ADDED
@@ -0,0 +1,6 @@
1
+ # `flex_columns` Changelog
2
+
3
+ ## 1.0.4, 2014-03-31
4
+
5
+ * Fixed an incompatibility with Rails 4.0.3 or 4.0.4 due to a change in the way ActiveRecord::Base#method missing works. The way we were handling this (by double-implementing `_flex_column_object_for` and trying to use `super` to delegate one to the other) was pretty gross, anyway; this fix is much more solid.
6
+ * Fixed a problem where `flex_columns` would raise an exception if the underlying table didn't exist. This could cause problems trying to migrate a table into existence when its model already existed and declared a flex column.
@@ -12,6 +12,21 @@ module FlexColumns
12
12
  module Base
13
13
  extend ActiveSupport::Concern
14
14
 
15
+ # There are two ways you can end up with a flex-column object for a particular column name: either because your
16
+ # model class declared that column as a flex column directly, or because you included flex columns from a model
17
+ # that has that column declared as a flex column. This method allows us to dispatch to either, and correctly
18
+ # returns the 'owned' object in preference if necessary.
19
+ #
20
+ # We used to use some complex magic with +super+ and defined a method of this name both in
21
+ # FlexColumns::Including::IncludeFlexColumns and FlexColumns::HasFlexColumns, but Rails 4.0.3 or 4.0.4 broke that
22
+ # due to some rejiggery in ActiveRecord::Base#method_missing. This seems like a significantly cleaner approach
23
+ # anyway.
24
+ def _flex_column_object_for(column_name, create_if_needed = true)
25
+ return _flex_column_owned_object_for(column_name, create_if_needed) if respond_to?(:_flex_column_owned_object_for)
26
+ return _flex_column_included_object_for(column_name) if respond_to?(:_flex_column_included_object_for)
27
+ raise "FlexColumns: class #{self.class.name} seems to have no flex-column object for column #{column_name.inspect}, even though it internally asked for one; this is almost certainly a bug in the FlexColumns RubyGem. Please report it, and accept our apologies."
28
+ end
29
+
15
30
  module ClassMethods
16
31
  # Does this class have any flex columns? FlexColumns::HasFlexColumns overrides this to return +true+.
17
32
  def has_any_flex_columns?
@@ -45,18 +45,10 @@ module FlexColumns
45
45
  # Returns the correct flex-column object for the given column name. This simply creates an instance of the
46
46
  # appropriate flex-column class, and saves it away so it will be returned again if someone requests the object for
47
47
  # the same column later.
48
- def _flex_column_object_for(column_name, create_if_needed = true)
49
- # It's possible to end up with two copies of this method on a class, if that class both has a flex column of its
50
- # own _and_ includes one via FlexColumns::Including::IncludeFlexColumns#include_flex_columns_from. If so, we want
51
- # each method to defer to the other one, so that both will work.
52
- begin
53
- return super(column_name)
54
- rescue NoMethodError
55
- # ok
56
- rescue FlexColumns::Errors::NoSuchColumnError
57
- # ok
58
- end
59
-
48
+ #
49
+ # This method almost never gets invoked directly; instead, everything calls it via
50
+ # FlexColumns::ActiveRecord::Base#_flex_column_object_for.
51
+ def _flex_column_owned_object_for(column_name, create_if_needed = true)
60
52
  column_name = self.class._flex_column_normalize_name(column_name)
61
53
 
62
54
  out = _flex_column_objects[column_name]
@@ -185,6 +177,8 @@ it has flex columns named: #{_all_flex_column_names.sort_by(&:to_s).inspect}.}
185
177
  # FlexColumns::Definition::FlexColumnContentsClass#setup!, and so can contain any of the options that that method
186
178
  # accepts. The block, if passed, will be evaluated in the context of the generated class.
187
179
  def flex_column(flex_column_name, options = { }, &block)
180
+ return unless table_exists?
181
+
188
182
  flex_column_name = _flex_column_normalize_name(flex_column_name)
189
183
 
190
184
  new_class = Class.new(FlexColumns::Contents::FlexColumnContentsBase)
@@ -49,7 +49,8 @@ module FlexColumns
49
49
  # Make sure our ClassMethods module gets +extend+ed into any class that +include+s us.
50
50
  extend ActiveSupport::Concern
51
51
 
52
- # This is the method that gets called by generated delegated methods, and called in order to retrieve the
52
+ # This is the method that gets called by generated delegated methods via
53
+ # FlexColumns::ActiveRecord::Base#_flex_column_object_for, and called in order to retrieve the
53
54
  # correct flex-column object for a column. In other words, the generated method User#background_color looks
54
55
  # something like:
55
56
  #
@@ -57,24 +58,7 @@ module FlexColumns
57
58
  # flex_column_object = _flex_column_object_for(:details)
58
59
  # flex_column_object.background_color
59
60
  # end
60
- #
61
- # (We do this partially so that the exact same method definition works for UserDetail and for User; _i.e._,
62
- # whether you're running on a class that itself has a flex column, or on a class that simply is including another
63
- # class's flex columns, #_flex_column_object_for will get you the right object.)
64
- #
65
- # There's only one nasty case to deal with here: what if User has its own flex column +detail+? In such a case, we
66
- # want to return the flex-column object that's defined for the column the class has itself, not for the one it's
67
- # including.
68
- def _flex_column_object_for(column_name)
69
- # This is the "nasty case", above.
70
- begin
71
- return super(column_name)
72
- rescue NoMethodError
73
- # ok
74
- rescue FlexColumns::Errors::NoSuchColumnError
75
- # ok
76
- end
77
-
61
+ def _flex_column_included_object_for(column_name)
78
62
  # Fetch the association that this column is included from.
79
63
  association = self.class._flex_column_is_included_from(column_name)
80
64
 
@@ -1,4 +1,4 @@
1
1
  module FlexColumns
2
2
  # The current version of FlexColumns.
3
- VERSION = "1.0.3"
3
+ VERSION = "1.0.4"
4
4
  end
@@ -15,6 +15,17 @@ describe "FlexColumns basic operations" do
15
15
  drop_standard_system_spec_tables!
16
16
  end
17
17
 
18
+ it "should not blow up if the underlying table doesn't exist" do
19
+ class ::Foo < ::ActiveRecord::Base
20
+ self.table_name = 'flexcols_does_not_exist'
21
+
22
+ flex_column :foo do
23
+ field :att1
24
+ field :att2
25
+ end
26
+ end
27
+ end
28
+
18
29
  it "should let you redefine flex columns, and obey the new settings" do
19
30
  class ::User < ::ActiveRecord::Base
20
31
  self.table_name = 'flexcols_spec_users'
@@ -26,6 +26,14 @@ describe FlexColumns::HasFlexColumns do
26
26
  def before_save_calls
27
27
  @_before_save_calls
28
28
  end
29
+
30
+ def table_exists?
31
+ true
32
+ end
33
+ end
34
+
35
+ def _flex_column_object_for(column_name, create_if_needed = true)
36
+ _flex_column_owned_object_for(column_name, create_if_needed)
29
37
  end
30
38
  end
31
39
 
@@ -52,6 +60,11 @@ describe FlexColumns::HasFlexColumns do
52
60
  end
53
61
 
54
62
  describe "#flex_column" do
63
+ it "should do nothing if the table doesn't exist" do
64
+ allow(@klass).to receive(:table_exists?).with().and_return(false)
65
+ @klass.flex_column('foo')
66
+ end
67
+
55
68
  it "should normalize the name of the column" do
56
69
  fcc = double("fcc")
57
70
  expect(Class).to receive(:new).once.with(FlexColumns::Contents::FlexColumnContentsBase).and_return(fcc)
@@ -225,7 +238,7 @@ describe FlexColumns::HasFlexColumns do
225
238
 
226
239
  fcc_foo_instance = double("fcc_foo_instance")
227
240
  expect(@fcc_foo).to receive(:new).once.with(instance).and_return(fcc_foo_instance)
228
- instance._flex_column_object_for(:foo).should be(fcc_foo_instance)
241
+ instance._flex_column_owned_object_for(:foo).should be(fcc_foo_instance)
229
242
  allow(fcc_foo_instance).to receive(:deserialized?).with().and_return(false)
230
243
 
231
244
  expect(fcc_foo_instance).to receive(:before_validation!).once.with()
@@ -234,7 +247,7 @@ describe FlexColumns::HasFlexColumns do
234
247
 
235
248
  fcc_bar_instance = double("fcc_bar_instance")
236
249
  expect(@fcc_bar).to receive(:new).once.with(instance).and_return(fcc_bar_instance)
237
- instance._flex_column_object_for(:bar).should be(fcc_bar_instance)
250
+ instance._flex_column_owned_object_for(:bar).should be(fcc_bar_instance)
238
251
  allow(fcc_bar_instance).to receive(:deserialized?).with().and_return(true)
239
252
 
240
253
  expect(fcc_foo_instance).to receive(:before_validation!).once.with()
@@ -257,7 +270,7 @@ describe FlexColumns::HasFlexColumns do
257
270
 
258
271
  fcc_foo_instance = double("fcc_foo_instance")
259
272
  expect(@fcc_foo).to receive(:new).once.with(instance).and_return(fcc_foo_instance)
260
- instance._flex_column_object_for(:foo).should be(fcc_foo_instance)
273
+ instance._flex_column_owned_object_for(:foo).should be(fcc_foo_instance)
261
274
  allow(@fcc_foo).to receive(:requires_serialization_on_save?).with(instance).and_return(false)
262
275
 
263
276
  instance._flex_columns_before_save!
@@ -265,7 +278,7 @@ describe FlexColumns::HasFlexColumns do
265
278
 
266
279
  fcc_bar_instance = double("fcc_bar_instance")
267
280
  expect(@fcc_bar).to receive(:new).once.with(instance).and_return(fcc_bar_instance)
268
- instance._flex_column_object_for(:bar).should be(fcc_bar_instance)
281
+ instance._flex_column_owned_object_for(:bar).should be(fcc_bar_instance)
269
282
  allow(@fcc_bar).to receive(:requires_serialization_on_save?).with(instance).and_return(true)
270
283
 
271
284
  expect(fcc_bar_instance).to receive(:before_save!).once.with()
@@ -323,14 +336,14 @@ describe FlexColumns::HasFlexColumns do
323
336
 
324
337
  fcc_foo_instance = double("fcc_foo_instance")
325
338
  expect(@fcc_foo).to receive(:new).once.with(instance).and_return(fcc_foo_instance)
326
- instance._flex_column_object_for(:foo).should be(fcc_foo_instance)
339
+ instance._flex_column_owned_object_for(:foo).should be(fcc_foo_instance)
327
340
 
328
341
  fcc_bar_instance = double("fcc_bar_instance")
329
342
  expect(@fcc_bar).to receive(:new).once.with(instance).and_return(fcc_bar_instance)
330
- instance._flex_column_object_for(:bar).should be(fcc_bar_instance)
343
+ instance._flex_column_owned_object_for(:bar).should be(fcc_bar_instance)
331
344
 
332
- instance._flex_column_object_for(:foo).should be(fcc_foo_instance)
333
- instance._flex_column_object_for(' bAr ').should be(fcc_bar_instance)
345
+ instance._flex_column_owned_object_for(:foo).should be(fcc_foo_instance)
346
+ instance._flex_column_owned_object_for(' bAr ').should be(fcc_bar_instance)
334
347
  end
335
348
 
336
349
  it "should re-create flex-column objects on reload, and call super and return its value" do
@@ -350,14 +363,14 @@ describe FlexColumns::HasFlexColumns do
350
363
 
351
364
  fcc_foo_instance = double("fcc_foo_instance")
352
365
  expect(@fcc_foo).to receive(:new).once.with(instance).and_return(fcc_foo_instance)
353
- instance._flex_column_object_for(:foo).should be(fcc_foo_instance)
366
+ instance._flex_column_owned_object_for(:foo).should be(fcc_foo_instance)
354
367
 
355
368
  fcc_bar_instance = double("fcc_bar_instance")
356
369
  expect(@fcc_bar).to receive(:new).once.with(instance).and_return(fcc_bar_instance)
357
- instance._flex_column_object_for(:bar).should be(fcc_bar_instance)
370
+ instance._flex_column_owned_object_for(:bar).should be(fcc_bar_instance)
358
371
 
359
- instance._flex_column_object_for(:foo).should be(fcc_foo_instance)
360
- instance._flex_column_object_for(:bar).should be(fcc_bar_instance)
372
+ instance._flex_column_owned_object_for(:foo).should be(fcc_foo_instance)
373
+ instance._flex_column_owned_object_for(:bar).should be(fcc_bar_instance)
361
374
 
362
375
  instance.reloads.should == 0
363
376
  instance.reload.should == :reload_return_yo
@@ -365,11 +378,11 @@ describe FlexColumns::HasFlexColumns do
365
378
 
366
379
  fcc_foo_instance_2 = double("fcc_foo_instance_2")
367
380
  expect(@fcc_foo).to receive(:new).once.with(instance).and_return(fcc_foo_instance_2)
368
- instance._flex_column_object_for(:foo).should be(fcc_foo_instance_2)
381
+ instance._flex_column_owned_object_for(:foo).should be(fcc_foo_instance_2)
369
382
 
370
383
  fcc_bar_instance_2 = double("fcc_bar_instance_2")
371
384
  expect(@fcc_bar).to receive(:new).once.with(instance).and_return(fcc_bar_instance_2)
372
- instance._flex_column_object_for(:bar).should be(fcc_bar_instance_2)
385
+ instance._flex_column_owned_object_for(:bar).should be(fcc_bar_instance_2)
373
386
  end
374
387
 
375
388
  it "should tell you what flex-column names have been defined" do
@@ -407,22 +420,4 @@ describe FlexColumns::HasFlexColumns do
407
420
  @klass.create_flex_objects_from(:bar, [ nil, " JSON string " ]).should == [ fcc_bar_instance_1, fcc_bar_instance_2 ]
408
421
  end
409
422
  end
410
-
411
- describe "flex-column objects" do
412
- it "should prefer to just return super from _flex_column_object_for" do
413
- superclass = Class.new do
414
- def _flex_column_object_for(x)
415
- "A_#{x}_Z"
416
- end
417
- end
418
-
419
- subclass = Class.new(superclass)
420
- allow(subclass).to receive(:before_validation).with(:_flex_columns_before_validation!)
421
- allow(subclass).to receive(:before_save).with(:_flex_columns_before_save!)
422
- subclass.send(:include, FlexColumns::HasFlexColumns)
423
-
424
- instance = subclass.new
425
- instance._flex_column_object_for(:foo).should == "A_foo_Z"
426
- end
427
- end
428
423
  end
@@ -5,28 +5,13 @@ describe FlexColumns::Including::IncludeFlexColumns do
5
5
  @klass = Class.new { include FlexColumns::Including::IncludeFlexColumns }
6
6
  end
7
7
 
8
- describe "#_flex_column_object_for" do
9
- it "should return the superclass value if it has one" do
10
- superclass = Class.new do
11
- def _flex_column_object_for(column_name)
12
- "XX#{column_name}YY"
13
- end
14
- end
15
-
16
- klass = Class.new(superclass) do
17
- include FlexColumns::Including::IncludeFlexColumns
18
- end
19
-
20
- instance = klass.new
21
- instance._flex_column_object_for("foobar").should == "XXfoobarYY"
22
- end
23
-
8
+ describe "#_flex_column_included_object_for" do
24
9
  it "should raise an error if there is no appropriate association" do
25
10
  allow(@klass).to receive(:_flex_column_is_included_from).with(:foo).and_return(nil)
26
11
  allow(@klass).to receive(:name).with().and_return("klassname")
27
12
  instance = @klass.new
28
13
 
29
- lambda { instance._flex_column_object_for(:foo) }.should raise_error(FlexColumns::Errors::NoSuchColumnError, /klassname.*foo/i)
14
+ lambda { instance._flex_column_included_object_for(:foo) }.should raise_error(FlexColumns::Errors::NoSuchColumnError, /klassname.*foo/i)
30
15
  end
31
16
 
32
17
  it "should invoke the right method on the right object if the association is already there" do
@@ -37,7 +22,7 @@ describe FlexColumns::Including::IncludeFlexColumns do
37
22
  allow(instance).to receive(:assocname).with().and_return(association_object)
38
23
  allow(association_object).to receive(:colname).and_return(:baz)
39
24
 
40
- instance._flex_column_object_for(:colname).should == :baz
25
+ instance._flex_column_included_object_for(:colname).should == :baz
41
26
  end
42
27
 
43
28
  it "should create the associated object if necessary" do
@@ -49,7 +34,7 @@ describe FlexColumns::Including::IncludeFlexColumns do
49
34
  allow(instance).to receive(:build_assocname).with().and_return(association_object)
50
35
  allow(association_object).to receive(:colname).and_return(:baz)
51
36
 
52
- instance._flex_column_object_for(:colname).should == :baz
37
+ instance._flex_column_included_object_for(:colname).should == :baz
53
38
  end
54
39
  end
55
40
 
metadata CHANGED
@@ -1,176 +1,102 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: flex_columns
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.3
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.4
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Andrew Geweke
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-28 00:00:00.000000000 Z
12
- dependencies:
13
- - !ruby/object:Gem::Dependency
11
+
12
+ date: 2014-03-31 00:00:00 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
14
15
  name: json
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - '>='
18
- - !ruby/object:Gem::Version
19
- version: '0'
20
- type: :runtime
21
16
  prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - '>='
25
- - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
17
+ requirement: &id001 !ruby/object:Gem::Requirement
18
+ requirements:
19
+ - &id003
20
+ - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ type: :runtime
24
+ version_requirements: *id001
25
+ - !ruby/object:Gem::Dependency
28
26
  name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ~>
32
- - !ruby/object:Gem::Version
33
- version: '1.3'
34
- type: :development
35
27
  prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
28
+ requirement: &id002 !ruby/object:Gem::Requirement
29
+ requirements:
38
30
  - - ~>
39
- - !ruby/object:Gem::Version
40
- version: '1.3'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - '>='
46
- - !ruby/object:Gem::Version
47
- version: '0'
31
+ - !ruby/object:Gem::Version
32
+ version: "1.3"
48
33
  type: :development
34
+ version_requirements: *id002
35
+ - !ruby/object:Gem::Dependency
36
+ name: rake
49
37
  prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - '>='
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ~>
60
- - !ruby/object:Gem::Version
61
- version: '2.14'
38
+ requirement: &id004 !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - *id003
62
41
  type: :development
42
+ version_requirements: *id004
43
+ - !ruby/object:Gem::Dependency
44
+ name: rspec
63
45
  prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
46
+ requirement: &id005 !ruby/object:Gem::Requirement
47
+ requirements:
66
48
  - - ~>
67
- - !ruby/object:Gem::Version
68
- version: '2.14'
69
- - !ruby/object:Gem::Dependency
70
- name: pry
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - '>='
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - '>='
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: pry-debugger
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - '>='
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - '>='
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: pry-stack_explorer
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - '>='
102
- - !ruby/object:Gem::Version
103
- version: '0'
49
+ - !ruby/object:Gem::Version
50
+ version: "2.14"
104
51
  type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - '>='
109
- - !ruby/object:Gem::Version
110
- version: '0'
111
- - !ruby/object:Gem::Dependency
52
+ version_requirements: *id005
53
+ - !ruby/object:Gem::Dependency
112
54
  name: activerecord
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - '>='
116
- - !ruby/object:Gem::Version
117
- version: '3.0'
118
- - - <=
119
- - !ruby/object:Gem::Version
120
- version: 4.99.99
121
- type: :runtime
122
55
  prerelease: false
123
- version_requirements: !ruby/object:Gem::Requirement
124
- requirements:
125
- - - '>='
126
- - !ruby/object:Gem::Version
127
- version: '3.0'
128
- - - <=
129
- - !ruby/object:Gem::Version
130
- version: 4.99.99
131
- - !ruby/object:Gem::Dependency
132
- name: activesupport
133
- requirement: !ruby/object:Gem::Requirement
134
- requirements:
135
- - - '>='
136
- - !ruby/object:Gem::Version
137
- version: '3.0'
56
+ requirement: &id006 !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: "3.0"
138
61
  - - <=
139
- - !ruby/object:Gem::Version
62
+ - !ruby/object:Gem::Version
140
63
  version: 4.99.99
141
64
  type: :runtime
65
+ version_requirements: *id006
66
+ - !ruby/object:Gem::Dependency
67
+ name: activesupport
142
68
  prerelease: false
143
- version_requirements: !ruby/object:Gem::Requirement
144
- requirements:
145
- - - '>='
146
- - !ruby/object:Gem::Version
147
- version: '3.0'
69
+ requirement: &id007 !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ version: "3.0"
148
74
  - - <=
149
- - !ruby/object:Gem::Version
75
+ - !ruby/object:Gem::Version
150
76
  version: 4.99.99
151
- - !ruby/object:Gem::Dependency
77
+ type: :runtime
78
+ version_requirements: *id007
79
+ - !ruby/object:Gem::Dependency
152
80
  name: mysql2
153
- requirement: !ruby/object:Gem::Requirement
154
- requirements:
155
- - - '>='
156
- - !ruby/object:Gem::Version
157
- version: '0'
158
- type: :development
159
81
  prerelease: false
160
- version_requirements: !ruby/object:Gem::Requirement
161
- requirements:
162
- - - '>='
163
- - !ruby/object:Gem::Version
164
- version: '0'
82
+ requirement: &id008 !ruby/object:Gem::Requirement
83
+ requirements:
84
+ - *id003
85
+ type: :development
86
+ version_requirements: *id008
165
87
  description: Schema-free, structured JSON storage inside a RDBMS.
166
- email:
88
+ email:
167
89
  - andrew@geweke.org
168
90
  executables: []
91
+
169
92
  extensions: []
93
+
170
94
  extra_rdoc_files: []
171
- files:
95
+
96
+ files:
172
97
  - .gitignore
173
98
  - .travis.yml
99
+ - CHANGES.md
174
100
  - Gemfile
175
101
  - LICENSE.txt
176
102
  - README.md
@@ -218,30 +144,29 @@ files:
218
144
  - spec/flex_columns/unit/util/dynamic_methods_module_spec.rb
219
145
  - spec/flex_columns/unit/util/string_utils_spec.rb
220
146
  homepage: https://github.com/ageweke/flex_columns
221
- licenses:
147
+ licenses:
222
148
  - MIT
223
149
  metadata: {}
150
+
224
151
  post_install_message:
225
152
  rdoc_options: []
226
- require_paths:
153
+
154
+ require_paths:
227
155
  - lib
228
- required_ruby_version: !ruby/object:Gem::Requirement
229
- requirements:
230
- - - '>='
231
- - !ruby/object:Gem::Version
232
- version: '0'
233
- required_rubygems_version: !ruby/object:Gem::Requirement
234
- requirements:
235
- - - '>='
236
- - !ruby/object:Gem::Version
237
- version: '0'
156
+ required_ruby_version: !ruby/object:Gem::Requirement
157
+ requirements:
158
+ - *id003
159
+ required_rubygems_version: !ruby/object:Gem::Requirement
160
+ requirements:
161
+ - *id003
238
162
  requirements: []
163
+
239
164
  rubyforge_project:
240
- rubygems_version: 2.2.1
165
+ rubygems_version: 2.0.14
241
166
  signing_key:
242
167
  specification_version: 4
243
168
  summary: Schema-free, structured JSON storage inside a RDBMS.
244
- test_files:
169
+ test_files:
245
170
  - spec/flex_columns/helpers/database_helper.rb
246
171
  - spec/flex_columns/helpers/exception_helpers.rb
247
172
  - spec/flex_columns/helpers/system_helpers.rb
@@ -270,4 +195,3 @@ test_files:
270
195
  - spec/flex_columns/unit/including/include_flex_columns_spec.rb
271
196
  - spec/flex_columns/unit/util/dynamic_methods_module_spec.rb
272
197
  - spec/flex_columns/unit/util/string_utils_spec.rb
273
- has_rdoc: