restful_json 4.4.0 → 4.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 939e484c768821d49878165026195240c627d440
4
- data.tar.gz: 43e95c66ab6f95d36d9872639018d1f61a34cd2a
3
+ metadata.gz: fc95c0c7d75c8d006f6bd7b03cdc10fecb5b6bfe
4
+ data.tar.gz: cd6dc9927dbb99b9fa44b033e5bd41c0a50654fe
5
5
  SHA512:
6
- metadata.gz: 0197b80bb543238b5c7c702ea467b9098cd1a3345041d755f02697213e125e13caf061e2c0e57b99039caa7319a52dba367754d7c62936d3f95a6513877ba381
7
- data.tar.gz: 3081b689fd3ae24b4e0b9a27ca46cee918d766ec59a29f1161b32594b4499919e279570f8080f656bb2833bfaf61380f24cd88dea5515d6e153ba90de993eb69
6
+ metadata.gz: cfe9ef00e8b242f50a38356e09af036896e82f759896afc3c4bbd990b287e831a70b0d544672143126110c831bd7e7bed4f3b7f14caf6a00b01e137176495966
7
+ data.tar.gz: 7b26424e5d2b3cf61f0453fee47b227fae3426577cad8336d801396436748b7ff117c26e78ca39d6970b29fc081c285ae6050ae9ee4c655c7b6a4ddaa03ca9d7
data/README.md CHANGED
@@ -84,7 +84,7 @@ You only define what you need to provide and it can easily integrate with common
84
84
  In your Rails app's `Gemfile`:
85
85
 
86
86
  ```ruby
87
- gem 'restful_json', '~> 4.3.0'
87
+ gem 'restful_json', '~> 4.5.0'
88
88
  ```
89
89
 
90
90
  Then:
@@ -296,37 +296,40 @@ RestfulJson.configure do
296
296
  # if not using permitters, will check respond_to?("(singular_model_name)_params".to_sym) and if true will __send__(method)
297
297
  self.actions_that_permit = [:create, :update]
298
298
 
299
- # will call .includes(...) for including and/or includes_for when action was generated by query_for
299
+ # will call .includes(...) for including and/or including_for_action when action was generated by query_for
300
300
  self.apply_includes_to_custom_queries = true
301
301
 
302
302
  # in error JSON, break out the exception info into fields for debugging
303
303
  self.return_error_data = true
304
304
 
305
305
  # the class that is rescued in each action method, but if nil will always reraise and not handle
306
- self.rescue_class = StandardError
306
+ self.rj_action_rescue_class = StandardError
307
307
 
308
308
  # will define order of errors handled and what status and/or i18n message key to use
309
- self.rescue_handlers = []
309
+ self.rj_action_rescue_handlers = []
310
+
311
+ # default to checking for the StrongParameters default method (singular model name)_params and using it if haven't tried
312
+ self.actions_supporting_params_methods = [:create, :update]
310
313
 
311
- # rescue_handlers are an ordered array of handlers to handle rescue of self.rescue_class or sub types.
314
+ # rescue_handlers are an ordered array of handlers to handle rescue of self.rj_action_rescue_class or sub types.
312
315
  # can use optional i18n_key for message, but will default to e.message if i18n_key not found.
313
316
 
314
317
  # support 404 error for ActiveRecord::RecordNotFound if using ActiveRecord.
315
318
  begin
316
319
  require 'active_record/errors'
317
- self.rescue_handlers << {exception_classes: [ActiveRecord::RecordNotFound], status: :not_found, i18n_key: 'api.not_found'.freeze}
320
+ self.rj_action_rescue_handlers << {exception_classes: [ActiveRecord::RecordNotFound], status: :not_found, i18n_key: 'api.not_found'.freeze}
318
321
  rescue LoadError, NameError
319
322
  end
320
323
 
321
324
  # support 403 error for CanCan::AccessDenied if using CanCan
322
325
  begin
323
326
  require 'cancan/exceptions'
324
- self.rescue_handlers << {exception_classes: [CanCan::AccessDenied], status: :forbidden, i18n_key: 'api.not_found'.freeze}
327
+ self.rj_action_rescue_handlers << {exception_classes: [CanCan::AccessDenied], status: :forbidden, i18n_key: 'api.not_found'.freeze}
325
328
  rescue LoadError, NameError
326
329
  end
327
330
 
328
- # support 500 error for everything else that is a self.rescue_class (in action)
329
- self.rescue_handlers << {status: :internal_server_error, i18n_key: 'api.internal_server_error'.freeze}
331
+ # support 500 error for everything else that is a self.rj_action_rescue_class (in action)
332
+ self.rj_action_rescue_handlers << {status: :internal_server_error, i18n_key: 'api.internal_server_error'.freeze}
330
333
 
331
334
  end
332
335
  ```
@@ -349,7 +352,7 @@ All of the app-level configuration parameters are configurable at the controller
349
352
  self.use_permitters = true
350
353
  self.avoid_respond_with = true
351
354
  self.return_error_data = true
352
- self.rescue_class = StandardError
355
+ self.rj_action_rescue_class = StandardError
353
356
  self.action_to_permitter = {create: nil, update: nil}
354
357
  self.actions_that_authorize = [:create, :update]
355
358
  self.allow_action_specific_params_methods = true
@@ -357,7 +360,7 @@ All of the app-level configuration parameters are configurable at the controller
357
360
 
358
361
  require 'active_record/errors'
359
362
  require 'cancan/exceptions'
360
- self.rescue_handlers [
363
+ self.rj_action_rescue_handlers [
361
364
  {exception_classes: [ActiveRecord::RecordNotFound], status: :not_found, i18n_key: 'api.not_found'.freeze},
362
365
  {exception_classes: [CanCan::AccessDenied], status: :forbidden, i18n_key: 'api.not_found'.freeze},
363
366
  {status: :internal_server_error, i18n_key: 'api.internal_server_error'.freeze}
@@ -929,7 +932,7 @@ To use the Rails 4 default Rack error handling, you need to remove all of the de
929
932
 
930
933
  ```ruby
931
934
  RestfulJson.configure do
932
- self.rescue_handlers = []
935
+ self.rj_action_rescue_handlers = []
933
936
  end
934
937
  ```
935
938
 
@@ -941,7 +944,7 @@ First, ensure that you've unset restful_json's rescue_handlers to use the Rails
941
944
 
942
945
  ```ruby
943
946
  RestfulJson.configure do
944
- self.rescue_handlers = []
947
+ self.rj_action_rescue_handlers = []
945
948
  end
946
949
  ```
947
950
 
@@ -988,14 +991,14 @@ The standard configuration will rescue StandardError in each action method and w
988
991
 
989
992
  There are a few options to customize the rescue and error rendering behavior.
990
993
 
991
- The `rescue_class` config option specifies what to rescue. Set to StandardError to behave like a normal rescue. Set to nil to just reraise everything rescued (to disable handling).
994
+ The `rj_action_rescue_class` config option specifies what to rescue. Set to StandardError to behave like a normal rescue. Set to nil to just reraise everything rescued (to disable handling).
992
995
 
993
- The `rescue_handlers` config option is like a minimalist set of rescue blocks that apply to every action method. For example, the following would effectively `rescue => e` (rescuing `StandardError`) and then for `ActiveRecord::RecordNotFound`, it would uses response status `:not_found` (HTTP 404). Otherwise it uses status `:internal_server_error` (HTTP 500). In both cases the error message is `e.message`:
996
+ The `rj_action_rescue_handlers` config option is like a minimalist set of rescue blocks that apply to every action method. For example, the following would effectively `rescue => e` (rescuing `StandardError`) and then for `ActiveRecord::RecordNotFound`, it would uses response status `:not_found` (HTTP 404). Otherwise it uses status `:internal_server_error` (HTTP 500). In both cases the error message is `e.message`:
994
997
 
995
998
  ```ruby
996
999
  RestfulJson.configure do
997
- self.rescue_class = StandardError
998
- self.rescue_handlers = [
1000
+ self.rj_action_rescue_class = StandardError
1001
+ self.rj_action_rescue_handlers = [
999
1002
  {exception_classes: [ActiveRecord::RecordNotFound], status: :not_found},
1000
1003
  {status: :internal_server_error}
1001
1004
  ]
@@ -1006,8 +1009,8 @@ In a slightly more complicated case, this configuration would catch all exceptio
1006
1009
 
1007
1010
  ```ruby
1008
1011
  RestfulJson.configure do
1009
- self.rescue_class = Exception
1010
- self.rescue_handlers = [
1012
+ self.rj_action_rescue_class = Exception
1013
+ self.rj_action_rescue_handlers = [
1011
1014
  {exception_ancestor_classes: [ActiveRecord::RecordNotFound], status: :not_found, i18n_key: 'api.not_found'.freeze},
1012
1015
  {i18n_key: 'api.internal_server_error'.freeze}
1013
1016
  ]
@@ -1020,8 +1023,8 @@ You can turn off backtrace cleaning in `error_data` by setting `clean_backtrace`
1020
1023
 
1021
1024
  ```ruby
1022
1025
  RestfulJson.configure do
1023
- self.rescue_class = Exception
1024
- self.rescue_handlers = [
1026
+ self.rj_action_rescue_class = Exception
1027
+ self.rj_action_rescue_handlers = [
1025
1028
  {exception_ancestor_classes: [ActiveRecord::RecordNotFound], status: :not_found, i18n_key: 'api.not_found'.freeze},
1026
1029
  {i18n_key: 'api.internal_server_error'.freeze, clean_backtrace: false}
1027
1030
  ]
@@ -1034,6 +1037,8 @@ See the [changelog][changelog] for basically what happened when, and git log for
1034
1037
 
1035
1038
  ### Upgrading
1036
1039
 
1040
+ To avoid an internal conflict with Rails' `rj_action_rescue_from` using the same variable, if you had set `rj_action_rescue_handlers` in your config or controller for restful_json use, please change the variable name to `rj_action_rescue_handlers`. Also similarly change `rj_action_rescue_class` to `rj_action_rescue_class`.
1041
+
1037
1042
  The class method:
1038
1043
 
1039
1044
  ```ruby
@@ -16,8 +16,8 @@ module RestfulJson
16
16
  :actions_supporting_params_methods,
17
17
  :avoid_respond_with,
18
18
  :return_error_data,
19
- :rescue_class,
20
- :rescue_handlers,
19
+ :rj_action_rescue_class,
20
+ :rj_action_rescue_handlers,
21
21
  :apply_includes_to_custom_queries
22
22
  ]
23
23
 
@@ -79,10 +79,10 @@ RestfulJson.configure do
79
79
  self.return_error_data = true
80
80
 
81
81
  # the class that is rescued in each action method, but if nil will always reraise and not handle
82
- self.rescue_class = StandardError
82
+ self.rj_action_rescue_class = StandardError
83
83
 
84
84
  # will define order of errors handled and what status and/or i18n message key to use
85
- self.rescue_handlers = []
85
+ self.rj_action_rescue_handlers = []
86
86
 
87
87
  # default to checking for the StrongParameters default method (singular model name)_params and using it if haven't tried
88
88
  self.actions_supporting_params_methods = [:create, :update]
@@ -93,18 +93,18 @@ RestfulJson.configure do
93
93
  # support 404 error for ActiveRecord::RecordNotFound if using ActiveRecord.
94
94
  begin
95
95
  require 'active_record/errors'
96
- self.rescue_handlers << {exception_classes: [ActiveRecord::RecordNotFound], status: :not_found, i18n_key: 'api.not_found'.freeze}
96
+ self.rj_action_rescue_handlers << {exception_classes: [ActiveRecord::RecordNotFound], status: :not_found, i18n_key: 'api.not_found'.freeze}
97
97
  rescue LoadError, NameError
98
98
  end
99
99
 
100
100
  # support 403 error for CanCan::AccessDenied if using CanCan
101
101
  begin
102
102
  require 'cancan/exceptions'
103
- self.rescue_handlers << {exception_classes: [CanCan::AccessDenied], status: :forbidden, i18n_key: 'api.not_found'.freeze}
103
+ self.rj_action_rescue_handlers << {exception_classes: [CanCan::AccessDenied], status: :forbidden, i18n_key: 'api.not_found'.freeze}
104
104
  rescue LoadError, NameError
105
105
  end
106
106
 
107
107
  # support 500 error for everything else that is a self.rescue_class (in action)
108
- self.rescue_handlers << {status: :internal_server_error, i18n_key: 'api.internal_server_error'.freeze}
108
+ self.rj_action_rescue_handlers << {status: :internal_server_error, i18n_key: 'api.internal_server_error'.freeze}
109
109
 
110
110
  end
@@ -242,15 +242,15 @@ module RestfulJson
242
242
  self.return_error_data
243
243
  end
244
244
 
245
- # Searches through self.rescue_handlers for appropriate handler.
246
- # self.rescue_handlers is an array of hashes where there is key :exception_classes and/or :exception_ancestor_classes
245
+ # Searches through self.rj_action_rescue_handlers for appropriate handler.
246
+ # self.rj_action_rescue_handlers is an array of hashes where there is key :exception_classes and/or :exception_ancestor_classes
247
247
  # along with :i18n_key and :status keys.
248
248
  # :exception_classes contains an array of classes to exactly match the exception.
249
249
  # :exception_ancestor_classes contains an array of classes that can match an ancestor of the exception.
250
250
  # If exception handled, returns hash, hopefully containing keys :i18n_key and :status.
251
251
  # Otherwise, returns nil which indicates that this exception should not be handled.
252
252
  def exception_handling_data(e)
253
- self.rescue_handlers.each do |handler|
253
+ self.rj_action_rescue_handlers.each do |handler|
254
254
  return handler if (handler.key?(:exception_classes) && handler[:exception_classes].include?(e.class))
255
255
  if handler.key?(:exception_ancestor_classes)
256
256
  handler[:exception_ancestor_classes].each do |ancestor|
@@ -264,7 +264,7 @@ module RestfulJson
264
264
  end
265
265
 
266
266
  def handle_or_raise(e)
267
- raise e if self.rescue_class.nil?
267
+ raise e if self.rj_action_rescue_class.nil?
268
268
  handling_data = exception_handling_data(e)
269
269
  raise e unless handling_data
270
270
  # this is something we intended to rescue, so log it
@@ -342,7 +342,7 @@ module RestfulJson
342
342
  params
343
343
  end
344
344
 
345
- # Renders error using handling data options (where options are probably hash from self.rescue_handlers that was matched).
345
+ # Renders error using handling data options (where options are probably hash from self.rj_action_rescue_handlers that was matched).
346
346
  #
347
347
  # If include_error_data? is true, it returns something like the following (with the appropriate HTTP status code via setting appropriate status in respond_do:
348
348
  # {"status": "not_found",
@@ -539,7 +539,7 @@ module RestfulJson
539
539
  @value = value
540
540
  instance_variable_set(@model_at_plural_name_sym, @value)
541
541
  render_or_respond(true)
542
- rescue self.rescue_class => e
542
+ rescue self.rj_action_rescue_class => e
543
543
  handle_or_raise(e)
544
544
  end
545
545
 
@@ -552,7 +552,7 @@ module RestfulJson
552
552
  allowed_params
553
553
  instance_variable_set(@model_at_singular_name_sym, @value)
554
554
  render_or_respond(true, @value.nil? ? :not_found : :ok)
555
- rescue self.rescue_class => e
555
+ rescue self.rj_action_rescue_class => e
556
556
  handle_or_raise(e)
557
557
  end
558
558
 
@@ -565,7 +565,7 @@ module RestfulJson
565
565
  @value = @model_class.new
566
566
  instance_variable_set(@model_at_singular_name_sym, @value)
567
567
  render_or_respond(true)
568
- rescue self.rescue_class => e
568
+ rescue self.rj_action_rescue_class => e
569
569
  handle_or_raise(e)
570
570
  end
571
571
 
@@ -578,7 +578,7 @@ module RestfulJson
578
578
  allowed_params
579
579
  instance_variable_set(@model_at_singular_name_sym, @value)
580
580
  @value
581
- rescue self.rescue_class => e
581
+ rescue self.rj_action_rescue_class => e
582
582
  handle_or_raise(e)
583
583
  end
584
584
 
@@ -589,7 +589,7 @@ module RestfulJson
589
589
  @value.save
590
590
  instance_variable_set(@model_at_singular_name_sym, @value)
591
591
  render_or_respond(false, :created)
592
- rescue self.rescue_class => e
592
+ rescue self.rj_action_rescue_class => e
593
593
  handle_or_raise(e)
594
594
  end
595
595
 
@@ -603,7 +603,7 @@ module RestfulJson
603
603
  @value.update_attributes(p_params) unless @value.nil?
604
604
  instance_variable_set(@model_at_singular_name_sym, @value)
605
605
  render_or_respond(true, @value.nil? ? :not_found : :ok)
606
- rescue self.rescue_class => e
606
+ rescue self.rj_action_rescue_class => e
607
607
  handle_or_raise(e)
608
608
  end
609
609
 
@@ -625,7 +625,7 @@ module RestfulJson
625
625
  else
626
626
  render_or_respond(false)
627
627
  end
628
- rescue self.rescue_class => e
628
+ rescue self.rj_action_rescue_class => e
629
629
  handle_or_raise(e)
630
630
  end
631
631
  end
@@ -1,3 +1,3 @@
1
1
  module RestfulJson
2
- VERSION = '4.4.0'
2
+ VERSION = '4.5.0'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: restful_json
3
3
  version: !ruby/object:Gem::Version
4
- version: 4.4.0
4
+ version: 4.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gary S. Weaver
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-19 00:00:00.000000000 Z
12
+ date: 2013-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport