sanity-ruby 0.2.0 → 0.3.0
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 +4 -4
- data/.dockerignore +10 -0
- data/.gitignore +1 -0
- data/Dockerfile-2.6 +30 -0
- data/Dockerfile-2.7 +31 -0
- data/Dockerfile-3.0 +30 -0
- data/Gemfile +1 -1
- data/README.md +72 -2
- data/bin/dev-lint +3 -0
- data/bin/dev-test +3 -0
- data/docker-compose.yml +46 -0
- data/lib/sanity/groq/filter.rb +2 -0
- data/lib/sanity/groq/slice.rb +1 -1
- data/lib/sanity/http/mutation.rb +20 -3
- data/lib/sanity/http/query.rb +19 -3
- data/lib/sanity/http/where.rb +3 -1
- data/lib/sanity/refinements/strings.rb +1 -1
- data/lib/sanity/resource.rb +2 -0
- data/lib/sanity/serializable.rb +61 -0
- data/lib/sanity/version.rb +1 -1
- data/lib/sanity.rb +3 -0
- metadata +11 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 6992c7a949150c3c6d2fc4f927e74f18b2b00d7158cb26905e195eb7d91da627
|
|
4
|
+
data.tar.gz: 0c2e2088e770fe98cff7a1522c6a39076a8efc43410ea9eb241311e2611cd1fe
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2fff7714db16558133549a6cc8ed496cc2e157b17b533a44501ad125a0f7636d1575c9766939989711c7f957de7e6167cbd285963bbf8aac19bcdb7c2cde9377
|
|
7
|
+
data.tar.gz: 360d11148a57b4880b7cc661e4f7b7a51b8e2be937f991a4f1a6546fb21be348bd11123bba3d46eb71178a8c6aa628bcc107e7cee55ebeb613f4a80b4df5cdbe
|
data/.dockerignore
ADDED
data/.gitignore
CHANGED
data/Dockerfile-2.6
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
FROM ruby:2.6-alpine as base
|
|
2
|
+
|
|
3
|
+
RUN apk add --update --no-cache \
|
|
4
|
+
build-base \
|
|
5
|
+
cmake \
|
|
6
|
+
tzdata \
|
|
7
|
+
bash \
|
|
8
|
+
git
|
|
9
|
+
|
|
10
|
+
ENV APP_PATH /var/www/sanity-ruby
|
|
11
|
+
RUN mkdir -p $APP_PATH
|
|
12
|
+
|
|
13
|
+
# Build intermediate
|
|
14
|
+
FROM base as intermediate
|
|
15
|
+
|
|
16
|
+
WORKDIR $APP_PATH
|
|
17
|
+
|
|
18
|
+
RUN rm -rf /var/cache/apk/*
|
|
19
|
+
|
|
20
|
+
FROM base as development
|
|
21
|
+
|
|
22
|
+
COPY --from=intermediate $APP_PATH $APP_PATH
|
|
23
|
+
|
|
24
|
+
WORKDIR $APP_PATH
|
|
25
|
+
|
|
26
|
+
ENV GEM_HOME $APP_PATH/vendor/bundle
|
|
27
|
+
ENV BUNDLE_PATH vendor/bundle
|
|
28
|
+
|
|
29
|
+
COPY . ./
|
|
30
|
+
RUN bundle check || bundle install
|
data/Dockerfile-2.7
ADDED
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
FROM ruby:2.7-alpine as base
|
|
2
|
+
|
|
3
|
+
RUN apk add --update --no-cache \
|
|
4
|
+
build-base \
|
|
5
|
+
cmake \
|
|
6
|
+
tzdata \
|
|
7
|
+
bash \
|
|
8
|
+
git
|
|
9
|
+
|
|
10
|
+
ENV APP_PATH /var/www/sanity-ruby
|
|
11
|
+
RUN mkdir -p $APP_PATH
|
|
12
|
+
|
|
13
|
+
# Build intermediate
|
|
14
|
+
FROM base as intermediate
|
|
15
|
+
|
|
16
|
+
WORKDIR $APP_PATH
|
|
17
|
+
|
|
18
|
+
RUN rm -rf /var/cache/apk/*
|
|
19
|
+
|
|
20
|
+
FROM base as development
|
|
21
|
+
|
|
22
|
+
COPY --from=intermediate $APP_PATH $APP_PATH
|
|
23
|
+
|
|
24
|
+
WORKDIR $APP_PATH
|
|
25
|
+
|
|
26
|
+
ENV GEM_HOME $APP_PATH/vendor/bundle
|
|
27
|
+
ENV BUNDLE_PATH vendor/bundle
|
|
28
|
+
|
|
29
|
+
COPY . ./
|
|
30
|
+
RUN bundle check || bundle install
|
|
31
|
+
|
data/Dockerfile-3.0
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
FROM ruby:3.0-alpine as base
|
|
2
|
+
|
|
3
|
+
RUN apk add --update --no-cache \
|
|
4
|
+
build-base \
|
|
5
|
+
cmake \
|
|
6
|
+
tzdata \
|
|
7
|
+
bash \
|
|
8
|
+
git
|
|
9
|
+
|
|
10
|
+
ENV APP_PATH /var/www/sanity-ruby
|
|
11
|
+
RUN mkdir -p $APP_PATH
|
|
12
|
+
|
|
13
|
+
# Build intermediate
|
|
14
|
+
FROM base as intermediate
|
|
15
|
+
|
|
16
|
+
WORKDIR $APP_PATH
|
|
17
|
+
|
|
18
|
+
RUN rm -rf /var/cache/apk/*
|
|
19
|
+
|
|
20
|
+
FROM base as development
|
|
21
|
+
|
|
22
|
+
COPY --from=intermediate $APP_PATH $APP_PATH
|
|
23
|
+
|
|
24
|
+
WORKDIR $APP_PATH
|
|
25
|
+
|
|
26
|
+
ENV GEM_HOME $APP_PATH/vendor/bundle
|
|
27
|
+
ENV BUNDLE_PATH vendor/bundle
|
|
28
|
+
|
|
29
|
+
COPY . ./
|
|
30
|
+
RUN bundle check || bundle install
|
data/Gemfile
CHANGED
data/README.md
CHANGED
|
@@ -9,7 +9,7 @@ The library also provides other features, like:
|
|
|
9
9
|
|
|
10
10
|
- Easy configuration for fast setup and use.
|
|
11
11
|
- A pre-defined class to help make any PORO a "sanity resource"
|
|
12
|
-
- Extensibility in overriding the
|
|
12
|
+
- Extensibility in overriding the serializer for the API response results
|
|
13
13
|
- A small DSL around GROQ queries
|
|
14
14
|
|
|
15
15
|
## Contents
|
|
@@ -17,6 +17,7 @@ The library also provides other features, like:
|
|
|
17
17
|
- [Sanity](#sanity)
|
|
18
18
|
- [Contents](#contents)
|
|
19
19
|
- [Getting Started](#getting-started)
|
|
20
|
+
- [Serialization](#serialization)
|
|
20
21
|
- [Mutating](#mutating)
|
|
21
22
|
- [Querying](#querying)
|
|
22
23
|
- [Development](#development)
|
|
@@ -100,6 +101,63 @@ class User
|
|
|
100
101
|
end
|
|
101
102
|
```
|
|
102
103
|
|
|
104
|
+
## Serialization
|
|
105
|
+
|
|
106
|
+
When using a PORO, you can opt-in to automatically serialize your results. You
|
|
107
|
+
must define all attributes that should be serialized.
|
|
108
|
+
|
|
109
|
+
```ruby
|
|
110
|
+
class User < Sanity::Resource
|
|
111
|
+
auto_serialize
|
|
112
|
+
...
|
|
113
|
+
end
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
Additionally, you can configure a custom serializer. See how to define a custom
|
|
117
|
+
serializer [below](#custom-serializer).
|
|
118
|
+
|
|
119
|
+
```ruby
|
|
120
|
+
class User < Sanity::Resource
|
|
121
|
+
serializer UserSerializer
|
|
122
|
+
...
|
|
123
|
+
end
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
Finally, at query time you can also pass in a serializer. A serializer specified
|
|
127
|
+
at query time will take priority over any other configuration.
|
|
128
|
+
|
|
129
|
+
```ruby
|
|
130
|
+
User.where(active: true, serializer: UserSerializer)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
where `UserSerializer` might look like:
|
|
134
|
+
|
|
135
|
+
```ruby
|
|
136
|
+
class UserSerializer
|
|
137
|
+
class << self
|
|
138
|
+
def call(...)
|
|
139
|
+
new(...).call
|
|
140
|
+
end
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
attr_reader :results
|
|
144
|
+
|
|
145
|
+
def initialize(args)
|
|
146
|
+
@results = args["result"]
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
def call
|
|
150
|
+
results.map do |result|
|
|
151
|
+
User.new(
|
|
152
|
+
_id: result["_id"],
|
|
153
|
+
_type: result["_type"]
|
|
154
|
+
)
|
|
155
|
+
end
|
|
156
|
+
end
|
|
157
|
+
end
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
|
|
103
161
|
## Mutating
|
|
104
162
|
|
|
105
163
|
To [create a document](https://www.sanity.io/docs/http-mutations#c732f27330a4):
|
|
@@ -137,7 +195,7 @@ Sanity::Document.patch(params: { _id: "1234-321", set: { first_name: "Carl" }})
|
|
|
137
195
|
To [find document(s) by id](https://www.sanity.io/docs/http-doc):
|
|
138
196
|
|
|
139
197
|
```ruby
|
|
140
|
-
Sanity::Document.find(
|
|
198
|
+
Sanity::Document.find(id: "1234-321")
|
|
141
199
|
```
|
|
142
200
|
|
|
143
201
|
To find documents based on certain fields:
|
|
@@ -218,12 +276,24 @@ GROQ
|
|
|
218
276
|
Sanity::Document.where(groq: groq_query, variables: {name: "Monsters, Inc."})
|
|
219
277
|
```
|
|
220
278
|
|
|
279
|
+
|
|
221
280
|
## Development
|
|
222
281
|
|
|
223
282
|
After checking out the repo, run `bin/setup` to install dependencies. Then, run `rake test` to run the tests. You can also run `bin/console` for an interactive prompt that will allow you to experiment.
|
|
224
283
|
|
|
225
284
|
To install this gem onto your local machine, run `bundle exec rake install`.
|
|
226
285
|
|
|
286
|
+
### Testing across all supported versions:
|
|
287
|
+
|
|
288
|
+
To run tests across all gem supported ruby versions (requires Docker):
|
|
289
|
+
```sh
|
|
290
|
+
bin/dev-test
|
|
291
|
+
```
|
|
292
|
+
To run lint across all gem supported ruby versions (requires Docker):
|
|
293
|
+
```sh
|
|
294
|
+
bin/dev-lint
|
|
295
|
+
```
|
|
296
|
+
|
|
227
297
|
## Contributing
|
|
228
298
|
|
|
229
299
|
Bug reports and pull requests are welcome on GitHub at https://github.com/morning-brew/sanity-ruby.
|
data/bin/dev-lint
ADDED
data/bin/dev-test
ADDED
data/docker-compose.yml
ADDED
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
version: '3.9'
|
|
2
|
+
|
|
3
|
+
services:
|
|
4
|
+
'2.6':
|
|
5
|
+
build:
|
|
6
|
+
context: .
|
|
7
|
+
dockerfile: Dockerfile-2.6
|
|
8
|
+
tty: true
|
|
9
|
+
stdin_open: true
|
|
10
|
+
volumes:
|
|
11
|
+
- ./bin:/var/www/sanity-ruby/bin/
|
|
12
|
+
- ./lib:/var/www/sanity-ruby/lib/
|
|
13
|
+
- ./test:/var/www/sanity-ruby/test/
|
|
14
|
+
container_name: sanity-ruby-2.6
|
|
15
|
+
command: bash
|
|
16
|
+
|
|
17
|
+
'2.7':
|
|
18
|
+
build:
|
|
19
|
+
context: .
|
|
20
|
+
dockerfile: Dockerfile-2.7
|
|
21
|
+
tty: true
|
|
22
|
+
stdin_open: true
|
|
23
|
+
volumes:
|
|
24
|
+
- ./bin:/var/www/sanity-ruby/bin/
|
|
25
|
+
- ./lib:/var/www/sanity-ruby/lib/
|
|
26
|
+
- ./test:/var/www/sanity-ruby/test/
|
|
27
|
+
container_name: sanity-ruby-2.7
|
|
28
|
+
command: bash
|
|
29
|
+
|
|
30
|
+
'3.0':
|
|
31
|
+
build:
|
|
32
|
+
context: .
|
|
33
|
+
dockerfile: Dockerfile-3.0
|
|
34
|
+
tty: true
|
|
35
|
+
stdin_open: true
|
|
36
|
+
volumes:
|
|
37
|
+
- ./bin:/var/www/sanity-ruby/bin/
|
|
38
|
+
- ./lib:/var/www/sanity-ruby/lib/
|
|
39
|
+
- ./test:/var/www/sanity-ruby/test/
|
|
40
|
+
container_name: sanity-ruby-3.0
|
|
41
|
+
command: bash
|
|
42
|
+
|
|
43
|
+
volumes:
|
|
44
|
+
bin:
|
|
45
|
+
lib:
|
|
46
|
+
test:
|
data/lib/sanity/groq/filter.rb
CHANGED
|
@@ -68,6 +68,8 @@ module Sanity
|
|
|
68
68
|
filter_value << "#{filter(key: nested_key)} #{key} #{equal} #{cast_value(val)}"
|
|
69
69
|
elsif val.is_a?(Array) && !val[0].is_a?(Hash)
|
|
70
70
|
filter_value << "#{key} in #{val.map(&:to_s)}"
|
|
71
|
+
elsif [true, false].include?(val)
|
|
72
|
+
filter_value << "#{filter(key: nested_key)} #{key} #{equal} #{val}"
|
|
71
73
|
elsif LOGICAL_OPERATORS.key?(key)
|
|
72
74
|
if val.is_a?(Array)
|
|
73
75
|
val.each { |hsh| iterate(hsh, nested_key: key) }
|
data/lib/sanity/groq/slice.rb
CHANGED
data/lib/sanity/http/mutation.rb
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require "set"
|
|
3
4
|
using Sanity::Refinements::Strings
|
|
4
5
|
using Sanity::Refinements::Arrays
|
|
5
6
|
|
|
@@ -34,13 +35,18 @@ module Sanity
|
|
|
34
35
|
visibility: :sync
|
|
35
36
|
}.freeze
|
|
36
37
|
|
|
37
|
-
attr_reader :options, :params, :resource_klass, :query_set, :
|
|
38
|
+
attr_reader :options, :params, :resource_klass, :query_set, :serializer
|
|
38
39
|
|
|
39
40
|
def initialize(**args)
|
|
40
41
|
@resource_klass = args.delete(:resource_klass)
|
|
41
42
|
@params = args.delete(:params)
|
|
42
43
|
@query_set = Set.new
|
|
43
|
-
|
|
44
|
+
|
|
45
|
+
warn RESULT_WRAPPER_DEPRECATION_WARNING if args[:result_wrapper]
|
|
46
|
+
@serializer = args.delete(:serializer) ||
|
|
47
|
+
args.delete(:result_wrapper) || # kept for backwards compatibility
|
|
48
|
+
klass_serializer ||
|
|
49
|
+
Sanity::Http::Results
|
|
44
50
|
|
|
45
51
|
raise ArgumentError, "resource_klass must be defined" unless resource_klass
|
|
46
52
|
raise ArgumentError, "params argument is missing" unless params
|
|
@@ -59,10 +65,15 @@ module Sanity
|
|
|
59
65
|
|
|
60
66
|
def call
|
|
61
67
|
Net::HTTP.post(uri, {"#{REQUEST_KEY}": body}.to_json, headers).then do |result|
|
|
62
|
-
block_given? ? yield(
|
|
68
|
+
block_given? ? yield(serializer.call(result)) : serializer.call(result)
|
|
63
69
|
end
|
|
64
70
|
end
|
|
65
71
|
|
|
72
|
+
def result_wrapper
|
|
73
|
+
warn RESULT_WRAPPER_DEPRECATION_WARNING
|
|
74
|
+
serializer
|
|
75
|
+
end
|
|
76
|
+
|
|
66
77
|
private
|
|
67
78
|
|
|
68
79
|
def base_url
|
|
@@ -88,6 +99,12 @@ module Sanity
|
|
|
88
99
|
}
|
|
89
100
|
end
|
|
90
101
|
|
|
102
|
+
def klass_serializer
|
|
103
|
+
return unless @resource_klass.respond_to?(:default_serializer)
|
|
104
|
+
|
|
105
|
+
@resource_klass.default_serializer
|
|
106
|
+
end
|
|
107
|
+
|
|
91
108
|
def query_params
|
|
92
109
|
camelize_query_set.map do |key, val|
|
|
93
110
|
"#{key}=#{val}"
|
data/lib/sanity/http/query.rb
CHANGED
|
@@ -21,12 +21,17 @@ module Sanity
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
attr_reader :resource_klass, :
|
|
24
|
+
attr_reader :resource_klass, :serializer
|
|
25
25
|
|
|
26
26
|
# @todo Add query support
|
|
27
27
|
def initialize(**args)
|
|
28
28
|
@resource_klass = args.delete(:resource_klass)
|
|
29
|
-
|
|
29
|
+
|
|
30
|
+
warn RESULT_WRAPPER_DEPRECATION_WARNING if args[:result_wrapper]
|
|
31
|
+
@serializer = args.delete(:serializer) ||
|
|
32
|
+
args.delete(:result_wrapper) || # kept for backwards compatibility
|
|
33
|
+
klass_serializer ||
|
|
34
|
+
Sanity::Http::Results
|
|
30
35
|
end
|
|
31
36
|
|
|
32
37
|
# @todo Add query support
|
|
@@ -42,10 +47,15 @@ module Sanity
|
|
|
42
47
|
http.request(request).then do |result|
|
|
43
48
|
data = JSON.parse(result.body)
|
|
44
49
|
|
|
45
|
-
block_given? ? yield(
|
|
50
|
+
block_given? ? yield(serializer.call(data)) : serializer.call(data)
|
|
46
51
|
end
|
|
47
52
|
end
|
|
48
53
|
|
|
54
|
+
def result_wrapper
|
|
55
|
+
warn RESULT_WRAPPER_DEPRECATION_WARNING
|
|
56
|
+
serializer
|
|
57
|
+
end
|
|
58
|
+
|
|
49
59
|
private
|
|
50
60
|
|
|
51
61
|
def request_body
|
|
@@ -66,6 +76,12 @@ module Sanity
|
|
|
66
76
|
}
|
|
67
77
|
end
|
|
68
78
|
|
|
79
|
+
def klass_serializer
|
|
80
|
+
return unless @resource_klass.respond_to?(:default_serializer)
|
|
81
|
+
|
|
82
|
+
@resource_klass.default_serializer
|
|
83
|
+
end
|
|
84
|
+
|
|
69
85
|
def uri
|
|
70
86
|
URI(base_url)
|
|
71
87
|
end
|
data/lib/sanity/http/where.rb
CHANGED
|
@@ -18,7 +18,9 @@ module Sanity
|
|
|
18
18
|
@variables = args.delete(:variables) || {}
|
|
19
19
|
@use_post = args.delete(:use_post) || false
|
|
20
20
|
|
|
21
|
-
@groq_attributes = args.except(
|
|
21
|
+
@groq_attributes = args.except(
|
|
22
|
+
:groq, :use_post, :resource_klass, :serializer, :result_wrapper
|
|
23
|
+
)
|
|
22
24
|
end
|
|
23
25
|
|
|
24
26
|
private
|
data/lib/sanity/resource.rb
CHANGED
|
@@ -8,6 +8,7 @@ module Sanity
|
|
|
8
8
|
# Sanity::Attributable
|
|
9
9
|
# Sanity::Mutatable
|
|
10
10
|
# Sanity::Queryable
|
|
11
|
+
# Sanity::Serializable
|
|
11
12
|
#
|
|
12
13
|
# Sanity::Document and Sanity::Asset both inherit
|
|
13
14
|
# from Sanity::Resource
|
|
@@ -26,5 +27,6 @@ module Sanity
|
|
|
26
27
|
include Sanity::Attributable
|
|
27
28
|
include Sanity::Mutatable
|
|
28
29
|
include Sanity::Queryable
|
|
30
|
+
include Sanity::Serializable
|
|
29
31
|
end
|
|
30
32
|
end
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Sanity
|
|
4
|
+
# Serializable is responsible for configuring auto serialization or a default
|
|
5
|
+
# serializer. It also defines the default class serializer used when auto
|
|
6
|
+
# serialization is enabled.
|
|
7
|
+
#
|
|
8
|
+
# The auto_serialize macro is used to enable auto serialization.
|
|
9
|
+
#
|
|
10
|
+
# @example enables auto serialization
|
|
11
|
+
# auto_serialize
|
|
12
|
+
#
|
|
13
|
+
# The serializer marco is used to define the default serializer.
|
|
14
|
+
#
|
|
15
|
+
# @example default to using a custom defined UserSerializer
|
|
16
|
+
# serializer UserSerializer
|
|
17
|
+
#
|
|
18
|
+
module Serializable
|
|
19
|
+
class << self
|
|
20
|
+
def included(base)
|
|
21
|
+
base.extend(ClassMethods)
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
module ClassMethods
|
|
26
|
+
def default_serializer
|
|
27
|
+
@default_serializer ||=
|
|
28
|
+
if auto_serialize?
|
|
29
|
+
class_serializer
|
|
30
|
+
elsif defined?(@serializer)
|
|
31
|
+
@serializer
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def auto_serialize?
|
|
36
|
+
return @auto_serialize if defined?(@auto_serialize)
|
|
37
|
+
|
|
38
|
+
superclass.respond_to?(:auto_serialize?) && superclass.auto_serialize?
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
private
|
|
42
|
+
|
|
43
|
+
def auto_serialize
|
|
44
|
+
@auto_serialize = true
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def serializer(serializer)
|
|
48
|
+
@serializer = serializer
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def class_serializer
|
|
52
|
+
@class_serializer ||= proc do |results|
|
|
53
|
+
results["result"].map do |result|
|
|
54
|
+
attributes = result.slice(*self.attributes.map(&:to_s))
|
|
55
|
+
new(**attributes.transform_keys(&:to_sym))
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
data/lib/sanity/version.rb
CHANGED
data/lib/sanity.rb
CHANGED
|
@@ -12,10 +12,13 @@ require "sanity/http"
|
|
|
12
12
|
require "sanity/attributable"
|
|
13
13
|
require "sanity/mutatable"
|
|
14
14
|
require "sanity/queryable"
|
|
15
|
+
require "sanity/serializable"
|
|
15
16
|
|
|
16
17
|
require "sanity/resource"
|
|
17
18
|
require "sanity/resources"
|
|
18
19
|
|
|
19
20
|
module Sanity
|
|
20
21
|
class Error < StandardError; end
|
|
22
|
+
|
|
23
|
+
RESULT_WRAPPER_DEPRECATION_WARNING = "DEPRECATION: `result_wrapper` is deprecated. Please use `serializer` instead."
|
|
21
24
|
end
|
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: sanity-ruby
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.3.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Morning Brew
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2023-10-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies: []
|
|
13
13
|
description: ''
|
|
14
14
|
email: tech@morningbrew.com
|
|
@@ -16,16 +16,23 @@ executables: []
|
|
|
16
16
|
extensions: []
|
|
17
17
|
extra_rdoc_files: []
|
|
18
18
|
files:
|
|
19
|
+
- ".dockerignore"
|
|
19
20
|
- ".github/workflows/ci.yml"
|
|
20
21
|
- ".gitignore"
|
|
21
22
|
- ".standard.yml"
|
|
23
|
+
- Dockerfile-2.6
|
|
24
|
+
- Dockerfile-2.7
|
|
25
|
+
- Dockerfile-3.0
|
|
22
26
|
- Gemfile
|
|
23
27
|
- LICENSE.txt
|
|
24
28
|
- README.md
|
|
25
29
|
- Rakefile
|
|
26
30
|
- bin/console
|
|
31
|
+
- bin/dev-lint
|
|
32
|
+
- bin/dev-test
|
|
27
33
|
- bin/setup
|
|
28
34
|
- bin/standardrb
|
|
35
|
+
- docker-compose.yml
|
|
29
36
|
- lib/sanity-ruby.rb
|
|
30
37
|
- lib/sanity.rb
|
|
31
38
|
- lib/sanity/attributable.rb
|
|
@@ -56,6 +63,7 @@ files:
|
|
|
56
63
|
- lib/sanity/resources.rb
|
|
57
64
|
- lib/sanity/resources/asset.rb
|
|
58
65
|
- lib/sanity/resources/document.rb
|
|
66
|
+
- lib/sanity/serializable.rb
|
|
59
67
|
- lib/sanity/version.rb
|
|
60
68
|
- sanity.gemspec
|
|
61
69
|
homepage: https://github.com/morning-brew/sanity-ruby
|
|
@@ -80,7 +88,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
80
88
|
- !ruby/object:Gem::Version
|
|
81
89
|
version: '0'
|
|
82
90
|
requirements: []
|
|
83
|
-
rubygems_version: 3.
|
|
91
|
+
rubygems_version: 3.4.17
|
|
84
92
|
signing_key:
|
|
85
93
|
specification_version: 4
|
|
86
94
|
summary: Ruby bindings for the Sanity API
|