lev 2.2.1 → 2.2.2

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.
Files changed (4) hide show
  1. data/lib/lev/handler.rb +28 -28
  2. data/lib/lev/version.rb +1 -1
  3. metadata +41 -9
  4. checksums.yaml +0 -15
@@ -14,28 +14,28 @@ module Lev
14
14
  end
15
15
  end
16
16
 
17
- # Common methods for all handlers. Handlers are extensions of Routines
18
- # and are responsible for taking input data from a form or other widget and
17
+ # Common methods for all handlers. Handlers are extensions of Routines
18
+ # and are responsible for taking input data from a form or other widget and
19
19
  # doing something with it. See Lev::Routine for more information.
20
20
  #
21
21
  # All handlers must:
22
22
  # 2) call "lev_handler"
23
- # 3) implement the 'handle' method which takes no arguments and does the
23
+ # 3) implement the 'handle' method which takes no arguments and does the
24
24
  # work the handler is charged with
25
- # 4) implement the 'authorized?' method which returns true iff the
25
+ # 4) implement the 'authorized?' method which returns true iff the
26
26
  # caller is authorized to do what the handler is charged with
27
27
  #
28
28
  # Handlers may:
29
29
  # 1) implement the 'setup' method which runs before 'authorized?' and 'handle'.
30
- # This method can do anything, and will likely include setting up some
30
+ # This method can do anything, and will likely include setting up some
31
31
  # instance objects based on the params.
32
32
  # 2) Call the class method "paramify" to declare, cast, and validate parts of
33
33
  # the params hash. The first argument to paramify is the key in params
34
34
  # which points to a hash of params to be paramified. If this first argument
35
- # is unspecified (or specified as `:paramify`, a reserved symbol), the entire
36
- # params hash will be paramified. The block passed to paramify looks just
35
+ # is unspecified (or specified as `:paramify`, a reserved symbol), the entire
36
+ # params hash will be paramified. The block passed to paramify looks just
37
37
  # like the guts of an ActiveAttr model.
38
- #
38
+ #
39
39
  # When the incoming params includes :search => {:type, :terms, :num_results}
40
40
  # the Handler class would look like:
41
41
  #
@@ -53,9 +53,9 @@ module Lev
53
53
  #
54
54
  # attribute :num_results, type: Integer
55
55
  # validates :num_results, numericality: { only_integer: true,
56
- # greater_than_or_equal_to: 0 }
56
+ # greater_than_or_equal_to: 0 }
57
57
  # end
58
- #
58
+ #
59
59
  # def handle
60
60
  # # By this time, if there were any errors the handler would have
61
61
  # # already populated the errors object and returned.
@@ -81,23 +81,23 @@ module Lev
81
81
  #
82
82
  # These methods are available iff these data were supplied in the call
83
83
  # to the handler (not all handlers need all of this). However, note that
84
- # the Lev::HandleWith module supplies an easy way to call Handlers from
84
+ # the Lev::HandleWith module supplies an easy way to call Handlers from
85
85
  # controllers -- when this way is used, all of the methods above are available.
86
86
  #
87
- # Handler 'handle' methods don't return anything; they just set values in
87
+ # Handler 'handle' methods don't return anything; they just set values in
88
88
  # the errors and results objects. The documentation for each handler
89
89
  # should explain what the results will be and any nonstandard data required
90
90
  # to be passed in in the options.
91
91
  #
92
- # In addition to the class- and instance-level "call" methods provided by
92
+ # In addition to the class- and instance-level "call" methods provided by
93
93
  # Lev::Routine, Handlers have a class-level "handle" method (an alias of
94
94
  # the class-level "call" method). The convention for handlers is that the
95
95
  # call methods take a hash of options/inputs. The instance-level handle
96
96
  # method doesn't take any arguments since the arguments have been stored
97
97
  # as instance variables by the time the instance-level handle method is called.
98
- #
98
+ #
99
99
  # Example:
100
- #
100
+ #
101
101
  # class MyHandler
102
102
  # lev_handler
103
103
  # protected
@@ -119,7 +119,7 @@ module Lev
119
119
  end
120
120
 
121
121
  module ClassMethods
122
-
122
+
123
123
  def handle(options={})
124
124
  call(options)
125
125
  end
@@ -140,14 +140,14 @@ module Lev
140
140
  end
141
141
 
142
142
  # Attach a name to this dynamic class
143
- const_set("#{group.to_s.capitalize}Paramifier",
143
+ const_set("#{group.to_s.capitalize}Paramifier",
144
144
  paramify_classes[group])
145
145
 
146
146
  paramify_classes[group].class_eval(&block)
147
147
  paramify_classes[group].group = group
148
148
  end
149
149
 
150
- # Define the "#{group}_params" method to get the paramifier
150
+ # Define the "#{group}_params" method to get the paramifier
151
151
  # instance wrapping the params. Choose the subset of params
152
152
  # based on the group, choosing all params if the default group
153
153
  # is used.
@@ -155,7 +155,7 @@ module Lev
155
155
  define_method method_name.to_sym do
156
156
  if !instance_variable_get(variable_sym)
157
157
  params_subset = group == :paramify ? params : params[group]
158
- instance_variable_set(variable_sym,
158
+ instance_variable_set(variable_sym,
159
159
  self.class.paramify_classes[group].new(params_subset))
160
160
  end
161
161
  instance_variable_get(variable_sym)
@@ -187,12 +187,12 @@ module Lev
187
187
  attr_accessor :auth_error_details
188
188
 
189
189
  # This is a method required by Lev::Routine. It enforces the steps common
190
- # to all handlers.
190
+ # to all handlers.
191
191
  def exec(options)
192
- self.params = options.delete(:params)
193
- self.request = options.delete(:request)
194
- self.caller = options.delete(:caller)
195
- self.options = options
192
+ self.params = options[:params]
193
+ self.request = options[:request]
194
+ self.caller = options[:caller]
195
+ self.options = options.except(:params, :request, :caller)
196
196
 
197
197
  setup
198
198
  raise Lev.configuration.security_transgression_error, auth_error_details unless authorized?
@@ -203,19 +203,19 @@ module Lev
203
203
  # Default setup implementation -- a no-op
204
204
  def setup; end
205
205
 
206
- # Default authorized? implementation. It returns true so that every
206
+ # Default authorized? implementation. It returns true so that every
207
207
  # handler realization has to make a conscious decision about who is authorized
208
- # to call the handler. To help the common error of forgetting to override this
208
+ # to call the handler. To help the common error of forgetting to override this
209
209
  # method in a handler instance, we provide an error message when this default
210
210
  # implementation is called.
211
211
  def authorized?
212
- self.auth_error_details =
212
+ self.auth_error_details =
213
213
  "Access to handlers is prevented by default. You need to override the " +
214
214
  "'authorized?' in this handler to explicitly grant access."
215
215
  false
216
216
  end
217
217
 
218
-
218
+
219
219
 
220
220
  # Helper method to validate paramified params and to transfer any errors
221
221
  # into the handler.
@@ -1,3 +1,3 @@
1
1
  module Lev
2
- VERSION = "2.2.1"
2
+ VERSION = "2.2.2"
3
3
  end
metadata CHANGED
@@ -1,18 +1,20 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lev
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.1
4
+ version: 2.2.2
5
+ prerelease:
5
6
  platform: ruby
6
7
  authors:
7
8
  - JP Slavinsky
8
9
  autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2014-09-02 00:00:00.000000000 Z
12
+ date: 2016-06-30 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activemodel
15
16
  requirement: !ruby/object:Gem::Requirement
17
+ none: false
16
18
  requirements:
17
19
  - - ! '>='
18
20
  - !ruby/object:Gem::Version
@@ -20,6 +22,7 @@ dependencies:
20
22
  type: :runtime
21
23
  prerelease: false
22
24
  version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
23
26
  requirements:
24
27
  - - ! '>='
25
28
  - !ruby/object:Gem::Version
@@ -27,6 +30,7 @@ dependencies:
27
30
  - !ruby/object:Gem::Dependency
28
31
  name: activerecord
29
32
  requirement: !ruby/object:Gem::Requirement
33
+ none: false
30
34
  requirements:
31
35
  - - ! '>='
32
36
  - !ruby/object:Gem::Version
@@ -34,6 +38,7 @@ dependencies:
34
38
  type: :runtime
35
39
  prerelease: false
36
40
  version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
37
42
  requirements:
38
43
  - - ! '>='
39
44
  - !ruby/object:Gem::Version
@@ -41,6 +46,7 @@ dependencies:
41
46
  - !ruby/object:Gem::Dependency
42
47
  name: actionpack
43
48
  requirement: !ruby/object:Gem::Requirement
49
+ none: false
44
50
  requirements:
45
51
  - - ! '>='
46
52
  - !ruby/object:Gem::Version
@@ -48,6 +54,7 @@ dependencies:
48
54
  type: :runtime
49
55
  prerelease: false
50
56
  version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
51
58
  requirements:
52
59
  - - ! '>='
53
60
  - !ruby/object:Gem::Version
@@ -55,6 +62,7 @@ dependencies:
55
62
  - !ruby/object:Gem::Dependency
56
63
  name: transaction_isolation
57
64
  requirement: !ruby/object:Gem::Requirement
65
+ none: false
58
66
  requirements:
59
67
  - - ! '>='
60
68
  - !ruby/object:Gem::Version
@@ -62,6 +70,7 @@ dependencies:
62
70
  type: :runtime
63
71
  prerelease: false
64
72
  version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
65
74
  requirements:
66
75
  - - ! '>='
67
76
  - !ruby/object:Gem::Version
@@ -69,6 +78,7 @@ dependencies:
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: transaction_retry
71
80
  requirement: !ruby/object:Gem::Requirement
81
+ none: false
72
82
  requirements:
73
83
  - - ! '>='
74
84
  - !ruby/object:Gem::Version
@@ -76,6 +86,7 @@ dependencies:
76
86
  type: :runtime
77
87
  prerelease: false
78
88
  version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
79
90
  requirements:
80
91
  - - ! '>='
81
92
  - !ruby/object:Gem::Version
@@ -83,6 +94,7 @@ dependencies:
83
94
  - !ruby/object:Gem::Dependency
84
95
  name: active_attr
85
96
  requirement: !ruby/object:Gem::Requirement
97
+ none: false
86
98
  requirements:
87
99
  - - ! '>='
88
100
  - !ruby/object:Gem::Version
@@ -90,6 +102,7 @@ dependencies:
90
102
  type: :runtime
91
103
  prerelease: false
92
104
  version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
93
106
  requirements:
94
107
  - - ! '>='
95
108
  - !ruby/object:Gem::Version
@@ -97,6 +110,7 @@ dependencies:
97
110
  - !ruby/object:Gem::Dependency
98
111
  name: hashie
99
112
  requirement: !ruby/object:Gem::Requirement
113
+ none: false
100
114
  requirements:
101
115
  - - ! '>='
102
116
  - !ruby/object:Gem::Version
@@ -104,6 +118,7 @@ dependencies:
104
118
  type: :runtime
105
119
  prerelease: false
106
120
  version_requirements: !ruby/object:Gem::Requirement
121
+ none: false
107
122
  requirements:
108
123
  - - ! '>='
109
124
  - !ruby/object:Gem::Version
@@ -111,6 +126,7 @@ dependencies:
111
126
  - !ruby/object:Gem::Dependency
112
127
  name: bundler
113
128
  requirement: !ruby/object:Gem::Requirement
129
+ none: false
114
130
  requirements:
115
131
  - - ! '>='
116
132
  - !ruby/object:Gem::Version
@@ -118,6 +134,7 @@ dependencies:
118
134
  type: :development
119
135
  prerelease: false
120
136
  version_requirements: !ruby/object:Gem::Requirement
137
+ none: false
121
138
  requirements:
122
139
  - - ! '>='
123
140
  - !ruby/object:Gem::Version
@@ -125,6 +142,7 @@ dependencies:
125
142
  - !ruby/object:Gem::Dependency
126
143
  name: rake
127
144
  requirement: !ruby/object:Gem::Requirement
145
+ none: false
128
146
  requirements:
129
147
  - - ! '>='
130
148
  - !ruby/object:Gem::Version
@@ -132,6 +150,7 @@ dependencies:
132
150
  type: :development
133
151
  prerelease: false
134
152
  version_requirements: !ruby/object:Gem::Requirement
153
+ none: false
135
154
  requirements:
136
155
  - - ! '>='
137
156
  - !ruby/object:Gem::Version
@@ -139,6 +158,7 @@ dependencies:
139
158
  - !ruby/object:Gem::Dependency
140
159
  name: rspec
141
160
  requirement: !ruby/object:Gem::Requirement
161
+ none: false
142
162
  requirements:
143
163
  - - ! '>='
144
164
  - !ruby/object:Gem::Version
@@ -146,6 +166,7 @@ dependencies:
146
166
  type: :development
147
167
  prerelease: false
148
168
  version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
149
170
  requirements:
150
171
  - - ! '>='
151
172
  - !ruby/object:Gem::Version
@@ -153,6 +174,7 @@ dependencies:
153
174
  - !ruby/object:Gem::Dependency
154
175
  name: sqlite3
155
176
  requirement: !ruby/object:Gem::Requirement
177
+ none: false
156
178
  requirements:
157
179
  - - ! '>='
158
180
  - !ruby/object:Gem::Version
@@ -160,6 +182,7 @@ dependencies:
160
182
  type: :development
161
183
  prerelease: false
162
184
  version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
163
186
  requirements:
164
187
  - - ! '>='
165
188
  - !ruby/object:Gem::Version
@@ -167,6 +190,7 @@ dependencies:
167
190
  - !ruby/object:Gem::Dependency
168
191
  name: debugger
169
192
  requirement: !ruby/object:Gem::Requirement
193
+ none: false
170
194
  requirements:
171
195
  - - ! '>='
172
196
  - !ruby/object:Gem::Version
@@ -174,6 +198,7 @@ dependencies:
174
198
  type: :development
175
199
  prerelease: false
176
200
  version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
177
202
  requirements:
178
203
  - - ! '>='
179
204
  - !ruby/object:Gem::Version
@@ -185,10 +210,6 @@ executables: []
185
210
  extensions: []
186
211
  extra_rdoc_files: []
187
212
  files:
188
- - LICENSE.txt
189
- - README.md
190
- - Rakefile
191
- - lib/lev.rb
192
213
  - lib/lev/better_active_model_errors.rb
193
214
  - lib/lev/delegate_to_routine.rb
194
215
  - lib/lev/error.rb
@@ -207,6 +228,10 @@ files:
207
228
  - lib/lev/transaction_isolation.rb
208
229
  - lib/lev/utilities.rb
209
230
  - lib/lev/version.rb
231
+ - lib/lev.rb
232
+ - LICENSE.txt
233
+ - Rakefile
234
+ - README.md
210
235
  - spec/create_sprocket_spec.rb
211
236
  - spec/deep_merge_spec.rb
212
237
  - spec/outputs_spec.rb
@@ -223,26 +248,33 @@ files:
223
248
  homepage: http://github.com/lml/lev
224
249
  licenses:
225
250
  - MIT
226
- metadata: {}
227
251
  post_install_message:
228
252
  rdoc_options: []
229
253
  require_paths:
230
254
  - lib
231
255
  required_ruby_version: !ruby/object:Gem::Requirement
256
+ none: false
232
257
  requirements:
233
258
  - - ! '>='
234
259
  - !ruby/object:Gem::Version
235
260
  version: '0'
261
+ segments:
262
+ - 0
263
+ hash: 3271005735947250586
236
264
  required_rubygems_version: !ruby/object:Gem::Requirement
265
+ none: false
237
266
  requirements:
238
267
  - - ! '>='
239
268
  - !ruby/object:Gem::Version
240
269
  version: '0'
270
+ segments:
271
+ - 0
272
+ hash: 3271005735947250586
241
273
  requirements: []
242
274
  rubyforge_project:
243
- rubygems_version: 2.2.2
275
+ rubygems_version: 1.8.23.2
244
276
  signing_key:
245
- specification_version: 4
277
+ specification_version: 3
246
278
  summary: Ride the rails but don't touch them.
247
279
  test_files:
248
280
  - spec/create_sprocket_spec.rb
checksums.yaml DELETED
@@ -1,15 +0,0 @@
1
- ---
2
- !binary "U0hBMQ==":
3
- metadata.gz: !binary |-
4
- ZDNmNjBkMTY4YWExNTJlYTE0YjViMjc4NGUyNzIwZTY0N2ExN2NjZg==
5
- data.tar.gz: !binary |-
6
- NjU2YmVkZGExY2I2MTU5Njk2N2NiOWFkODZhYzc1NmQ3OGY0MDRmNQ==
7
- SHA512:
8
- metadata.gz: !binary |-
9
- ZjFmZjA2ZmZiODUzY2I2MDQ4ZTk3YTU1NDQ2ODQyNGM3MmNlYzFiMjZmNDY3
10
- ZDM4MjBhMGU4MjE5Zjg4MjcwY2E3OTcxNTUzZDAyMTMwZWFmZjQ4ZmFiNjgy
11
- MjIyYmVlMmE0ZTc4NWUxYTRlMTlkMDRmNDg0YWMzZjJlNmI1YWM=
12
- data.tar.gz: !binary |-
13
- YjQ4NzQwZmEwOTczNzAxZjUwYzQ3MGNmMDYxNjhiNGI2NGVjM2I1YWU2ZTE0
14
- NGM2MmQ4YzExNjI1MzU5Yjk1Y2Q0YWIzMGIzODE5NDVmMWI3ZjJjODYyNjlk
15
- NGZkYjY2ZTAwMTg1NmZhNjgyMzdhYTU2OWNmNjcxODA0MzEwNzk=