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:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2e8daf2119169fb42523d39ed55e69d90dc43db0bed0178971b60aa279797a3e
|
4
|
+
data.tar.gz: 96716ff17fbc11304ead76e6c294888db6b48fad5f3fa7ea214b6fb445870260
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 < "
|
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
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
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
|
-
|
17
|
+
super
|
20
18
|
end
|
21
19
|
|
22
20
|
private
|
23
21
|
|
24
|
-
def
|
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
|
-
|
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] =
|
34
|
+
base[k] = _merge_json_params(v, layer[k])
|
33
35
|
end
|
34
36
|
layer.merge(base)
|
35
37
|
else
|
data/lib/miscellany/version.rb
CHANGED