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 +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
|