active_finite 0.3.2 → 0.4.1

Sign up to get free protection for your applications and to get access to all the features.
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