miscellany 0.1.29 → 0.1.31

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
  SHA256:
3
- metadata.gz: 50e74322b5cc0f463bd09f082491be38e13cbdad7f0cab5e57ce6dfb11d104ec
4
- data.tar.gz: b35718937386a37a7b8125d9006d8c54b4f9a59310bc460d1ad7bd72f87f2dbc
3
+ metadata.gz: 2e8daf2119169fb42523d39ed55e69d90dc43db0bed0178971b60aa279797a3e
4
+ data.tar.gz: 96716ff17fbc11304ead76e6c294888db6b48fad5f3fa7ea214b6fb445870260
5
5
  SHA512:
6
- metadata.gz: f8594352d01054713237c5f70edab357aa69bd032ab6446746679998d359cf43b9f80e9b7d505f545581606b944e598d7e42f020b4b96fd706e48fe578468ba5
7
- data.tar.gz: dcf72b6a6f6cd180198e62e611b3f1b43ba372b0cce95310d4eb092f92d656e858ce3a35d924e7873794873701572a594f8a57637c635299ecc7d3902313bb7b
6
+ metadata.gz: c0320bcd305fbbaa8588c705293ae81be13cd20e2b41cad37aaa56e4fc84c1a7414a79bc15f3d22337bc376307a56064df26d238a979f4a0da5edfd1567dfd4f
7
+ data.tar.gz: 6f6f45648681860132544efc225e35d0575c7cf6f8a0b478ade5fe4defab8be9a498dd26d4af3f4159c5737146cee5332c31d7c912b10a1c083c126205f87423
@@ -104,7 +104,7 @@ module Miscellany
104
104
  def add_prefetches!(kwargs)
105
105
  return unless kwargs.present?
106
106
 
107
- if Rails.version < "8.0"
107
+ if Rails.version < "7.2"
108
108
  assert_mutability!
109
109
  else
110
110
  assert_modifiable!
@@ -233,6 +233,11 @@ module Miscellany
233
233
  def self.install
234
234
  apply_patches(ActiveRecordPatches, ::ActiveRecord)
235
235
 
236
+ begin
237
+ require "goldiloader"
238
+ rescue LoadError
239
+ end
240
+
236
241
  return unless defined? ::Goldiloader
237
242
 
238
243
  ::Goldiloader::AssociationLoader.module_eval do
@@ -4,32 +4,34 @@ module Miscellany
4
4
 
5
5
  # This hackery allows using JSON params along with file-uploads
6
6
  # On the frontend, use MultiPart form data, and add _parameters as an entry
7
- def params
8
- if @_params.nil?
9
- params_obj = @_params = super
10
- phash = params_obj.instance_variable_get(:@parameters)
11
- if phash[:_parameters].present?
12
- json_layer = JSON.parse(phash.delete(:_parameters))
13
- shared_keys = phash.keys & json_layer.keys
14
- main_layer = phash.slice(*shared_keys)
15
- merge_params(json_layer, main_layer)
16
- phash.merge!(json_layer)
17
- end
7
+ def process_action(*)
8
+ json_param = request.request_parameters[:_parameters]
9
+ if json_param.present?
10
+ parsed = JSON.parse(json_param)
11
+ overlapping_params = request.request_parameters.slice(*(request.request_parameters.keys & parsed.keys))
12
+ _merge_json_params(parsed, overlapping_params)
13
+
14
+ request.parameters.merge! parsed
15
+ request.request_parameters.merge! parsed
18
16
  end
19
- @_params
17
+ super
20
18
  end
21
19
 
22
20
  private
23
21
 
24
- def merge_params(base, layer)
22
+ def _wrapper_enabled?
23
+ (_wrapper_options.format.include?(:json) && request.request_parameters[:_parameters].present?) || super
24
+ end
25
+
26
+ def _merge_json_params(base, layer)
25
27
  if base.is_a?(Array) && (layer.is_a?(Hash) || layer.is_a?(Array))
26
28
  base.each_with_index.map do |v, i|
27
29
  over_key = layer.is_a?(Hash) ? i.to_s : i
28
- merge_params(v, layer[over_key])
30
+ _merge_json_params(v, layer[over_key])
29
31
  end
30
32
  elsif base.is_a?(Hash) && layer.is_a?(Hash)
31
33
  base.each do |k, v|
32
- base[k] = merge_params(v, layer[k])
34
+ base[k] = _merge_json_params(v, layer[k])
33
35
  end
34
36
  layer.merge(base)
35
37
  else
@@ -1,3 +1,3 @@
1
1
  module Miscellany
2
- VERSION = "0.1.29".freeze
2
+ VERSION = "0.1.31".freeze
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: miscellany
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.29
4
+ version: 0.1.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ethan Knapp