sanity-ruby 0.2.0 → 0.4.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 99698b9c87c062e3b1ba260579a51d00913b28690bba2eef557c5ab3ffe43a61
4
- data.tar.gz: 0cc88772721d519604f1ffb3fecd38d456c4fcff8b5de036dbf7f932b537d13f
3
+ metadata.gz: e02c772808fc5112f526e0e8bd329a829dd4ba0e2395d82a83d34f8419a05e66
4
+ data.tar.gz: c2b80c8bee2242e68ec2b814fc18e11ad699687a2174889cdf4a7b34823405f2
5
5
  SHA512:
6
- metadata.gz: b2f9cf2fd8dece545f5ac80878fa99910b440b9ac78dc318b26f619da6103f9940c477a4431b7129626fd1c157b31a2ee6679fe32092e7be0add78d926a93f52
7
- data.tar.gz: 7bda92a9734b5415abb245067dc1971b6a2239bdcd66b6710b14e5cb10fada6e4bb73c71e47a0fd4e65500c5bb7406b3e8274c4648c5cdde47ced1904d72cf09
6
+ metadata.gz: e265993399cfa3c24f821cac9625daaf763a0468353d18f0fac375231bc9e62e727f2a3314bbf55fc7aaa3b5d51f733822cc16409489bf6f3aebbff75ba5c72d
7
+ data.tar.gz: 5bf5fbfdb1fcf02d691fec0ad2226d2c24a9b993559f6e92eba16d6961eb0f54d97c70616e6642f6f42982666f3e3443b98bc8a9c53dc356b6fa956e99ae077b
data/.dockerignore ADDED
@@ -0,0 +1,10 @@
1
+ /.bundle
2
+ /vendor/
3
+ Gemfile.lock
4
+
5
+ /log/*
6
+ /tmp/*
7
+ !/log/.keep
8
+ !/tmp/.keep
9
+
10
+
data/.gitignore CHANGED
@@ -7,3 +7,4 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
  Gemfile.lock
10
+ vendor/
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
@@ -3,7 +3,7 @@ source "https://rubygems.org"
3
3
  # Specify your gem's dependencies in sanity.gemspec
4
4
  gemspec
5
5
 
6
- gem "rake", "~> 12.0"
6
+ gem "rake", ">= 12.0"
7
7
  gem "minitest", "~> 5.0"
8
8
  gem "minitest-reporters", ">= 1.4"
9
9
  gem "mocha", ">= 1.12"
data/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  # Sanity
2
2
 
3
- ![](https://github.com/morning-brew/sanity-ruby/actions/workflows/ci.yml/badge.svg)
4
- <a href="https://codeclimate.com/github/morning-brew/sanity-ruby/maintainability"><img src="https://api.codeclimate.com/v1/badges/1984ee6eb0bce46a2469/maintainability" /></a>
3
+ ![](https://github.com/dvmonroe/sanity-ruby/actions/workflows/ci.yml/badge.svg)
4
+ [![Maintainability](https://api.codeclimate.com/v1/badges/24b96780b59c8a871e6e/maintainability)](https://codeclimate.com/github/dvmonroe/sanity-ruby/maintainability)
5
5
 
6
6
  The Sanity Ruby library provides convenient access to the Sanity API from applications written in Ruby. It includes a pre-defined set of classes for API resources.
7
7
 
@@ -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 wrapper of your API response results
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)
@@ -75,6 +76,20 @@ class User < Sanity::Resource
75
76
  end
76
77
  ```
77
78
 
79
+ Since `Sanity::Resource` includes `ActiveModel::Model` and
80
+ `ActiveModel::Attributes`, you're able to define types on attributes and use
81
+ methods like `alias_attribute`.
82
+
83
+ ```ruby
84
+ class User < Sanity::Resource
85
+ ...
86
+ attribute :name, :string, default: 'John Doe'
87
+ attribute :_createdAt, :datetime
88
+ alias_attribute :created_at, :_createdAt
89
+ ...
90
+ end
91
+ ```
92
+
78
93
  To create a new document in Sanity:
79
94
 
80
95
  ```ruby
@@ -100,6 +115,63 @@ class User
100
115
  end
101
116
  ```
102
117
 
118
+ ## Serialization
119
+
120
+ When using a PORO, you can opt-in to automatically serialize your results. You
121
+ must define all attributes that should be serialized.
122
+
123
+ ```ruby
124
+ class User < Sanity::Resource
125
+ auto_serialize
126
+ ...
127
+ end
128
+ ```
129
+
130
+ Additionally, you can configure a custom serializer. See how to define a custom
131
+ serializer [below](#custom-serializer).
132
+
133
+ ```ruby
134
+ class User < Sanity::Resource
135
+ serializer UserSerializer
136
+ ...
137
+ end
138
+ ```
139
+
140
+ Finally, at query time you can also pass in a serializer. A serializer specified
141
+ at query time will take priority over any other configuration.
142
+
143
+ ```ruby
144
+ User.where(active: true, serializer: UserSerializer)
145
+ ```
146
+
147
+ where `UserSerializer` might look like:
148
+
149
+ ```ruby
150
+ class UserSerializer
151
+ class << self
152
+ def call(...)
153
+ new(...).call
154
+ end
155
+ end
156
+
157
+ attr_reader :results
158
+
159
+ def initialize(args)
160
+ @results = args["result"]
161
+ end
162
+
163
+ def call
164
+ results.map do |result|
165
+ User.new(
166
+ _id: result["_id"],
167
+ _type: result["_type"]
168
+ )
169
+ end
170
+ end
171
+ end
172
+ ```
173
+
174
+
103
175
  ## Mutating
104
176
 
105
177
  To [create a document](https://www.sanity.io/docs/http-mutations#c732f27330a4):
@@ -137,7 +209,7 @@ Sanity::Document.patch(params: { _id: "1234-321", set: { first_name: "Carl" }})
137
209
  To [find document(s) by id](https://www.sanity.io/docs/http-doc):
138
210
 
139
211
  ```ruby
140
- Sanity::Document.find(_id: "1234-321")
212
+ Sanity::Document.find(id: "1234-321")
141
213
  ```
142
214
 
143
215
  To find documents based on certain fields:
@@ -218,15 +290,27 @@ GROQ
218
290
  Sanity::Document.where(groq: groq_query, variables: {name: "Monsters, Inc."})
219
291
  ```
220
292
 
293
+
221
294
  ## Development
222
295
 
223
296
  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
297
 
225
298
  To install this gem onto your local machine, run `bundle exec rake install`.
226
299
 
300
+ ### Testing across all supported versions:
301
+
302
+ To run tests across all gem supported ruby versions (requires Docker):
303
+ ```sh
304
+ bin/dev-test
305
+ ```
306
+ To run lint across all gem supported ruby versions (requires Docker):
307
+ ```sh
308
+ bin/dev-lint
309
+ ```
310
+
227
311
  ## Contributing
228
312
 
229
- Bug reports and pull requests are welcome on GitHub at https://github.com/morning-brew/sanity-ruby.
313
+ Bug reports and pull requests are welcome on GitHub at https://github.com/dvmonroe/sanity-ruby.
230
314
 
231
315
  ## License
232
316
 
data/bin/dev-lint ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ system "docker-compose run --rm 2.6 bin/standardrb && docker-compose run --rm 2.7 bin/standardrb && docker-compose run --rm 3.0 bin/standardrb"
data/bin/dev-test ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ system "docker-compose run --rm 2.6 bundle exec rake test && docker-compose run --rm 2.7 bundle exec rake test && docker-compose run --rm 3.0 bundle exec rake test"
@@ -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:
@@ -39,7 +39,7 @@ module Sanity
39
39
  def initialize(**args)
40
40
  self.class.default_attributes.merge(args).then do |attrs|
41
41
  attrs.each do |key, val|
42
- define_singleton_method("#{key}=") do |val|
42
+ define_singleton_method(:"#{key}=") do |val|
43
43
  args[key] = val
44
44
  attributes[key] = val
45
45
  end
@@ -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) }
@@ -24,7 +24,7 @@ module Sanity
24
24
  def call
25
25
  return "" unless limit
26
26
 
27
- !offset ? zero_index_to_limit : offset_to_limit
27
+ (!offset) ? zero_index_to_limit : offset_to_limit
28
28
  end
29
29
 
30
30
  private
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sanity
4
+ module TypeHelper
5
+ def self.default_type(klass)
6
+ return nil if klass == Sanity::Document
7
+
8
+ type = klass.to_s
9
+ type[0].downcase + type[1..]
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "sanity/helpers/type_helper"
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "set" # rubocop:disable Lint/RedundantRequireStatement
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, :result_wrapper
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
- @result_wrapper = args.delete(:result_wrapper) || Sanity::Http::Results
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(result_wrapper.call(result)) : result_wrapper.call(result)
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}"
@@ -21,12 +21,17 @@ module Sanity
21
21
  end
22
22
  end
23
23
 
24
- attr_reader :resource_klass, :result_wrapper
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
- @result_wrapper = args.delete(:result_wrapper) || Sanity::Http::Results
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(result_wrapper.call(data)) : result_wrapper.call(data)
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
@@ -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(:groq, :use_post, :resource_klass, :result_wrapper)
21
+ @groq_attributes = args.except(
22
+ :groq, :use_post, :resource_klass, :serializer, :result_wrapper
23
+ )
22
24
  end
23
25
 
24
26
  private
@@ -36,15 +36,20 @@ module Sanity
36
36
 
37
37
  private
38
38
 
39
- # @private
40
39
  def queryable(**options)
41
40
  options.fetch(:only, DEFAULT_KLASS_QUERIES).each do |query|
42
- define_singleton_method(query) do |**args|
43
- Module.const_get("Sanity::Http::#{query.to_s.classify}").call(**args.merge(resource_klass: self))
44
- end
45
- define_singleton_method("#{query}_api_endpoint") { QUERY_ENDPOINTS[query] }
41
+ define_query_method(query)
46
42
  end
47
43
  end
44
+
45
+ def define_query_method(query)
46
+ define_singleton_method(query) do |**args|
47
+ default_type = args.key?(:_type) ? args[:_type] : Sanity::TypeHelper.default_type(self)
48
+ default_args = {resource_klass: self, _type: default_type}.compact
49
+ Module.const_get("Sanity::Http::#{query.to_s.classify}").call(**default_args.merge(args))
50
+ end
51
+ define_singleton_method(:"#{query}_api_endpoint") { QUERY_ENDPOINTS[query] }
52
+ end
48
53
  end
49
54
  end
50
55
  end
@@ -17,7 +17,7 @@ module Sanity
17
17
  refine String do
18
18
  def camelize_lower
19
19
  split("_")[0..].each_with_index.map do |val, idx|
20
- idx != 0 ? val.capitalize : val
20
+ (idx != 0) ? val.capitalize : val
21
21
  end.join
22
22
  end
23
23
 
@@ -5,9 +5,9 @@ module Sanity
5
5
  # the sanity resources defined within this gem.
6
6
  #
7
7
  # Out of the box it includes the following mixins:
8
- # Sanity::Attributable
9
8
  # Sanity::Mutatable
10
9
  # Sanity::Queryable
10
+ # Sanity::Serializable
11
11
  #
12
12
  # Sanity::Document and Sanity::Asset both inherit
13
13
  # from Sanity::Resource
@@ -23,8 +23,11 @@ module Sanity
23
23
  # end
24
24
  #
25
25
  class Resource
26
- include Sanity::Attributable
26
+ include ActiveModel::Model
27
+ include ActiveModel::Attributes
28
+
27
29
  include Sanity::Mutatable
28
30
  include Sanity::Queryable
31
+ include Sanity::Serializable
29
32
  end
30
33
  end
@@ -0,0 +1,62 @@
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
+ key = results.key?("result") ? "result" : "documents"
54
+ results[key].map do |result|
55
+ attributes = result.slice(*attribute_names)
56
+ new(**attributes.transform_keys(&:to_sym))
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sanity
4
- VERSION = "0.2.0"
4
+ VERSION = "0.4.0"
5
5
  end
data/lib/sanity.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require "active_model"
3
4
  require "forwardable"
4
5
  require "sanity/refinements"
5
6
 
@@ -8,14 +9,17 @@ require "sanity/configuration"
8
9
 
9
10
  require "sanity/groqify"
10
11
  require "sanity/http"
12
+ require "sanity/helpers"
11
13
 
12
- require "sanity/attributable"
13
14
  require "sanity/mutatable"
14
15
  require "sanity/queryable"
16
+ require "sanity/serializable"
15
17
 
16
18
  require "sanity/resource"
17
19
  require "sanity/resources"
18
20
 
19
21
  module Sanity
20
22
  class Error < StandardError; end
23
+
24
+ RESULT_WRAPPER_DEPRECATION_WARNING = "DEPRECATION: `result_wrapper` is deprecated. Please use `serializer` instead."
21
25
  end
data/sanity.gemspec CHANGED
@@ -5,12 +5,12 @@ require_relative "lib/sanity/version"
5
5
  Gem::Specification.new do |spec|
6
6
  spec.name = "sanity-ruby"
7
7
  spec.version = Sanity::VERSION
8
- spec.authors = "Morning Brew"
9
- spec.email = "tech@morningbrew.com"
8
+ spec.authors = "Drew Monroe"
9
+ spec.email = "drew@pinecreeklabs.com"
10
10
 
11
11
  spec.summary = "Ruby bindings for the Sanity API"
12
12
  spec.description = ""
13
- spec.homepage = "https://github.com/morning-brew/sanity-ruby"
13
+ spec.homepage = "https://github.com/dvmonroe/sanity-ruby"
14
14
  spec.license = "MIT"
15
15
  spec.required_ruby_version = Gem::Requirement.new(">= 2.6.0")
16
16
 
@@ -26,4 +26,6 @@ Gem::Specification.new do |spec|
26
26
  spec.bindir = "exe"
27
27
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
28
  spec.require_paths = ["lib"]
29
+
30
+ spec.add_dependency "activemodel"
29
31
  end
metadata CHANGED
@@ -1,31 +1,52 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sanity-ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
- - Morning Brew
7
+ - Drew Monroe
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-02-25 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2024-02-25 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
13
27
  description: ''
14
- email: tech@morningbrew.com
28
+ email: drew@pinecreeklabs.com
15
29
  executables: []
16
30
  extensions: []
17
31
  extra_rdoc_files: []
18
32
  files:
33
+ - ".dockerignore"
19
34
  - ".github/workflows/ci.yml"
20
35
  - ".gitignore"
21
36
  - ".standard.yml"
37
+ - Dockerfile-2.6
38
+ - Dockerfile-2.7
39
+ - Dockerfile-3.0
22
40
  - Gemfile
23
41
  - LICENSE.txt
24
42
  - README.md
25
43
  - Rakefile
26
44
  - bin/console
45
+ - bin/dev-lint
46
+ - bin/dev-test
27
47
  - bin/setup
28
48
  - bin/standardrb
49
+ - docker-compose.yml
29
50
  - lib/sanity-ruby.rb
30
51
  - lib/sanity.rb
31
52
  - lib/sanity/attributable.rb
@@ -35,6 +56,8 @@ files:
35
56
  - lib/sanity/groq/select.rb
36
57
  - lib/sanity/groq/slice.rb
37
58
  - lib/sanity/groqify.rb
59
+ - lib/sanity/helpers.rb
60
+ - lib/sanity/helpers/type_helper.rb
38
61
  - lib/sanity/http.rb
39
62
  - lib/sanity/http/create.rb
40
63
  - lib/sanity/http/create_if_not_exists.rb
@@ -56,15 +79,16 @@ files:
56
79
  - lib/sanity/resources.rb
57
80
  - lib/sanity/resources/asset.rb
58
81
  - lib/sanity/resources/document.rb
82
+ - lib/sanity/serializable.rb
59
83
  - lib/sanity/version.rb
60
84
  - sanity.gemspec
61
- homepage: https://github.com/morning-brew/sanity-ruby
85
+ homepage: https://github.com/dvmonroe/sanity-ruby
62
86
  licenses:
63
87
  - MIT
64
88
  metadata:
65
- homepage_uri: https://github.com/morning-brew/sanity-ruby
66
- source_code_uri: https://github.com/morning-brew/sanity-ruby
67
- changelog_uri: https://github.com/morning-brew/sanity-ruby
89
+ homepage_uri: https://github.com/dvmonroe/sanity-ruby
90
+ source_code_uri: https://github.com/dvmonroe/sanity-ruby
91
+ changelog_uri: https://github.com/dvmonroe/sanity-ruby
68
92
  post_install_message:
69
93
  rdoc_options: []
70
94
  require_paths:
@@ -80,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
104
  - !ruby/object:Gem::Version
81
105
  version: '0'
82
106
  requirements: []
83
- rubygems_version: 3.1.4
107
+ rubygems_version: 3.4.17
84
108
  signing_key:
85
109
  specification_version: 4
86
110
  summary: Ruby bindings for the Sanity API