doorkeeper-openid_connect 1.0.1 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +6 -18
  3. data/.ruby-version +1 -1
  4. data/.travis.yml +26 -0
  5. data/CHANGELOG.md +24 -0
  6. data/CONTRIBUTING.md +72 -0
  7. data/Gemfile +3 -6
  8. data/LICENSE.txt +2 -2
  9. data/README.md +174 -64
  10. data/app/controllers/doorkeeper/openid_connect/discovery_controller.rb +109 -0
  11. data/app/controllers/doorkeeper/openid_connect/userinfo_controller.rb +5 -10
  12. data/bin/console +9 -0
  13. data/bin/setup +8 -0
  14. data/config/locales/en.yml +10 -15
  15. data/doorkeeper-openid_connect.gemspec +18 -15
  16. data/lib/doorkeeper/openid_connect.rb +22 -52
  17. data/lib/doorkeeper/openid_connect/claims/aggregated_claim.rb +9 -0
  18. data/lib/doorkeeper/openid_connect/claims/claim.rb +34 -0
  19. data/lib/doorkeeper/openid_connect/claims/distributed_claim.rb +9 -0
  20. data/lib/doorkeeper/openid_connect/claims/normal_claim.rb +18 -0
  21. data/lib/doorkeeper/openid_connect/claims_builder.rb +5 -3
  22. data/lib/doorkeeper/openid_connect/config.rb +29 -34
  23. data/lib/doorkeeper/openid_connect/helpers/controller.rb +51 -0
  24. data/lib/doorkeeper/openid_connect/id_token.rb +62 -0
  25. data/lib/doorkeeper/openid_connect/oauth/authorization/code.rb +22 -0
  26. data/lib/doorkeeper/openid_connect/oauth/authorization_code_request.rb +24 -0
  27. data/lib/doorkeeper/openid_connect/oauth/password_access_token_request.rb +24 -0
  28. data/lib/doorkeeper/openid_connect/oauth/pre_authorization.rb +16 -0
  29. data/lib/doorkeeper/openid_connect/oauth/token_response.rb +21 -0
  30. data/lib/doorkeeper/openid_connect/orm/active_record.rb +21 -0
  31. data/lib/doorkeeper/openid_connect/orm/active_record/access_grant.rb +16 -0
  32. data/lib/doorkeeper/openid_connect/orm/active_record/request.rb +12 -0
  33. data/lib/doorkeeper/openid_connect/rails/routes.rb +29 -10
  34. data/lib/doorkeeper/openid_connect/rails/routes/mapper.rb +1 -1
  35. data/lib/doorkeeper/openid_connect/rails/routes/mapping.rb +4 -2
  36. data/lib/doorkeeper/openid_connect/user_info.rb +40 -0
  37. data/lib/doorkeeper/openid_connect/version.rb +1 -1
  38. data/lib/generators/doorkeeper/openid_connect/install_generator.rb +15 -0
  39. data/lib/generators/doorkeeper/openid_connect/migration_generator.rb +19 -0
  40. data/lib/generators/doorkeeper/openid_connect/templates/initializer.rb +51 -0
  41. data/lib/generators/doorkeeper/openid_connect/templates/migration.rb +14 -0
  42. metadata +77 -130
  43. data/lib/doorkeeper/openid_connect/models/claims/aggregated_claim.rb +0 -11
  44. data/lib/doorkeeper/openid_connect/models/claims/claim.rb +0 -15
  45. data/lib/doorkeeper/openid_connect/models/claims/distributed_claim.rb +0 -11
  46. data/lib/doorkeeper/openid_connect/models/claims/normal_claim.rb +0 -28
  47. data/lib/doorkeeper/openid_connect/models/id_token.rb +0 -63
  48. data/lib/doorkeeper/openid_connect/models/user_info.rb +0 -39
  49. data/spec/dummy/Rakefile +0 -7
  50. data/spec/dummy/app/controllers/application_controller.rb +0 -3
  51. data/spec/dummy/app/controllers/custom_authorizations_controller.rb +0 -7
  52. data/spec/dummy/app/controllers/full_protected_resources_controller.rb +0 -12
  53. data/spec/dummy/app/controllers/home_controller.rb +0 -17
  54. data/spec/dummy/app/controllers/metal_controller.rb +0 -11
  55. data/spec/dummy/app/controllers/semi_protected_resources_controller.rb +0 -11
  56. data/spec/dummy/app/helpers/application_helper.rb +0 -5
  57. data/spec/dummy/app/models/user.rb +0 -31
  58. data/spec/dummy/app/views/home/index.html.erb +0 -0
  59. data/spec/dummy/app/views/layouts/application.html.erb +0 -14
  60. data/spec/dummy/config.ru +0 -4
  61. data/spec/dummy/config/application.rb +0 -55
  62. data/spec/dummy/config/boot.rb +0 -6
  63. data/spec/dummy/config/database.yml +0 -15
  64. data/spec/dummy/config/environment.rb +0 -5
  65. data/spec/dummy/config/environments/development.rb +0 -29
  66. data/spec/dummy/config/environments/production.rb +0 -62
  67. data/spec/dummy/config/environments/test.rb +0 -56
  68. data/spec/dummy/config/initializers/backtrace_silencers.rb +0 -7
  69. data/spec/dummy/config/initializers/doorkeeper.rb +0 -59
  70. data/spec/dummy/config/initializers/secret_token.rb +0 -9
  71. data/spec/dummy/config/initializers/session_store.rb +0 -8
  72. data/spec/dummy/config/initializers/wrap_parameters.rb +0 -14
  73. data/spec/dummy/config/locales/doorkeeper.en.yml +0 -5
  74. data/spec/dummy/config/mongo.yml +0 -11
  75. data/spec/dummy/config/mongoid2.yml +0 -9
  76. data/spec/dummy/config/mongoid3.yml +0 -18
  77. data/spec/dummy/config/mongoid4.yml +0 -19
  78. data/spec/dummy/config/routes.rb +0 -52
  79. data/spec/dummy/db/migrate/20111122132257_create_users.rb +0 -9
  80. data/spec/dummy/db/migrate/20120312140401_add_password_to_users.rb +0 -5
  81. data/spec/dummy/db/migrate/20130902165751_create_doorkeeper_tables.rb +0 -41
  82. data/spec/dummy/db/migrate/20130902175349_add_owner_to_application.rb +0 -7
  83. data/spec/dummy/db/schema.rb +0 -65
  84. data/spec/dummy/log/test.log +0 -16605
  85. data/spec/dummy/public/404.html +0 -26
  86. data/spec/dummy/public/422.html +0 -26
  87. data/spec/dummy/public/500.html +0 -26
  88. data/spec/dummy/public/favicon.ico +0 -0
  89. data/spec/dummy/script/rails +0 -6
  90. data/spec/lib/doorkeeper/openid_connect/config_spec.rb +0 -75
  91. data/spec/spec_helper.rb +0 -2
  92. data/spec/spec_helper_integration.rb +0 -48
@@ -0,0 +1,51 @@
1
+ Doorkeeper::OpenidConnect.configure do
2
+ issuer 'issuer string'
3
+
4
+ jws_private_key <<-EOL
5
+ -----BEGIN RSA PRIVATE KEY-----
6
+ ....
7
+ -----END RSA PRIVATE KEY-----
8
+ EOL
9
+
10
+ jws_public_key <<-EOL
11
+ -----BEGIN RSA PUBLIC KEY-----
12
+ ....
13
+ -----END RSA PUBLIC KEY-----
14
+ EOL
15
+
16
+ resource_owner_from_access_token do |access_token|
17
+ # Example implementation:
18
+ # User.find_by(id: access_token.resource_owner_id)
19
+ end
20
+
21
+ auth_time_from_resource_owner do |resource_owner|
22
+ # Example implementation:
23
+ # resource_owner.current_sign_in_at
24
+ end
25
+
26
+ reauthenticate_resource_owner do |resource_owner|
27
+ # Example implementation:
28
+ # store_location_for resource_owner, request.fullpath
29
+ # sign_out resource_owner
30
+ # redirect_to new_user_session_url
31
+ end
32
+
33
+ subject do |resource_owner|
34
+ # Example implementation:
35
+ # resource_owner.key
36
+ end
37
+
38
+ # Expiration time on or after which the ID Token MUST NOT be accepted for processing. (default 120 seconds).
39
+ # expiration 600
40
+
41
+ # Example claims:
42
+ # claims do
43
+ # normal_claim :_foo_ do |resource_owner|
44
+ # resource_owner.foo
45
+ # end
46
+
47
+ # normal_claim :_bar_ do |resource_owner|
48
+ # resource_owner.bar
49
+ # end
50
+ # end
51
+ end
@@ -0,0 +1,14 @@
1
+ class CreateDoorkeeperOpenidConnectTables < ActiveRecord::Migration
2
+ def change
3
+ create_table :oauth_openid_requests do |t|
4
+ t.integer :access_grant_id, null: false
5
+ t.string :nonce, null: false
6
+ end
7
+
8
+ add_foreign_key(
9
+ :oauth_openid_requests,
10
+ :oauth_access_grants,
11
+ column: :access_grant_id
12
+ )
13
+ end
14
+ end
metadata CHANGED
@@ -1,174 +1,165 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: doorkeeper-openid_connect
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sam Dengler
8
+ - Markus Koller
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2015-05-08 00:00:00.000000000 Z
12
+ date: 2016-12-01 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
- name: railties
15
+ name: doorkeeper
15
16
  requirement: !ruby/object:Gem::Requirement
16
17
  requirements:
17
- - - ">="
18
+ - - "~>"
18
19
  - !ruby/object:Gem::Version
19
- version: '3.1'
20
+ version: '4.0'
20
21
  type: :runtime
21
22
  prerelease: false
22
23
  version_requirements: !ruby/object:Gem::Requirement
23
24
  requirements:
24
- - - ">="
25
+ - - "~>"
25
26
  - !ruby/object:Gem::Version
26
- version: '3.1'
27
+ version: '4.0'
27
28
  - !ruby/object:Gem::Dependency
28
- name: doorkeeper
29
+ name: json-jwt
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - ">="
32
+ - - "~>"
32
33
  - !ruby/object:Gem::Version
33
- version: '1.3'
34
+ version: 1.6.5
34
35
  type: :runtime
35
36
  prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - "~>"
40
+ - !ruby/object:Gem::Version
41
+ version: 1.6.5
42
+ - !ruby/object:Gem::Dependency
43
+ name: rspec-rails
44
+ requirement: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: '0'
49
+ type: :development
50
+ prerelease: false
36
51
  version_requirements: !ruby/object:Gem::Requirement
37
52
  requirements:
38
53
  - - ">="
39
54
  - !ruby/object:Gem::Version
40
- version: '1.3'
55
+ version: '0'
41
56
  - !ruby/object:Gem::Dependency
42
- name: sandal
57
+ name: factory_girl
43
58
  requirement: !ruby/object:Gem::Requirement
44
59
  requirements:
45
- - - "~>"
60
+ - - ">="
46
61
  - !ruby/object:Gem::Version
47
- version: 0.6.0
48
- type: :runtime
62
+ version: '0'
63
+ type: :development
49
64
  prerelease: false
50
65
  version_requirements: !ruby/object:Gem::Requirement
51
66
  requirements:
52
- - - "~>"
67
+ - - ">="
53
68
  - !ruby/object:Gem::Version
54
- version: 0.6.0
69
+ version: '0'
55
70
  - !ruby/object:Gem::Dependency
56
- name: rspec-rails
71
+ name: sqlite3
57
72
  requirement: !ruby/object:Gem::Requirement
58
73
  requirements:
59
- - - "~>"
74
+ - - ">="
60
75
  - !ruby/object:Gem::Version
61
- version: 2.99.0
76
+ version: '0'
62
77
  type: :development
63
78
  prerelease: false
64
79
  version_requirements: !ruby/object:Gem::Requirement
65
80
  requirements:
66
- - - "~>"
81
+ - - ">="
67
82
  - !ruby/object:Gem::Version
68
- version: 2.99.0
83
+ version: '0'
69
84
  - !ruby/object:Gem::Dependency
70
- name: generator_spec
85
+ name: pry-byebug
71
86
  requirement: !ruby/object:Gem::Requirement
72
87
  requirements:
73
- - - "~>"
88
+ - - ">="
74
89
  - !ruby/object:Gem::Version
75
- version: 0.9.0
90
+ version: '0'
76
91
  type: :development
77
92
  prerelease: false
78
93
  version_requirements: !ruby/object:Gem::Requirement
79
94
  requirements:
80
- - - "~>"
95
+ - - ">="
81
96
  - !ruby/object:Gem::Version
82
- version: 0.9.0
97
+ version: '0'
83
98
  - !ruby/object:Gem::Dependency
84
- name: factory_girl
99
+ name: conventional-changelog
85
100
  requirement: !ruby/object:Gem::Requirement
86
101
  requirements:
87
102
  - - "~>"
88
103
  - !ruby/object:Gem::Version
89
- version: 2.6.4
104
+ version: '1.2'
90
105
  type: :development
91
106
  prerelease: false
92
107
  version_requirements: !ruby/object:Gem::Requirement
93
108
  requirements:
94
109
  - - "~>"
95
110
  - !ruby/object:Gem::Version
96
- version: 2.6.4
97
- description: OpenID Connect extension to Doorkeeper.
111
+ version: '1.2'
112
+ description: OpenID Connect extension for Doorkeeper.
98
113
  email:
99
114
  - sam.dengler@playonsports.com
115
+ - markus-koller@gmx.ch
100
116
  executables: []
101
117
  extensions: []
102
118
  extra_rdoc_files: []
103
119
  files:
104
120
  - ".gitignore"
105
121
  - ".ruby-version"
122
+ - ".travis.yml"
123
+ - CHANGELOG.md
124
+ - CONTRIBUTING.md
106
125
  - Gemfile
107
126
  - LICENSE.txt
108
127
  - README.md
109
128
  - Rakefile
129
+ - app/controllers/doorkeeper/openid_connect/discovery_controller.rb
110
130
  - app/controllers/doorkeeper/openid_connect/userinfo_controller.rb
131
+ - bin/console
132
+ - bin/setup
111
133
  - config/locales/en.yml
112
134
  - doorkeeper-openid_connect.gemspec
113
135
  - lib/doorkeeper/openid_connect.rb
136
+ - lib/doorkeeper/openid_connect/claims/aggregated_claim.rb
137
+ - lib/doorkeeper/openid_connect/claims/claim.rb
138
+ - lib/doorkeeper/openid_connect/claims/distributed_claim.rb
139
+ - lib/doorkeeper/openid_connect/claims/normal_claim.rb
114
140
  - lib/doorkeeper/openid_connect/claims_builder.rb
115
141
  - lib/doorkeeper/openid_connect/config.rb
116
142
  - lib/doorkeeper/openid_connect/engine.rb
117
- - lib/doorkeeper/openid_connect/models/claims/aggregated_claim.rb
118
- - lib/doorkeeper/openid_connect/models/claims/claim.rb
119
- - lib/doorkeeper/openid_connect/models/claims/distributed_claim.rb
120
- - lib/doorkeeper/openid_connect/models/claims/normal_claim.rb
121
- - lib/doorkeeper/openid_connect/models/id_token.rb
122
- - lib/doorkeeper/openid_connect/models/user_info.rb
143
+ - lib/doorkeeper/openid_connect/helpers/controller.rb
144
+ - lib/doorkeeper/openid_connect/id_token.rb
145
+ - lib/doorkeeper/openid_connect/oauth/authorization/code.rb
146
+ - lib/doorkeeper/openid_connect/oauth/authorization_code_request.rb
147
+ - lib/doorkeeper/openid_connect/oauth/password_access_token_request.rb
148
+ - lib/doorkeeper/openid_connect/oauth/pre_authorization.rb
149
+ - lib/doorkeeper/openid_connect/oauth/token_response.rb
150
+ - lib/doorkeeper/openid_connect/orm/active_record.rb
151
+ - lib/doorkeeper/openid_connect/orm/active_record/access_grant.rb
152
+ - lib/doorkeeper/openid_connect/orm/active_record/request.rb
123
153
  - lib/doorkeeper/openid_connect/rails/routes.rb
124
154
  - lib/doorkeeper/openid_connect/rails/routes/mapper.rb
125
155
  - lib/doorkeeper/openid_connect/rails/routes/mapping.rb
156
+ - lib/doorkeeper/openid_connect/user_info.rb
126
157
  - lib/doorkeeper/openid_connect/version.rb
127
- - spec/dummy/Rakefile
128
- - spec/dummy/app/controllers/application_controller.rb
129
- - spec/dummy/app/controllers/custom_authorizations_controller.rb
130
- - spec/dummy/app/controllers/full_protected_resources_controller.rb
131
- - spec/dummy/app/controllers/home_controller.rb
132
- - spec/dummy/app/controllers/metal_controller.rb
133
- - spec/dummy/app/controllers/semi_protected_resources_controller.rb
134
- - spec/dummy/app/helpers/application_helper.rb
135
- - spec/dummy/app/models/user.rb
136
- - spec/dummy/app/views/home/index.html.erb
137
- - spec/dummy/app/views/layouts/application.html.erb
138
- - spec/dummy/config.ru
139
- - spec/dummy/config/application.rb
140
- - spec/dummy/config/boot.rb
141
- - spec/dummy/config/database.yml
142
- - spec/dummy/config/environment.rb
143
- - spec/dummy/config/environments/development.rb
144
- - spec/dummy/config/environments/production.rb
145
- - spec/dummy/config/environments/test.rb
146
- - spec/dummy/config/initializers/backtrace_silencers.rb
147
- - spec/dummy/config/initializers/doorkeeper.rb
148
- - spec/dummy/config/initializers/secret_token.rb
149
- - spec/dummy/config/initializers/session_store.rb
150
- - spec/dummy/config/initializers/wrap_parameters.rb
151
- - spec/dummy/config/locales/doorkeeper.en.yml
152
- - spec/dummy/config/mongo.yml
153
- - spec/dummy/config/mongoid2.yml
154
- - spec/dummy/config/mongoid3.yml
155
- - spec/dummy/config/mongoid4.yml
156
- - spec/dummy/config/routes.rb
157
- - spec/dummy/db/migrate/20111122132257_create_users.rb
158
- - spec/dummy/db/migrate/20120312140401_add_password_to_users.rb
159
- - spec/dummy/db/migrate/20130902165751_create_doorkeeper_tables.rb
160
- - spec/dummy/db/migrate/20130902175349_add_owner_to_application.rb
161
- - spec/dummy/db/schema.rb
162
- - spec/dummy/log/test.log
163
- - spec/dummy/public/404.html
164
- - spec/dummy/public/422.html
165
- - spec/dummy/public/500.html
166
- - spec/dummy/public/favicon.ico
167
- - spec/dummy/script/rails
168
- - spec/lib/doorkeeper/openid_connect/config_spec.rb
169
- - spec/spec_helper.rb
170
- - spec/spec_helper_integration.rb
171
- homepage: https://github.com/playon/doorkeeper-openid_connect
158
+ - lib/generators/doorkeeper/openid_connect/install_generator.rb
159
+ - lib/generators/doorkeeper/openid_connect/migration_generator.rb
160
+ - lib/generators/doorkeeper/openid_connect/templates/initializer.rb
161
+ - lib/generators/doorkeeper/openid_connect/templates/migration.rb
162
+ homepage: https://github.com/doorkeeper-gem/doorkeeper-openid_connect
172
163
  licenses:
173
164
  - MIT
174
165
  metadata: {}
@@ -180,7 +171,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
180
171
  requirements:
181
172
  - - ">="
182
173
  - !ruby/object:Gem::Version
183
- version: '0'
174
+ version: '2.1'
184
175
  required_rubygems_version: !ruby/object:Gem::Requirement
185
176
  requirements:
186
177
  - - ">="
@@ -188,52 +179,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
188
179
  version: '0'
189
180
  requirements: []
190
181
  rubyforge_project:
191
- rubygems_version: 2.2.2
182
+ rubygems_version: 2.5.1
192
183
  signing_key:
193
184
  specification_version: 4
194
- summary: OpenID Connect extension to Doorkeeper.
195
- test_files:
196
- - spec/dummy/Rakefile
197
- - spec/dummy/app/controllers/application_controller.rb
198
- - spec/dummy/app/controllers/custom_authorizations_controller.rb
199
- - spec/dummy/app/controllers/full_protected_resources_controller.rb
200
- - spec/dummy/app/controllers/home_controller.rb
201
- - spec/dummy/app/controllers/metal_controller.rb
202
- - spec/dummy/app/controllers/semi_protected_resources_controller.rb
203
- - spec/dummy/app/helpers/application_helper.rb
204
- - spec/dummy/app/models/user.rb
205
- - spec/dummy/app/views/home/index.html.erb
206
- - spec/dummy/app/views/layouts/application.html.erb
207
- - spec/dummy/config.ru
208
- - spec/dummy/config/application.rb
209
- - spec/dummy/config/boot.rb
210
- - spec/dummy/config/database.yml
211
- - spec/dummy/config/environment.rb
212
- - spec/dummy/config/environments/development.rb
213
- - spec/dummy/config/environments/production.rb
214
- - spec/dummy/config/environments/test.rb
215
- - spec/dummy/config/initializers/backtrace_silencers.rb
216
- - spec/dummy/config/initializers/doorkeeper.rb
217
- - spec/dummy/config/initializers/secret_token.rb
218
- - spec/dummy/config/initializers/session_store.rb
219
- - spec/dummy/config/initializers/wrap_parameters.rb
220
- - spec/dummy/config/locales/doorkeeper.en.yml
221
- - spec/dummy/config/mongo.yml
222
- - spec/dummy/config/mongoid2.yml
223
- - spec/dummy/config/mongoid3.yml
224
- - spec/dummy/config/mongoid4.yml
225
- - spec/dummy/config/routes.rb
226
- - spec/dummy/db/migrate/20111122132257_create_users.rb
227
- - spec/dummy/db/migrate/20120312140401_add_password_to_users.rb
228
- - spec/dummy/db/migrate/20130902165751_create_doorkeeper_tables.rb
229
- - spec/dummy/db/migrate/20130902175349_add_owner_to_application.rb
230
- - spec/dummy/db/schema.rb
231
- - spec/dummy/log/test.log
232
- - spec/dummy/public/404.html
233
- - spec/dummy/public/422.html
234
- - spec/dummy/public/500.html
235
- - spec/dummy/public/favicon.ico
236
- - spec/dummy/script/rails
237
- - spec/lib/doorkeeper/openid_connect/config_spec.rb
238
- - spec/spec_helper.rb
239
- - spec/spec_helper_integration.rb
185
+ summary: OpenID Connect extension for Doorkeeper.
186
+ test_files: []
@@ -1,11 +0,0 @@
1
- module Doorkeeper
2
- module OpenidConnect
3
- module Models
4
- module Claims
5
- class AggregatedClaim < Claim
6
- attr_accessor :jwt
7
- end
8
- end
9
- end
10
- end
11
- end
@@ -1,15 +0,0 @@
1
- module Doorkeeper
2
- module OpenidConnect
3
- module Models
4
- module Claims
5
- class Claim
6
- attr_accessor :name
7
-
8
- def initialize(options = {})
9
- @name = options[:name]
10
- end
11
- end
12
- end
13
- end
14
- end
15
- end
@@ -1,11 +0,0 @@
1
- module Doorkeeper
2
- module OpenidConnect
3
- module Models
4
- module Claims
5
- class DistributedClaim < Claim
6
- attr_accessor :endpoint, :access_token
7
- end
8
- end
9
- end
10
- end
11
- end
@@ -1,28 +0,0 @@
1
- module Doorkeeper
2
- module OpenidConnect
3
- module Models
4
- module Claims
5
- class NormalClaim < Claim
6
- attr_reader :value
7
-
8
- def initialize(options = {})
9
- super(options)
10
- @value = options[:value]
11
- end
12
-
13
- def type
14
- :normal
15
- end
16
-
17
- def method_missing(method_sym, *arguments, &block)
18
- @value
19
- end
20
-
21
- def response_to?(method_sym, *arguments, &block)
22
- method_sym.to_s == @name
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end