sanity-ruby 0.2.0 → 0.4.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
  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