active_finite 0.3.2 → 0.4.1

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.
data/Gemfile CHANGED
@@ -5,21 +5,21 @@ source "http://rubygems.org"
5
5
 
6
6
  # Add dependencies to develop your gem here.
7
7
  # Include everything needed to run rake, tests, features, etc.
8
- gem "activesupport", "~> 3.0.3"
9
- gem "activerecord", "~> 3.0.3"
10
- gem "json", "~> 1.5.1"
8
+ gem "activesupport", ">= 3.0.3"
9
+ gem "activerecord", ">= 3.0.3"
10
+ gem "json", ">= 1.5.1"
11
11
 
12
12
  group :development do
13
- gem "rspec", "~> 2.3.0"
14
- gem "bundler", "~> 1.0.0"
15
- gem "jeweler", "~> 1.5.2"
16
- gem "ruby-debug19", "~> 0.11.6"
13
+ gem "rspec", ">= 2.3.0"
14
+ gem "bundler", ">= 1.0.0"
15
+ gem "jeweler", ">= 1.5.2"
16
+ gem "ruby-debug19", ">= 0.11.6"
17
17
  end
18
18
 
19
19
  group :test do
20
- gem "rspec", "~> 2.3.0"
21
- gem 'sqlite3-ruby', '1.3.3', :require => 'sqlite3'
22
- gem "activesupport", "~> 3.0.3"
23
- gem "activerecord", "~> 3.0.3"
20
+ gem "rspec", ">= 2.3.0"
21
+ gem 'sqlite3-ruby', '>= 1.3.3', :require => 'sqlite3'
22
+ gem "activesupport", ">= 3.0.3"
23
+ gem "activerecord", ">= 3.0.3"
24
24
  end
25
25
 
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.2
1
+ 0.4.1
data/lib/active_finite.rb CHANGED
@@ -1,8 +1,8 @@
1
1
  require_relative 'external_includes.rb'
2
2
  require_relative 'master_table.rb'
3
- require_relative 'get_table.rb'
3
+ require_relative 'get_finite.rb'
4
4
 
5
- def all_finite_tables
5
+ def all_finites
6
6
  MasterTable.all
7
7
  end
8
8
 
@@ -75,7 +75,7 @@ def modify_finite args
75
75
  to_be_modified = to_be_modified.concat JSON.load open file_name
76
76
  end
77
77
 
78
- klass = get_table table_name
78
+ klass = get_finite table_name, :do_not_redefine_accessor
79
79
  ActiveRecord::Base.transaction do
80
80
  yield to_be_modified, klass, column_name
81
81
  end
data/lib/get_finite.rb ADDED
@@ -0,0 +1,30 @@
1
+ require 'external_includes'
2
+ require_relative 'as_class_name.rb'
3
+ require_relative 'get_finite.rb'
4
+
5
+ def get_finite sym, *args
6
+ class_name = as_class_name sym
7
+ class_not_defined = not(Object.const_defined? class_name)
8
+ should_force = args.any? {|x| x == :force}
9
+ if class_not_defined or should_force
10
+ anon = Class.new ActiveRecord::Base
11
+ Object.const_set class_name, anon
12
+ else
13
+ anon = Object.const_get class_name
14
+ end
15
+ if anon.respond_to? :table_exists? and anon.table_exists?
16
+ anon.class_eval do
17
+ method_name = anon.send(:new).attributes.keys[0]
18
+ define_method(:get_value) do
19
+ self.send method_name
20
+ end
21
+ define_method(:set_with_existing_value) do |value|
22
+ result = anon.send 'find_by_' + method_name + '!', value
23
+ self.send anon.primary_key + '=', result.send(anon.primary_key)
24
+ self.send method_name + '=', result.send(method_name)
25
+ end
26
+ end
27
+ end
28
+ anon
29
+ end
30
+
data/lib/master_table.rb CHANGED
@@ -1,4 +1,4 @@
1
- require_relative 'get_table.rb'
1
+ require_relative 'get_finite.rb'
2
2
  require_relative 'external_includes.rb'
3
3
 
4
4
  module MasterTable
@@ -9,14 +9,14 @@ module MasterTable
9
9
  default_column_name self.table_name
10
10
  end
11
11
  def self.table
12
- get_table self.table_name
12
+ get_finite self.table_name, :do_not_redefine_accessor
13
13
  end
14
14
  def self.all
15
15
  if self.table.table_exists?
16
16
  self.table
17
17
  .all
18
18
  .collect {|x| x.send self.column_name.to_s}
19
- .collect {|x| get_table x}
19
+ .collect {|x| get_finite x}
20
20
  else
21
21
  []
22
22
  end
@@ -9,29 +9,44 @@ def reconnect
9
9
  :timeout => 5000)
10
10
  end
11
11
 
12
- describe 'get_table' do
12
+ describe 'get_finite' do
13
13
  before :each do
14
14
  reconnect
15
15
  end
16
16
  it 'returns a class that is a child of active record base' do
17
- get_table(:test).superclass.should eql ActiveRecord::Base
17
+ get_finite(:test).superclass.should eql ActiveRecord::Base
18
18
  end
19
19
  it 'brings a class into scope' do
20
- get_table :spaces
20
+ get_finite :spaces
21
21
  Object.const_defined?(:Space).should be true
22
22
  end
23
23
  it 'will not redefine a previously defined constant' do
24
24
  Define = true
25
- get_table :defines
25
+ get_finite :defines
26
26
  Define.should == true
27
27
  end
28
28
  it 'will redefine a previously defined constant with the force option' do
29
29
  Anyway = true
30
- get_table :anyways, :force
30
+ get_finite :anyways, :force
31
31
  Anyway.should_not == true
32
32
  end
33
+
34
+ it 'has a shortcut method to set with an existing value' do
35
+ add_finites in_table: :colors, values: ['red', 'blue']
36
+ color = get_finite(:colors).first
37
+ color.id.should eql 1
38
+ color.set_with_existing_value 'blue'
39
+ color.id.should eql 2
40
+ end
41
+
42
+ it 'has a method to get a value polymorphic to all finites' do
43
+ add_finites in_table: :colors, values: ['red', 'blue']
44
+ color = get_finite(:colors).first
45
+ color.get_value.should eql 'red'
46
+ end
33
47
  end
34
48
 
49
+
35
50
  describe 'all_finite_tables' do
36
51
  before :each do
37
52
  reconnect
@@ -53,8 +68,8 @@ describe 'all_finite_tables' do
53
68
  end
54
69
  end
55
70
  add_finites in_table: :things,
56
- column_name: :column,
57
- values: ['1']
71
+ column_name: :column,
72
+ values: ['1']
58
73
 
59
74
  all_finite_tables.should == [Thing]
60
75
  end
@@ -71,10 +86,10 @@ describe 'all_finite_tables' do
71
86
  u = Thing.new
72
87
  u.column = "bye"
73
88
  u.save
74
-
89
+
75
90
  delete_finites in_table: :things,
76
- column_name: :column,
77
- values: ["bye"]
91
+ column_name: :column,
92
+ values: ["bye"]
78
93
 
79
94
  all_finite_tables.should eql [Thing]
80
95
  end
@@ -142,7 +157,7 @@ describe 'add_finites' do
142
157
  add_finites in_table: :wu_members, values: ['gza', nil]
143
158
  rescue
144
159
  ['gza'].each do |w|
145
- get_table(:wu_members)
160
+ get_finite(:wu_members)
146
161
  .where(:wu_member_value => w).limit(1).first.should nil
147
162
  end
148
163
  end
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: active_finite
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.3.2
5
+ version: 0.4.1
6
6
  platform: ruby
7
7
  authors:
8
8
  - me
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-07-10 00:00:00 -04:00
13
+ date: 2011-07-16 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirement: &id001 !ruby/object:Gem::Requirement
19
19
  none: false
20
20
  requirements:
21
- - - ~>
21
+ - - ">="
22
22
  - !ruby/object:Gem::Version
23
23
  version: 3.0.3
24
24
  type: :runtime
@@ -29,7 +29,7 @@ dependencies:
29
29
  requirement: &id002 !ruby/object:Gem::Requirement
30
30
  none: false
31
31
  requirements:
32
- - - ~>
32
+ - - ">="
33
33
  - !ruby/object:Gem::Version
34
34
  version: 3.0.3
35
35
  type: :runtime
@@ -40,7 +40,7 @@ dependencies:
40
40
  requirement: &id003 !ruby/object:Gem::Requirement
41
41
  none: false
42
42
  requirements:
43
- - - ~>
43
+ - - ">="
44
44
  - !ruby/object:Gem::Version
45
45
  version: 1.5.1
46
46
  type: :runtime
@@ -51,7 +51,7 @@ dependencies:
51
51
  requirement: &id004 !ruby/object:Gem::Requirement
52
52
  none: false
53
53
  requirements:
54
- - - ~>
54
+ - - ">="
55
55
  - !ruby/object:Gem::Version
56
56
  version: 2.3.0
57
57
  type: :development
@@ -62,7 +62,7 @@ dependencies:
62
62
  requirement: &id005 !ruby/object:Gem::Requirement
63
63
  none: false
64
64
  requirements:
65
- - - ~>
65
+ - - ">="
66
66
  - !ruby/object:Gem::Version
67
67
  version: 1.0.0
68
68
  type: :development
@@ -73,7 +73,7 @@ dependencies:
73
73
  requirement: &id006 !ruby/object:Gem::Requirement
74
74
  none: false
75
75
  requirements:
76
- - - ~>
76
+ - - ">="
77
77
  - !ruby/object:Gem::Version
78
78
  version: 1.5.2
79
79
  type: :development
@@ -84,7 +84,7 @@ dependencies:
84
84
  requirement: &id007 !ruby/object:Gem::Requirement
85
85
  none: false
86
86
  requirements:
87
- - - ~>
87
+ - - ">="
88
88
  - !ruby/object:Gem::Version
89
89
  version: 0.11.6
90
90
  type: :development
@@ -109,7 +109,7 @@ files:
109
109
  - lib/active_finite.rb
110
110
  - lib/as_class_name.rb
111
111
  - lib/external_includes.rb
112
- - lib/get_table.rb
112
+ - lib/get_finite.rb
113
113
  - lib/master_table.rb
114
114
  - spec/active_finite_spec.rb
115
115
  - spec/spec_helper.rb
@@ -128,7 +128,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
130
130
  - !ruby/object:Gem::Version
131
- hash: -833118801
131
+ hash: -27760237
132
132
  segments:
133
133
  - 0
134
134
  version: "0"
@@ -145,6 +145,5 @@ rubygems_version: 1.5.0
145
145
  signing_key:
146
146
  specification_version: 3
147
147
  summary: one-line summary of your gem
148
- test_files:
149
- - spec/active_finite_spec.rb
150
- - spec/spec_helper.rb
148
+ test_files: []
149
+
data/lib/get_table.rb DELETED
@@ -1,14 +0,0 @@
1
- require 'external_includes'
2
- require_relative 'as_class_name.rb'
3
-
4
- def get_table sym, *args
5
- class_name = as_class_name sym
6
- class_not_defined = not(Object.const_defined? class_name)
7
- should_force = args.any? {|x| x == :force}
8
- if class_not_defined or should_force
9
- anon = Class.new ActiveRecord::Base
10
- Object.const_set class_name, anon
11
- else
12
- Object.const_get class_name
13
- end
14
- end