guise 0.4.1 → 0.5.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8af80e46b49952018ea9f163a53a4f81af4fdaee
4
- data.tar.gz: c5b99965096e46d81b3b5974df37943cc0bc0ace
3
+ metadata.gz: fb6a6c0e94a4116b19b9b01a4dbb4f6333aeb327
4
+ data.tar.gz: e826cc373bc0e80600b0ef95db0e2fcb2b8665a6
5
5
  SHA512:
6
- metadata.gz: db7ddc1c311e0a5689c1512718158a57b29766aef3d8618d2e943d526ad60f1713d66ee064d8b213484f75f57abddcafe197382413c302800c6ed266cf012daa
7
- data.tar.gz: 68dcdb32f85115adaa8ce25859c283104424f4e95e2e500e6da139c5e2c22a063a07e649a8c11d68cf124660f346304d42e7768b218da7dd5235f82fe94d5906
6
+ metadata.gz: 45b14e2a88e8b0dbcb2c3a8d1f1bc9ea5f2f09839f944e8e4decd663737ec4344afd7f51639d7e795027ed12dc3e5a26acba0371119d36b2ef0814b7368489ef
7
+ data.tar.gz: abca1bdd5f1c859c40c5f2d4b04af0b6e689be95047dc07b14d8d9caae27f30685c581708372088fd5aedba787928a83a39752d9958eefe9d100c0885c05debf
data/Appraisals CHANGED
@@ -1,14 +1,19 @@
1
1
  appraise '3.1' do
2
- gem 'activerecord', '~> 3.1'
3
- gem 'activesupport', '~> 3.1'
2
+ gem 'activerecord', '~> 3.1.0'
3
+ gem 'activesupport', '~> 3.1.0'
4
4
  end
5
5
 
6
6
  appraise '3.2' do
7
- gem 'activerecord', '~> 3.2'
8
- gem 'activesupport', '~> 3.2'
7
+ gem 'activerecord', '~> 3.2.0'
8
+ gem 'activesupport', '~> 3.2.0'
9
9
  end
10
10
 
11
11
  appraise '4.0' do
12
- gem 'activerecord', '~> 4.0'
13
- gem 'activesupport', '~> 4.0'
12
+ gem 'activerecord', '~> 4.0.0'
13
+ gem 'activesupport', '~> 4.0.0'
14
+ end
15
+
16
+ appraise '4.1' do
17
+ gem 'activerecord', '~> 4.1.0'
18
+ gem 'activesupport', '~> 4.1.0'
14
19
  end
data/README.md CHANGED
@@ -38,7 +38,7 @@ $ gem install guise
38
38
  Create a table to store your type information:
39
39
 
40
40
  ```
41
- rails generate model user_role user:references title:string
41
+ rails generate model user_role user:references title:string:uniq
42
42
  rake db:migrate
43
43
  ```
44
44
 
@@ -48,7 +48,7 @@ the sublcass name will be stored in.
48
48
 
49
49
  ```ruby
50
50
  class User < ActiveRecord::Base
51
- has_guises :DeskWorker, :MailForwarder, :association => :user_roles, :attribute => :title
51
+ has_guises :DeskWorker, :MailForwarder, association: :user_roles, attribute: :title
52
52
  end
53
53
  ```
54
54
 
@@ -131,15 +131,15 @@ with the addition that you can specify not to validate attributes.
131
131
  ```ruby
132
132
  class Person < ActiveRecord::Base
133
133
  has_guises :Admin, :Engineer,
134
- :association => :positions,
135
- :attribute => :rank,
136
- :foreign_key => :employee_id,
137
- :class_name => :JobTitle
134
+ association: :positions,
135
+ attribute: :rank,
136
+ foreign_key: :employee_id,
137
+ class_name: :JobTitle
138
138
  end
139
139
 
140
140
  class JobTitle < ActiveRecord::Base
141
141
  guise_for :Person,
142
- :foreign_key => :employee_id,
143
- :validate => false # skip setting up validations
142
+ foreign_key: :employee_id,
143
+ validate: false # skip setting up validations
144
144
  end
145
145
  ```
data/gemfiles/3.1.gemfile CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activerecord", "~> 3.1"
6
- gem "activesupport", "~> 3.1"
5
+ gem "activerecord", "~> 3.1.0"
6
+ gem "activesupport", "~> 3.1.0"
7
7
 
8
8
  gemspec :path=>"../"
@@ -1,75 +1,79 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- guise (0.4.1)
5
- activerecord (>= 3.1, < 4.1)
6
- activesupport (>= 3.1, < 4.1)
4
+ guise (0.5.0)
5
+ activerecord (>= 3.1, < 4.2)
6
+ activesupport (>= 3.1, < 4.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activemodel (3.2.16)
12
- activesupport (= 3.2.16)
11
+ activemodel (3.1.12)
12
+ activesupport (= 3.1.12)
13
13
  builder (~> 3.0.0)
14
- activerecord (3.2.16)
15
- activemodel (= 3.2.16)
16
- activesupport (= 3.2.16)
17
- arel (~> 3.0.2)
14
+ i18n (~> 0.6)
15
+ activerecord (3.1.12)
16
+ activemodel (= 3.1.12)
17
+ activesupport (= 3.1.12)
18
+ arel (~> 2.2.3)
18
19
  tzinfo (~> 0.3.29)
19
- activesupport (3.2.16)
20
- i18n (~> 0.6, >= 0.6.4)
20
+ activesupport (3.1.12)
21
21
  multi_json (~> 1.0)
22
22
  appraisal (0.5.2)
23
23
  bundler
24
24
  rake
25
- arel (3.0.3)
25
+ arel (2.2.3)
26
26
  builder (3.0.4)
27
- codeclimate-test-reporter (0.3.0)
27
+ codeclimate-test-reporter (0.4.0)
28
28
  simplecov (>= 0.7.1, < 1.0.0)
29
29
  coderay (1.1.0)
30
30
  diff-lcs (1.2.5)
31
- docile (1.1.3)
31
+ docile (1.1.5)
32
32
  factory_girl (4.4.0)
33
33
  activesupport (>= 3.0.0)
34
- i18n (0.6.9)
34
+ i18n (0.6.11)
35
35
  method_source (0.8.2)
36
- multi_json (1.8.4)
37
- pry (0.9.12.6)
38
- coderay (~> 1.0)
39
- method_source (~> 0.8)
36
+ multi_json (1.10.1)
37
+ pry (0.10.1)
38
+ coderay (~> 1.1.0)
39
+ method_source (~> 0.8.1)
40
40
  slop (~> 3.4)
41
- rake (10.1.1)
42
- rspec (2.14.1)
43
- rspec-core (~> 2.14.0)
44
- rspec-expectations (~> 2.14.0)
45
- rspec-mocks (~> 2.14.0)
46
- rspec-core (2.14.7)
47
- rspec-expectations (2.14.4)
48
- diff-lcs (>= 1.1.3, < 2.0)
49
- rspec-mocks (2.14.4)
50
- shoulda-matchers (2.5.0)
41
+ rake (10.3.2)
42
+ rspec (3.0.0)
43
+ rspec-core (~> 3.0.0)
44
+ rspec-expectations (~> 3.0.0)
45
+ rspec-mocks (~> 3.0.0)
46
+ rspec-core (3.0.4)
47
+ rspec-support (~> 3.0.0)
48
+ rspec-expectations (3.0.4)
49
+ diff-lcs (>= 1.2.0, < 2.0)
50
+ rspec-support (~> 3.0.0)
51
+ rspec-mocks (3.0.4)
52
+ rspec-support (~> 3.0.0)
53
+ rspec-support (3.0.4)
54
+ shoulda-matchers (2.6.2)
51
55
  activesupport (>= 3.0.0)
52
- simplecov (0.8.2)
56
+ simplecov (0.9.0)
53
57
  docile (~> 1.1.0)
54
58
  multi_json
55
59
  simplecov-html (~> 0.8.0)
56
60
  simplecov-html (0.8.0)
57
- slop (3.4.7)
58
- sqlite3 (1.3.8)
59
- tzinfo (0.3.38)
61
+ slop (3.6.0)
62
+ sqlite3 (1.3.9)
63
+ tzinfo (0.3.41)
60
64
 
61
65
  PLATFORMS
62
66
  ruby
63
67
 
64
68
  DEPENDENCIES
65
- activerecord (~> 3.1)
66
- activesupport (~> 3.1)
69
+ activerecord (~> 3.1.0)
70
+ activesupport (~> 3.1.0)
67
71
  appraisal (~> 0.5)
68
72
  codeclimate-test-reporter (~> 0.3)
69
73
  factory_girl (~> 4.4)
70
74
  guise!
71
75
  pry (~> 0.9)
72
76
  rake (~> 10.1)
73
- rspec (~> 2.14)
77
+ rspec (~> 3.0)
74
78
  shoulda-matchers (~> 2.5)
75
79
  sqlite3 (~> 1.3)
data/gemfiles/3.2.gemfile CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activerecord", "~> 3.2"
6
- gem "activesupport", "~> 3.2"
5
+ gem "activerecord", "~> 3.2.0"
6
+ gem "activesupport", "~> 3.2.0"
7
7
 
8
8
  gemspec :path=>"../"
@@ -1,75 +1,79 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- guise (0.4.1)
5
- activerecord (>= 3.1, < 4.1)
6
- activesupport (>= 3.1, < 4.1)
4
+ guise (0.5.0)
5
+ activerecord (>= 3.1, < 4.2)
6
+ activesupport (>= 3.1, < 4.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activemodel (3.2.16)
12
- activesupport (= 3.2.16)
11
+ activemodel (3.2.13)
12
+ activesupport (= 3.2.13)
13
13
  builder (~> 3.0.0)
14
- activerecord (3.2.16)
15
- activemodel (= 3.2.16)
16
- activesupport (= 3.2.16)
14
+ activerecord (3.2.13)
15
+ activemodel (= 3.2.13)
16
+ activesupport (= 3.2.13)
17
17
  arel (~> 3.0.2)
18
18
  tzinfo (~> 0.3.29)
19
- activesupport (3.2.16)
20
- i18n (~> 0.6, >= 0.6.4)
19
+ activesupport (3.2.13)
20
+ i18n (= 0.6.1)
21
21
  multi_json (~> 1.0)
22
22
  appraisal (0.5.2)
23
23
  bundler
24
24
  rake
25
- arel (3.0.3)
25
+ arel (3.0.2)
26
26
  builder (3.0.4)
27
- codeclimate-test-reporter (0.3.0)
27
+ codeclimate-test-reporter (0.4.0)
28
28
  simplecov (>= 0.7.1, < 1.0.0)
29
29
  coderay (1.1.0)
30
30
  diff-lcs (1.2.5)
31
- docile (1.1.3)
31
+ docile (1.1.5)
32
32
  factory_girl (4.4.0)
33
33
  activesupport (>= 3.0.0)
34
- i18n (0.6.9)
34
+ i18n (0.6.1)
35
35
  method_source (0.8.2)
36
- multi_json (1.8.4)
37
- pry (0.9.12.6)
38
- coderay (~> 1.0)
39
- method_source (~> 0.8)
36
+ multi_json (1.10.1)
37
+ pry (0.10.1)
38
+ coderay (~> 1.1.0)
39
+ method_source (~> 0.8.1)
40
40
  slop (~> 3.4)
41
- rake (10.1.1)
42
- rspec (2.14.1)
43
- rspec-core (~> 2.14.0)
44
- rspec-expectations (~> 2.14.0)
45
- rspec-mocks (~> 2.14.0)
46
- rspec-core (2.14.7)
47
- rspec-expectations (2.14.4)
48
- diff-lcs (>= 1.1.3, < 2.0)
49
- rspec-mocks (2.14.4)
50
- shoulda-matchers (2.5.0)
41
+ rake (10.3.2)
42
+ rspec (3.0.0)
43
+ rspec-core (~> 3.0.0)
44
+ rspec-expectations (~> 3.0.0)
45
+ rspec-mocks (~> 3.0.0)
46
+ rspec-core (3.0.4)
47
+ rspec-support (~> 3.0.0)
48
+ rspec-expectations (3.0.4)
49
+ diff-lcs (>= 1.2.0, < 2.0)
50
+ rspec-support (~> 3.0.0)
51
+ rspec-mocks (3.0.4)
52
+ rspec-support (~> 3.0.0)
53
+ rspec-support (3.0.4)
54
+ shoulda-matchers (2.6.2)
51
55
  activesupport (>= 3.0.0)
52
- simplecov (0.8.2)
56
+ simplecov (0.9.0)
53
57
  docile (~> 1.1.0)
54
58
  multi_json
55
59
  simplecov-html (~> 0.8.0)
56
60
  simplecov-html (0.8.0)
57
- slop (3.4.7)
58
- sqlite3 (1.3.8)
59
- tzinfo (0.3.38)
61
+ slop (3.6.0)
62
+ sqlite3 (1.3.9)
63
+ tzinfo (0.3.41)
60
64
 
61
65
  PLATFORMS
62
66
  ruby
63
67
 
64
68
  DEPENDENCIES
65
- activerecord (~> 3.2)
66
- activesupport (~> 3.2)
69
+ activerecord (~> 3.2.0)
70
+ activesupport (~> 3.2.0)
67
71
  appraisal (~> 0.5)
68
72
  codeclimate-test-reporter (~> 0.3)
69
73
  factory_girl (~> 4.4)
70
74
  guise!
71
75
  pry (~> 0.9)
72
76
  rake (~> 10.1)
73
- rspec (~> 2.14)
77
+ rspec (~> 3.0)
74
78
  shoulda-matchers (~> 2.5)
75
79
  sqlite3 (~> 1.3)
data/gemfiles/4.0.gemfile CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "activerecord", "~> 4.0"
6
- gem "activesupport", "~> 4.0"
5
+ gem "activerecord", "~> 4.0.0"
6
+ gem "activesupport", "~> 4.0.0"
7
7
 
8
8
  gemspec :path=>"../"
@@ -1,24 +1,24 @@
1
1
  PATH
2
2
  remote: ../
3
3
  specs:
4
- guise (0.4.1)
5
- activerecord (>= 3.1, < 4.1)
6
- activesupport (>= 3.1, < 4.1)
4
+ guise (0.5.0)
5
+ activerecord (>= 3.1, < 4.2)
6
+ activesupport (>= 3.1, < 4.2)
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activemodel (4.0.3)
12
- activesupport (= 4.0.3)
11
+ activemodel (4.0.9)
12
+ activesupport (= 4.0.9)
13
13
  builder (~> 3.1.0)
14
- activerecord (4.0.3)
15
- activemodel (= 4.0.3)
14
+ activerecord (4.0.9)
15
+ activemodel (= 4.0.9)
16
16
  activerecord-deprecated_finders (~> 1.0.2)
17
- activesupport (= 4.0.3)
17
+ activesupport (= 4.0.9)
18
18
  arel (~> 4.0.0)
19
19
  activerecord-deprecated_finders (1.0.3)
20
- activesupport (4.0.3)
21
- i18n (~> 0.6, >= 0.6.4)
20
+ activesupport (4.0.9)
21
+ i18n (~> 0.6, >= 0.6.9)
22
22
  minitest (~> 4.2)
23
23
  multi_json (~> 1.3)
24
24
  thread_safe (~> 0.1)
@@ -27,57 +27,59 @@ GEM
27
27
  bundler
28
28
  rake
29
29
  arel (4.0.2)
30
- atomic (1.1.14)
31
30
  builder (3.1.4)
32
- codeclimate-test-reporter (0.3.0)
31
+ codeclimate-test-reporter (0.4.0)
33
32
  simplecov (>= 0.7.1, < 1.0.0)
34
33
  coderay (1.1.0)
35
34
  diff-lcs (1.2.5)
36
- docile (1.1.3)
35
+ docile (1.1.5)
37
36
  factory_girl (4.4.0)
38
37
  activesupport (>= 3.0.0)
39
- i18n (0.6.9)
38
+ i18n (0.6.11)
40
39
  method_source (0.8.2)
41
40
  minitest (4.7.5)
42
- multi_json (1.8.4)
43
- pry (0.9.12.6)
44
- coderay (~> 1.0)
45
- method_source (~> 0.8)
41
+ multi_json (1.10.1)
42
+ pry (0.10.1)
43
+ coderay (~> 1.1.0)
44
+ method_source (~> 0.8.1)
46
45
  slop (~> 3.4)
47
- rake (10.1.1)
48
- rspec (2.14.1)
49
- rspec-core (~> 2.14.0)
50
- rspec-expectations (~> 2.14.0)
51
- rspec-mocks (~> 2.14.0)
52
- rspec-core (2.14.7)
53
- rspec-expectations (2.14.4)
54
- diff-lcs (>= 1.1.3, < 2.0)
55
- rspec-mocks (2.14.4)
56
- shoulda-matchers (2.5.0)
46
+ rake (10.3.2)
47
+ rspec (3.0.0)
48
+ rspec-core (~> 3.0.0)
49
+ rspec-expectations (~> 3.0.0)
50
+ rspec-mocks (~> 3.0.0)
51
+ rspec-core (3.0.4)
52
+ rspec-support (~> 3.0.0)
53
+ rspec-expectations (3.0.4)
54
+ diff-lcs (>= 1.2.0, < 2.0)
55
+ rspec-support (~> 3.0.0)
56
+ rspec-mocks (3.0.4)
57
+ rspec-support (~> 3.0.0)
58
+ rspec-support (3.0.4)
59
+ shoulda-matchers (2.6.2)
57
60
  activesupport (>= 3.0.0)
58
- simplecov (0.8.2)
61
+ simplecov (0.9.0)
59
62
  docile (~> 1.1.0)
60
63
  multi_json
61
64
  simplecov-html (~> 0.8.0)
62
65
  simplecov-html (0.8.0)
63
- slop (3.4.7)
64
- sqlite3 (1.3.8)
65
- thread_safe (0.1.3)
66
- atomic
67
- tzinfo (0.3.38)
66
+ slop (3.6.0)
67
+ sqlite3 (1.3.9)
68
+ thread_safe (0.3.4)
69
+ tzinfo (0.3.41)
68
70
 
69
71
  PLATFORMS
70
72
  ruby
71
73
 
72
74
  DEPENDENCIES
73
- activerecord (~> 4.0)
74
- activesupport (~> 4.0)
75
+ activerecord (~> 4.0.0)
76
+ activesupport (~> 4.0.0)
75
77
  appraisal (~> 0.5)
76
78
  codeclimate-test-reporter (~> 0.3)
77
79
  factory_girl (~> 4.4)
78
80
  guise!
79
81
  pry (~> 0.9)
80
82
  rake (~> 10.1)
81
- rspec (~> 2.14)
83
+ rspec (~> 3.0)
82
84
  shoulda-matchers (~> 2.5)
83
85
  sqlite3 (~> 1.3)
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "activerecord", "~> 4.1.0"
6
+ gem "activesupport", "~> 4.1.0"
7
+
8
+ gemspec :path=>"../"
@@ -0,0 +1,85 @@
1
+ PATH
2
+ remote: ../
3
+ specs:
4
+ guise (0.5.0)
5
+ activerecord (>= 3.1, < 4.2)
6
+ activesupport (>= 3.1, < 4.2)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ activemodel (4.1.5)
12
+ activesupport (= 4.1.5)
13
+ builder (~> 3.1)
14
+ activerecord (4.1.5)
15
+ activemodel (= 4.1.5)
16
+ activesupport (= 4.1.5)
17
+ arel (~> 5.0.0)
18
+ activesupport (4.1.5)
19
+ i18n (~> 0.6, >= 0.6.9)
20
+ json (~> 1.7, >= 1.7.7)
21
+ minitest (~> 5.1)
22
+ thread_safe (~> 0.1)
23
+ tzinfo (~> 1.1)
24
+ appraisal (0.5.2)
25
+ bundler
26
+ rake
27
+ arel (5.0.1.20140414130214)
28
+ builder (3.2.2)
29
+ codeclimate-test-reporter (0.4.0)
30
+ simplecov (>= 0.7.1, < 1.0.0)
31
+ coderay (1.1.0)
32
+ diff-lcs (1.2.5)
33
+ docile (1.1.5)
34
+ factory_girl (4.4.0)
35
+ activesupport (>= 3.0.0)
36
+ i18n (0.6.11)
37
+ json (1.8.1)
38
+ method_source (0.8.2)
39
+ minitest (5.4.0)
40
+ multi_json (1.10.1)
41
+ pry (0.10.1)
42
+ coderay (~> 1.1.0)
43
+ method_source (~> 0.8.1)
44
+ slop (~> 3.4)
45
+ rake (10.3.2)
46
+ rspec (3.0.0)
47
+ rspec-core (~> 3.0.0)
48
+ rspec-expectations (~> 3.0.0)
49
+ rspec-mocks (~> 3.0.0)
50
+ rspec-core (3.0.4)
51
+ rspec-support (~> 3.0.0)
52
+ rspec-expectations (3.0.4)
53
+ diff-lcs (>= 1.2.0, < 2.0)
54
+ rspec-support (~> 3.0.0)
55
+ rspec-mocks (3.0.4)
56
+ rspec-support (~> 3.0.0)
57
+ rspec-support (3.0.4)
58
+ shoulda-matchers (2.6.2)
59
+ activesupport (>= 3.0.0)
60
+ simplecov (0.9.0)
61
+ docile (~> 1.1.0)
62
+ multi_json
63
+ simplecov-html (~> 0.8.0)
64
+ simplecov-html (0.8.0)
65
+ slop (3.6.0)
66
+ sqlite3 (1.3.9)
67
+ thread_safe (0.3.4)
68
+ tzinfo (1.2.2)
69
+ thread_safe (~> 0.1)
70
+
71
+ PLATFORMS
72
+ ruby
73
+
74
+ DEPENDENCIES
75
+ activerecord (~> 4.1.0)
76
+ activesupport (~> 4.1.0)
77
+ appraisal (~> 0.5)
78
+ codeclimate-test-reporter (~> 0.3)
79
+ factory_girl (~> 4.4)
80
+ guise!
81
+ pry (~> 0.9)
82
+ rake (~> 10.1)
83
+ rspec (~> 3.0)
84
+ shoulda-matchers (~> 2.5)
85
+ sqlite3 (~> 1.3)
data/guise.gemspec CHANGED
@@ -21,10 +21,10 @@ Gem::Specification.new do |gem|
21
21
 
22
22
  gem.required_ruby_version = '>= 1.9.3'
23
23
 
24
- gem.add_dependency "activerecord", ">= 3.1", "< 4.1"
25
- gem.add_dependency "activesupport", ">= 3.1", "< 4.1"
24
+ gem.add_dependency "activerecord", ">= 3.1", "< 4.2"
25
+ gem.add_dependency "activesupport", ">= 3.1", "< 4.2"
26
26
  gem.add_development_dependency 'rake', '~> 10.1'
27
- gem.add_development_dependency "rspec", "~> 2.14"
27
+ gem.add_development_dependency "rspec", "~> 3.0"
28
28
  gem.add_development_dependency "factory_girl", "~> 4.4"
29
29
  gem.add_development_dependency "shoulda-matchers", "~> 2.5"
30
30
  gem.add_development_dependency "appraisal", '~> 0.5'
@@ -8,7 +8,9 @@ module Guise
8
8
 
9
9
  class SourceCallback < Callback
10
10
  def after_initialize(record)
11
- record.guises.build(@attribute => @guise)
11
+ if record.new_record?
12
+ record.guises.build(@attribute => @guise)
13
+ end
12
14
  end
13
15
  end
14
16
 
data/lib/guise/syntax.rb CHANGED
@@ -13,7 +13,7 @@ module Guise
13
13
  guises = guises.map(&:to_s)
14
14
  association = options.fetch(:association)
15
15
  attribute = options.fetch(:attribute)
16
- table_name = options[:table_name] || association
16
+ join_table = options[:table_name] || association
17
17
 
18
18
  Guise.registry[self.name] = {
19
19
  names: guises,
@@ -23,7 +23,7 @@ module Guise
23
23
 
24
24
  guises.each do |guise|
25
25
  method_name = guise.underscore
26
- scope method_name.pluralize, -> { joins(association).where(table_name => { attribute => guise }) }
26
+ scope method_name.pluralize, -> { select("#{self.table_name}.*").joins(association).where(join_table => { attribute => guise }) }
27
27
 
28
28
  define_method "#{method_name}?" do
29
29
  has_guise?(guise)
@@ -36,6 +36,9 @@ module Guise
36
36
  association_singular = association.to_s.singularize
37
37
 
38
38
  alias_method :guises, association
39
+ alias_method :guises=, "#{association}="
40
+ alias_method :guise_ids, "#{association_singular}_ids"
41
+ alias_method :guise_ids=, "#{association_singular}_ids="
39
42
  alias_method "has_#{association_singular}?", :has_guise?
40
43
  alias_method "has_#{association}?", :has_guises?
41
44
  alias_method "has_any_#{association}?", :has_any_guises?
data/lib/guise/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Guise
2
- VERSION = "0.4.1"
2
+ VERSION = "0.5.0"
3
3
  end
data/spec/guise_spec.rb CHANGED
@@ -23,6 +23,25 @@ describe Guise do
23
23
  expect(technicians).not_to include supervisor
24
24
  end
25
25
 
26
+ it 'aliases the association methods to `guise=` and `guises=`' do
27
+ record = create(:user)
28
+
29
+ expect(record.guises).to eq []
30
+
31
+ # NOTE: The user is assigned in factory_girl to deal with a Rails 3.1
32
+ # issue
33
+ record.guises = [build(:user_role, user: record)]
34
+ record.guises << build(:user_role, name: 'Supervisor', user: record)
35
+
36
+ expect(record.guises(true).length).to eq 2
37
+
38
+ expect(record.guise_ids.length).to eq 2
39
+
40
+ record.guise_ids = []
41
+
42
+ expect(record.guises.length).to eq 0
43
+ end
44
+
26
45
  it 'handles non-standard table names and foreign key attributes' do
27
46
  person = create(:person)
28
47
  create(:permission, person: person)
@@ -126,7 +145,7 @@ describe Guise do
126
145
 
127
146
  describe '.guise_of' do
128
147
  it "sets default scope to limit to records of the class's type" do
129
- technician_ids = Technician.pluck(:id)
148
+ technician_ids = User.technicians.map(&:id)
130
149
 
131
150
  expect(technician_ids).to eq [technician.id]
132
151
  end
@@ -137,6 +156,22 @@ describe Guise do
137
156
 
138
157
  created_record = Technician.create!
139
158
  expect(created_record).to have_guise :technician
159
+
160
+ # Ensure `after_initialize` only runs when the record hasn't been persisted.
161
+ existing_record = Technician.find(technician.id)
162
+ expect(existing_record.guises.length).to eq 1
163
+ end
164
+
165
+ it 'sets default scope to ensure records are not readonly' do
166
+ expect(Technician.first).not_to be_readonly
167
+ end
168
+
169
+ it 'raises an error if no guises are registered for the class' do
170
+ expect do
171
+ Class.new(ActiveRecord::Base) do
172
+ guise_of :Model
173
+ end
174
+ end
140
175
  end
141
176
  end
142
177
 
@@ -162,6 +197,14 @@ describe Guise do
162
197
  expect(supervisor_roles).not_to include technician_role
163
198
  end
164
199
 
200
+ it 'raises an error if no guises are registered for the class' do
201
+ expect do
202
+ Class.new(ActiveRecord::Base) do
203
+ guise_for :Model
204
+ end
205
+ end
206
+ end
207
+
165
208
  describe "adds validations to ensure guise attribute is" do
166
209
  it "present" do
167
210
  should validate_presence_of(:name)
@@ -179,7 +222,7 @@ describe Guise do
179
222
 
180
223
  describe '.scoped_guise_of' do
181
224
  it 'sets default scope' do
182
- names = TechnicianUserRole.pluck(:name).uniq
225
+ names = TechnicianUserRole.all.map(&:name).uniq
183
226
 
184
227
  expect(names).to eq ['Technician']
185
228
  end
@@ -191,5 +234,13 @@ describe Guise do
191
234
  expect(new_technician_role.name).to eq 'Technician'
192
235
  expect(created_technician_role.name).to eq 'Technician'
193
236
  end
237
+
238
+ it 'raises an error if no guises are registered for the class' do
239
+ expect do
240
+ Class.new(ActiveRecord::Base) do
241
+ scoped_guise_for :Model
242
+ end
243
+ end.to raise_error
244
+ end
194
245
  end
195
246
  end
data/spec/spec_helper.rb CHANGED
@@ -7,7 +7,9 @@ require 'factory_girl'
7
7
  require 'shoulda-matchers'
8
8
  require 'guise'
9
9
 
10
- I18n.enforce_available_locales = false
10
+ if I18n.respond_to?(:enforce_available_locales)
11
+ I18n.enforce_available_locales = false
12
+ end
11
13
 
12
14
  ActiveRecord::Base.establish_connection(
13
15
  adapter: 'sqlite3',
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: guise
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo Gutierrez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-03-17 00:00:00.000000000 Z
11
+ date: 2014-08-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activerecord
@@ -19,7 +19,7 @@ dependencies:
19
19
  version: '3.1'
20
20
  - - "<"
21
21
  - !ruby/object:Gem::Version
22
- version: '4.1'
22
+ version: '4.2'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
@@ -29,7 +29,7 @@ dependencies:
29
29
  version: '3.1'
30
30
  - - "<"
31
31
  - !ruby/object:Gem::Version
32
- version: '4.1'
32
+ version: '4.2'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
@@ -39,7 +39,7 @@ dependencies:
39
39
  version: '3.1'
40
40
  - - "<"
41
41
  - !ruby/object:Gem::Version
42
- version: '4.1'
42
+ version: '4.2'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
@@ -49,7 +49,7 @@ dependencies:
49
49
  version: '3.1'
50
50
  - - "<"
51
51
  - !ruby/object:Gem::Version
52
- version: '4.1'
52
+ version: '4.2'
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: rake
55
55
  requirement: !ruby/object:Gem::Requirement
@@ -70,14 +70,14 @@ dependencies:
70
70
  requirements:
71
71
  - - "~>"
72
72
  - !ruby/object:Gem::Version
73
- version: '2.14'
73
+ version: '3.0'
74
74
  type: :development
75
75
  prerelease: false
76
76
  version_requirements: !ruby/object:Gem::Requirement
77
77
  requirements:
78
78
  - - "~>"
79
79
  - !ruby/object:Gem::Version
80
- version: '2.14'
80
+ version: '3.0'
81
81
  - !ruby/object:Gem::Dependency
82
82
  name: factory_girl
83
83
  requirement: !ruby/object:Gem::Requirement
@@ -183,6 +183,8 @@ files:
183
183
  - gemfiles/3.2.gemfile.lock
184
184
  - gemfiles/4.0.gemfile
185
185
  - gemfiles/4.0.gemfile.lock
186
+ - gemfiles/4.1.gemfile
187
+ - gemfiles/4.1.gemfile.lock
186
188
  - guise.gemspec
187
189
  - lib/guise.rb
188
190
  - lib/guise/callbacks.rb
@@ -213,7 +215,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
215
  version: '0'
214
216
  requirements: []
215
217
  rubyforge_project:
216
- rubygems_version: 2.2.0
218
+ rubygems_version: 2.2.2
217
219
  signing_key:
218
220
  specification_version: 4
219
221
  summary: Guise provides methods to setup single table inheritance with multiple inheritances