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 +11 -11
- data/VERSION +1 -1
- data/lib/active_finite.rb +3 -3
- data/lib/get_finite.rb +30 -0
- data/lib/master_table.rb +3 -3
- data/spec/active_finite_spec.rb +26 -11
- metadata +13 -14
- data/lib/get_table.rb +0 -14
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", "
|
9
|
-
gem "activerecord", "
|
10
|
-
gem "json", "
|
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", "
|
14
|
-
gem "bundler", "
|
15
|
-
gem "jeweler", "
|
16
|
-
gem "ruby-debug19", "
|
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", "
|
21
|
-
gem 'sqlite3-ruby', '1.3.3', :require => 'sqlite3'
|
22
|
-
gem "activesupport", "
|
23
|
-
gem "activerecord", "
|
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.
|
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 '
|
3
|
+
require_relative 'get_finite.rb'
|
4
4
|
|
5
|
-
def
|
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 =
|
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 '
|
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
|
-
|
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|
|
19
|
+
.collect {|x| get_finite x}
|
20
20
|
else
|
21
21
|
[]
|
22
22
|
end
|
data/spec/active_finite_spec.rb
CHANGED
@@ -9,29 +9,44 @@ def reconnect
|
|
9
9
|
:timeout => 5000)
|
10
10
|
end
|
11
11
|
|
12
|
-
describe '
|
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
|
-
|
17
|
+
get_finite(:test).superclass.should eql ActiveRecord::Base
|
18
18
|
end
|
19
19
|
it 'brings a class into scope' do
|
20
|
-
|
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
|
-
|
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
|
-
|
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
|
-
|
57
|
-
|
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
|
-
|
77
|
-
|
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
|
-
|
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.
|
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-
|
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/
|
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: -
|
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
|
-
|
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
|