parse-stack 1.8.0 → 1.8.1

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.
Files changed (82) hide show
  1. checksums.yaml +4 -4
  2. data/.solargraph.yml +23 -0
  3. data/.travis.yml +0 -1
  4. data/Gemfile +13 -12
  5. data/Gemfile.lock +88 -51
  6. data/README.md +2 -4
  7. data/Rakefile +14 -14
  8. data/lib/parse/api/aggregate.rb +4 -7
  9. data/lib/parse/api/all.rb +1 -1
  10. data/lib/parse/api/analytics.rb +0 -3
  11. data/lib/parse/api/batch.rb +3 -5
  12. data/lib/parse/api/cloud_functions.rb +0 -3
  13. data/lib/parse/api/config.rb +0 -4
  14. data/lib/parse/api/files.rb +3 -7
  15. data/lib/parse/api/hooks.rb +4 -8
  16. data/lib/parse/api/objects.rb +7 -12
  17. data/lib/parse/api/push.rb +0 -4
  18. data/lib/parse/api/schema.rb +2 -6
  19. data/lib/parse/api/server.rb +4 -7
  20. data/lib/parse/api/sessions.rb +2 -5
  21. data/lib/parse/api/users.rb +9 -14
  22. data/lib/parse/client.rb +54 -50
  23. data/lib/parse/client/authentication.rb +29 -33
  24. data/lib/parse/client/batch.rb +8 -11
  25. data/lib/parse/client/body_builder.rb +19 -20
  26. data/lib/parse/client/caching.rb +23 -28
  27. data/lib/parse/client/protocol.rb +11 -12
  28. data/lib/parse/client/request.rb +4 -6
  29. data/lib/parse/client/response.rb +5 -7
  30. data/lib/parse/model/acl.rb +14 -12
  31. data/lib/parse/model/associations/belongs_to.rb +14 -21
  32. data/lib/parse/model/associations/collection_proxy.rb +328 -329
  33. data/lib/parse/model/associations/has_many.rb +18 -25
  34. data/lib/parse/model/associations/has_one.rb +6 -11
  35. data/lib/parse/model/associations/pointer_collection_proxy.rb +5 -8
  36. data/lib/parse/model/associations/relation_collection_proxy.rb +5 -9
  37. data/lib/parse/model/bytes.rb +8 -10
  38. data/lib/parse/model/classes/installation.rb +2 -4
  39. data/lib/parse/model/classes/product.rb +2 -5
  40. data/lib/parse/model/classes/role.rb +3 -5
  41. data/lib/parse/model/classes/session.rb +2 -5
  42. data/lib/parse/model/classes/user.rb +20 -16
  43. data/lib/parse/model/core/actions.rb +31 -46
  44. data/lib/parse/model/core/builder.rb +6 -6
  45. data/lib/parse/model/core/errors.rb +0 -1
  46. data/lib/parse/model/core/fetching.rb +45 -50
  47. data/lib/parse/model/core/properties.rb +51 -66
  48. data/lib/parse/model/core/querying.rb +291 -294
  49. data/lib/parse/model/core/schema.rb +89 -92
  50. data/lib/parse/model/date.rb +16 -17
  51. data/lib/parse/model/file.rb +171 -174
  52. data/lib/parse/model/geopoint.rb +12 -16
  53. data/lib/parse/model/model.rb +31 -37
  54. data/lib/parse/model/object.rb +47 -53
  55. data/lib/parse/model/pointer.rb +177 -176
  56. data/lib/parse/model/push.rb +8 -10
  57. data/lib/parse/model/shortnames.rb +1 -2
  58. data/lib/parse/model/time_zone.rb +3 -5
  59. data/lib/parse/query.rb +34 -35
  60. data/lib/parse/query/constraint.rb +4 -6
  61. data/lib/parse/query/constraints.rb +21 -29
  62. data/lib/parse/query/operation.rb +8 -11
  63. data/lib/parse/query/ordering.rb +45 -49
  64. data/lib/parse/stack.rb +11 -12
  65. data/lib/parse/stack/generators/rails.rb +28 -30
  66. data/lib/parse/stack/generators/templates/model.erb +5 -6
  67. data/lib/parse/stack/generators/templates/model_installation.rb +0 -1
  68. data/lib/parse/stack/generators/templates/model_role.rb +0 -1
  69. data/lib/parse/stack/generators/templates/model_session.rb +0 -1
  70. data/lib/parse/stack/generators/templates/model_user.rb +0 -1
  71. data/lib/parse/stack/generators/templates/parse.rb +9 -9
  72. data/lib/parse/stack/generators/templates/webhooks.rb +1 -2
  73. data/lib/parse/stack/railtie.rb +2 -4
  74. data/lib/parse/stack/tasks.rb +70 -86
  75. data/lib/parse/stack/version.rb +1 -1
  76. data/lib/parse/webhooks.rb +19 -26
  77. data/lib/parse/webhooks/payload.rb +26 -28
  78. data/lib/parse/webhooks/registration.rb +23 -31
  79. data/parse-stack.gemspec +25 -25
  80. data/parse-stack.png +0 -0
  81. metadata +13 -7
  82. data/.github/parse-ruby-sdk.png +0 -0
@@ -6,6 +6,6 @@ module Parse
6
6
  # The Parse Server SDK for Ruby
7
7
  module Stack
8
8
  # The current version.
9
- VERSION = "1.8.0"
9
+ VERSION = "1.8.1"
10
10
  end
11
11
  end
@@ -1,21 +1,20 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'active_model'
5
- require 'active_support'
6
- require 'active_support/inflector'
7
- require 'active_support/core_ext/object'
8
- require 'active_support/core_ext'
9
- require 'active_model_serializers'
10
- require 'rack'
11
- require_relative 'client'
12
- require_relative 'stack'
13
- require_relative 'model/object'
14
- require_relative 'webhooks/payload'
15
- require_relative 'webhooks/registration'
4
+ require "active_model"
5
+ require "active_support"
6
+ require "active_support/inflector"
7
+ require "active_support/core_ext/object"
8
+ require "active_support/core_ext"
9
+ require "active_model_serializers"
10
+ require "rack"
11
+ require_relative "client"
12
+ require_relative "stack"
13
+ require_relative "model/object"
14
+ require_relative "webhooks/payload"
15
+ require_relative "webhooks/registration"
16
16
 
17
17
  module Parse
18
-
19
18
  class Object
20
19
 
21
20
  # Register a webhook function for this subclass.
@@ -55,7 +54,6 @@ module Parse
55
54
  # @param block [Symbol] the name of the method to call, if no block is passed.
56
55
  # @return (see Parse::Webhooks.route)
57
56
  def self.webhook(type, block = nil)
58
-
59
57
  if type == :function
60
58
  unless block.is_a?(String) || block.is_a?(Symbol)
61
59
  raise ArgumentError, "Invalid Cloud Code function name: #{block}"
@@ -72,7 +70,6 @@ module Parse
72
70
  #if block
73
71
 
74
72
  end
75
-
76
73
  end
77
74
 
78
75
  # A Rack-based application middlware to handle incoming Parse cloud code webhook
@@ -80,7 +77,7 @@ module Parse
80
77
  class Webhooks
81
78
  # The error to be raised in registered trigger or function webhook blocks that
82
79
  # will trigger the Parse::Webhooks application to return the proper error response.
83
- class ResponseError < StandardError; end;
80
+ class ResponseError < StandardError; end
84
81
 
85
82
  include Client::Connectable
86
83
  extend Parse::Webhooks::Registration
@@ -91,7 +88,6 @@ module Parse
91
88
  # The content type that needs to be sent back to Parse server.
92
89
  CONTENT_TYPE = "application/json"
93
90
 
94
-
95
91
  # The Parse Webhook Key to be used for authenticating webhook requests.
96
92
  # See {Parse::Webhooks.key} on setting this value.
97
93
  # @return [String]
@@ -117,7 +113,7 @@ module Parse
117
113
  def routes
118
114
  return @routes unless @routes.nil?
119
115
  r = Parse::API::Hooks::TRIGGER_NAMES_LOCAL + [:function]
120
- @routes = OpenStruct.new( r.reduce({}) { |h,t| h[t] = {}; h; } )
116
+ @routes = OpenStruct.new(r.reduce({}) { |h, t| h[t] = {}; h })
121
117
  end
122
118
 
123
119
  # Internally registers a route for a specific webhook trigger or function.
@@ -142,7 +138,6 @@ module Parse
142
138
 
143
139
  # AfterSave/AfterDelete hooks support more than one
144
140
  if type == :after_save || type == :after_delete
145
-
146
141
  routes[type][className] ||= []
147
142
  routes[type][className].push block
148
143
  else
@@ -192,7 +187,7 @@ module Parse
192
187
  result.run_callbacks(:destroy) { false }
193
188
  result = true
194
189
  end
195
- elsif type == :before_save && ( result == true || result.nil? )
190
+ elsif type == :before_save && (result == true || result.nil?)
196
191
  # Open Source Parse server does not accept true results on before_save hooks.
197
192
  result = {}
198
193
  end
@@ -219,8 +214,9 @@ module Parse
219
214
  # the value of ENV['PARSE_SERVER_WEBHOOK_KEY'] if not configured.
220
215
  # @return [String]
221
216
  attr_accessor :key
217
+
222
218
  def key
223
- @key ||= ENV['PARSE_SERVER_WEBHOOK_KEY'] || ENV['PARSE_WEBHOOK_KEY']
219
+ @key ||= ENV["PARSE_SERVER_WEBHOOK_KEY"] || ENV["PARSE_WEBHOOK_KEY"]
224
220
  end
225
221
 
226
222
  # Standard Rack call method. This method processes an incoming cloud code
@@ -238,7 +234,6 @@ module Parse
238
234
 
239
235
  # @!visibility private
240
236
  def call!(env)
241
-
242
237
  request = Rack::Request.new env
243
238
  response = Rack::Response.new
244
239
 
@@ -304,16 +299,14 @@ module Parse
304
299
  elsif payload.function?
305
300
  puts "[Webhooks::ResponseError] >> #{payload.function_name}: #{e}"
306
301
  end
307
- response.write error( e.to_s )
302
+ response.write error(e.to_s)
308
303
  return response.finish
309
304
  end
310
305
 
311
306
  #check if we can handle the type trigger/functionName
312
- response.write( success )
307
+ response.write(success)
313
308
  response.finish
314
309
  end # call
315
-
316
310
  end #class << self
317
311
  end # Webhooks
318
-
319
312
  end # Parse
@@ -1,31 +1,31 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'active_model'
5
- require 'active_support'
6
- require 'active_support/inflector'
7
- require 'active_support/core_ext/object'
8
- require 'active_support/core_ext/string'
9
- require 'active_support/core_ext'
10
- require 'active_model_serializers'
4
+ require "active_model"
5
+ require "active_support"
6
+ require "active_support/inflector"
7
+ require "active_support/core_ext/object"
8
+ require "active_support/core_ext/string"
9
+ require "active_support/core_ext"
10
+ require "active_model_serializers"
11
11
 
12
12
  module Parse
13
- class Webhooks
14
- # Represents the data structure that Parse server sends to a registered webhook.
15
- # Parse Parse allows you to receive Cloud Code webhooks on your own hosted
16
- # server. The `Parse::Webhooks` class is a lightweight Rack application that
17
- # routes incoming Cloud Code webhook requests and payloads to locally
18
- # registered handlers. The payloads are {Parse::Webhooks::Payload} type of objects that
19
- # represent that data that Parse sends webhook handlers.
20
- class Payload
13
+ class Webhooks
14
+ # Represents the data structure that Parse server sends to a registered webhook.
15
+ # Parse Parse allows you to receive Cloud Code webhooks on your own hosted
16
+ # server. The `Parse::Webhooks` class is a lightweight Rack application that
17
+ # routes incoming Cloud Code webhook requests and payloads to locally
18
+ # registered handlers. The payloads are {Parse::Webhooks::Payload} type of objects that
19
+ # represent that data that Parse sends webhook handlers.
20
+ class Payload
21
21
  # The set of keys that can be contained in a Parse hash payload for a webhook.
22
22
  ATTRIBUTES = { master: nil, user: nil,
23
- installationId: nil, params: nil,
24
- functionName: nil, object: nil,
25
- original: nil, update: nil,
26
- query: nil, log: nil,
27
- objects: nil,
28
- triggerName: nil }.freeze
23
+ installationId: nil, params: nil,
24
+ functionName: nil, object: nil,
25
+ original: nil, update: nil,
26
+ query: nil, log: nil,
27
+ objects: nil,
28
+ triggerName: nil }.freeze
29
29
  include ::ActiveModel::Serializers::JSON
30
30
  # @!attribute [rw] master
31
31
  # @return [Boolean] whether the master key was used for this request.
@@ -75,7 +75,7 @@ module Parse
75
75
  # @see Parse::Webhooks
76
76
  def initialize(hash = {})
77
77
  hash = JSON.parse(hash) if hash.is_a?(String)
78
- hash = Hash[hash.map{ |k, v| [k.to_s.underscore.to_sym, v] }]
78
+ hash = Hash[hash.map { |k, v| [k.to_s.underscore.to_sym, v] }]
79
79
  @raw = hash
80
80
  @master = hash[:master]
81
81
  @user = Parse::User.new hash[:user] if hash[:user].present?
@@ -125,7 +125,8 @@ module Parse
125
125
  def parse_id
126
126
  return nil unless @object.present?
127
127
  @object[Parse::Model::OBJECT_ID] || @object[:objectId]
128
- end; alias_method :objectId, :parse_id
128
+ end;
129
+ alias_method :objectId, :parse_id
129
130
 
130
131
  # true if this is a webhook trigger request.
131
132
  def trigger?
@@ -218,7 +219,6 @@ module Parse
218
219
  return o
219
220
  end # if klass.present?
220
221
  end # if we have original
221
-
222
222
  end # if before_trigger?
223
223
  Parse::Object.build(@object)
224
224
  end
@@ -234,13 +234,11 @@ module Parse
234
234
  raise Parse::Webhooks::ResponseError, msg
235
235
  end
236
236
 
237
-
238
237
  # @return [Parse::Query] the Parse query for a beforeFind trigger.
239
238
  def parse_query
240
239
  return nil unless parse_class.present? && @query.is_a?(Hash)
241
240
  Parse::Query.new parse_class, @query
242
241
  end
243
-
244
- end # Payload
245
- end
242
+ end # Payload
243
+ end
246
244
  end
@@ -1,11 +1,11 @@
1
1
  # encoding: UTF-8
2
2
  # frozen_string_literal: true
3
3
 
4
- require 'active_support'
5
- require 'active_support/inflector'
6
- require 'active_support/core_ext/object'
7
- require 'active_support/core_ext/string'
8
- require 'active_support/core_ext'
4
+ require "active_support"
5
+ require "active_support/inflector"
6
+ require "active_support/core_ext/object"
7
+ require "active_support/core_ext/string"
8
+ require "active_support/core_ext"
9
9
 
10
10
  module Parse
11
11
  # Interface to the CloudCode webhooks API.
@@ -17,39 +17,35 @@ module Parse
17
17
 
18
18
  # removes all registered webhook functions with Parse Server.
19
19
  def remove_all_functions!
20
-
21
- client.functions.results.sort_by { |f| f['functionName'] }.each do |f|
22
- next unless f["url"].present?
23
- client.delete_function f['functionName']
24
- yield(f['functionName']) if block_given?
25
- end
20
+ client.functions.results.sort_by { |f| f["functionName"] }.each do |f|
21
+ next unless f["url"].present?
22
+ client.delete_function f["functionName"]
23
+ yield(f["functionName"]) if block_given?
24
+ end
26
25
  end
27
26
 
28
27
  # removes all registered webhook triggers with Parse Server.
29
28
  def remove_all_triggers!
30
-
31
- client.triggers.results.sort_by { |f| [f['triggerName'],f['className']] }.each do |f|
29
+ client.triggers.results.sort_by { |f| [f["triggerName"], f["className"]] }.each do |f|
32
30
  next unless f["url"].present?
33
31
  triggerName = f["triggerName"]
34
32
  className = f[Parse::Model::KEY_CLASS_NAME]
35
33
  client.delete_trigger triggerName, className
36
- yield(f['triggerName'], f[Parse::Model::KEY_CLASS_NAME]) if block_given?
34
+ yield(f["triggerName"], f[Parse::Model::KEY_CLASS_NAME]) if block_given?
37
35
  end
38
-
39
36
  end
40
37
 
41
38
  # Registers all webhook functions registered with Parse::Stack with Parse server.
42
39
  # @param endpoint [String] a https url that points to the webhook server.
43
40
  def register_functions!(endpoint)
44
-
45
- unless endpoint.present? && (endpoint.starts_with?('http://') || endpoint.starts_with?('https://') )
41
+ unless endpoint.present? && (endpoint.starts_with?("http://") || endpoint.starts_with?("https://"))
46
42
  raise ArgumentError, "The HOOKS_URL must be http/s: '#{endpoint}''"
47
43
  end
48
- endpoint += '/' unless endpoint.ends_with?('/')
44
+ endpoint += "/" unless endpoint.ends_with?("/")
49
45
  functionsMap = {}
50
46
  client.functions.results.each do |f|
51
47
  next unless f["url"].present?
52
- functionsMap[ f['functionName'] ] = f["url"]
48
+ functionsMap[f["functionName"]] = f["url"]
53
49
  end
54
50
 
55
51
  routes.function.keys.sort.each do |functionName|
@@ -62,18 +58,16 @@ module Parse
62
58
  end
63
59
  yield(functionName) if block_given?
64
60
  end
65
-
66
61
  end
67
62
 
68
63
  # Registers all webhook triggers registered with Parse::Stack with Parse server.
69
64
  # @param endpoint [String] a https url that points to the webhook server.
70
65
  # @param include_wildcard [Boolean] Allow wildcard registrations
71
66
  def register_triggers!(endpoint, include_wildcard: false)
72
-
73
- unless endpoint.present? && (endpoint.starts_with?('http://') || endpoint.starts_with?('https://') )
67
+ unless endpoint.present? && (endpoint.starts_with?("http://") || endpoint.starts_with?("https://"))
74
68
  raise ArgumentError, "The HOOKS_URL must be http/s: '#{endpoint}''"
75
69
  end
76
- endpoint += '/' unless endpoint.ends_with?('/')
70
+ endpoint += "/" unless endpoint.ends_with?("/")
77
71
  all_triggers = Parse::API::Hooks::TRIGGER_NAMES_LOCAL
78
72
 
79
73
  current_triggers = {}
@@ -83,19 +77,19 @@ module Parse
83
77
  next unless t["url"].present?
84
78
  trigger_name = t["triggerName"].underscore.to_sym
85
79
  current_triggers[trigger_name] ||= {}
86
- current_triggers[trigger_name][ t["className"] ] = t["url"]
80
+ current_triggers[trigger_name][t["className"]] = t["url"]
87
81
  end
88
82
 
89
83
  all_triggers.each do |trigger|
90
84
  classNames = routes[trigger].keys.dup
91
- if include_wildcard && classNames.include?('*') #then create the list for all classes
92
- classNames.delete '*' #delete the wildcard before we expand it
85
+ if include_wildcard && classNames.include?("*") #then create the list for all classes
86
+ classNames.delete "*" #delete the wildcard before we expand it
93
87
  classNames = classNames + Parse.registered_classes
94
88
  classNames.uniq!
95
89
  end
96
90
 
97
91
  classNames.sort.each do |className|
98
- next if className == '*'
92
+ next if className == "*"
99
93
  url = endpoint + "#{trigger}/#{className}"
100
94
  if current_triggers[trigger][className].present? #then you may need to update
101
95
  next if current_triggers[trigger][className] == url
@@ -103,9 +97,8 @@ module Parse
103
97
  else
104
98
  client.create_trigger(trigger, className, url)
105
99
  end
106
- yield(trigger.columnize,className) if block_given?
100
+ yield(trigger.columnize, className) if block_given?
107
101
  end
108
-
109
102
  end
110
103
  end
111
104
 
@@ -132,7 +125,6 @@ module Parse
132
125
  warn "Failed to register Cloud function #{name} with #{url}" if response.error?
133
126
  return response
134
127
  else # must be trigger
135
-
136
128
  response = client.fetch_trigger(trigger, name)
137
129
  # if it is either an error (which has no results) or there is a result but
138
130
  # no registered item with a URL (which implies either none registered or only cloud code registered)
@@ -148,7 +140,7 @@ module Parse
148
140
  warn "Webhook Registration warning: #{response.result["warning"]}" if response.result.has_key?("warning")
149
141
  warn "Webhook Registration error: #{response.error}" if response.error?
150
142
  return response
151
- end
143
+ end
152
144
  end
153
145
  end
154
146
  end
@@ -1,18 +1,18 @@
1
1
  # coding: utf-8
2
- lib = File.expand_path('../lib', __FILE__)
2
+ lib = File.expand_path("../lib", __FILE__)
3
3
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
- require 'parse/stack/version'
4
+ require "parse/stack/version"
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "parse-stack"
8
- spec.version = Parse::Stack::VERSION
9
- spec.authors = ["Anthony Persaud"]
10
- spec.email = ["persaud@modernistik.com"]
7
+ spec.name = "parse-stack"
8
+ spec.version = Parse::Stack::VERSION
9
+ spec.authors = ["Anthony Persaud"]
10
+ spec.email = ["persaud@modernistik.com"]
11
11
 
12
- spec.summary = %q{Parse Server Ruby Client SDK}
13
- spec.description = %q{Parse Server Ruby Client. Perform Object-relational mapping between Parse Server and Ruby classes, with authentication, cloud code webhooks, push notifications and more built in.}
14
- spec.homepage = "https://github.com/modernistik/parse-stack"
15
- spec.license = "MIT"
12
+ spec.summary = %q{Parse Server Ruby Client SDK}
13
+ spec.description = %q{Parse Server Ruby Client. Perform Object-relational mapping between Parse Server and Ruby classes, with authentication, cloud code webhooks, push notifications and more built in.}
14
+ spec.homepage = "https://github.com/modernistik/parse-stack"
15
+ spec.license = "MIT"
16
16
  # Prevent pushing this gem to RubyGems.org by setting 'allowed_push_host', or
17
17
  # delete this section to allow pushing this gem to any host.
18
18
  # if spec.respond_to?(:metadata)
@@ -21,30 +21,30 @@ Gem::Specification.new do |spec|
21
21
  # raise "RubyGems 2.0 or newer is required to protect against public gem pushes."
22
22
  # end
23
23
 
24
- spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
- spec.bindir = "bin"
26
- spec.executables = ['parse-console'] #spec.files.grep(%r{^bin/pstack/}) { |f| File.basename(f) }
24
+ spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ spec.bindir = "bin"
26
+ spec.executables = ["parse-console"] #spec.files.grep(%r{^bin/pstack/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
- spec.required_ruby_version = '>= 2.2.2'
28
+ spec.required_ruby_version = ">= 2.2.2"
29
29
 
30
30
  spec.add_runtime_dependency "activemodel", [">= 4.2.1", "< 6"]
31
31
  spec.add_runtime_dependency "active_model_serializers", [">= 0.9", "< 1"]
32
- spec.add_runtime_dependency "activesupport", [">= 4.2.1", "< 6"]
32
+ spec.add_runtime_dependency "activesupport", [">= 4.2.1", "< 7"]
33
33
  spec.add_runtime_dependency "parallel", [">= 1.6", "< 2"]
34
34
  spec.add_runtime_dependency "faraday", [">= 0.8", "< 1"]
35
35
  spec.add_runtime_dependency "faraday_middleware", [">= 0.9", "< 1"]
36
36
  spec.add_runtime_dependency "moneta", "< 2"
37
- spec.add_runtime_dependency "rack", "< 3"
37
+ spec.add_runtime_dependency "rack", ">= 2.0.6", "< 3"
38
38
 
39
- # spec.post_install_message = <<UPGRADE
40
- #
41
- # ** BREAKING CHANGES **
42
- # The default `has_many` association form has changed from :array to :query.
43
- # To use arrays, you must now pass `through: :array` option to `has_many`.
44
- #
45
- # Visit: https://github.com/modernistik/parse-stack/wiki/Changes-to-has_many-in-1.5.0
46
- #
47
- # UPGRADE
39
+ # spec.post_install_message = <<UPGRADE
40
+ #
41
+ # ** BREAKING CHANGES **
42
+ # The default `has_many` association form has changed from :array to :query.
43
+ # To use arrays, you must now pass `through: :array` option to `has_many`.
44
+ #
45
+ # Visit: https://github.com/modernistik/parse-stack/wiki/Changes-to-has_many-in-1.5.0
46
+ #
47
+ # UPGRADE
48
48
  end
49
49
 
50
50
  ## Development
Binary file
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: parse-stack
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.0
4
+ version: 1.8.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Anthony Persaud
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-09-22 00:00:00.000000000 Z
11
+ date: 2020-05-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -59,7 +59,7 @@ dependencies:
59
59
  version: 4.2.1
60
60
  - - "<"
61
61
  - !ruby/object:Gem::Version
62
- version: '6'
62
+ version: '7'
63
63
  type: :runtime
64
64
  prerelease: false
65
65
  version_requirements: !ruby/object:Gem::Requirement
@@ -69,7 +69,7 @@ dependencies:
69
69
  version: 4.2.1
70
70
  - - "<"
71
71
  - !ruby/object:Gem::Version
72
- version: '6'
72
+ version: '7'
73
73
  - !ruby/object:Gem::Dependency
74
74
  name: parallel
75
75
  requirement: !ruby/object:Gem::Requirement
@@ -148,6 +148,9 @@ dependencies:
148
148
  name: rack
149
149
  requirement: !ruby/object:Gem::Requirement
150
150
  requirements:
151
+ - - ">="
152
+ - !ruby/object:Gem::Version
153
+ version: 2.0.6
151
154
  - - "<"
152
155
  - !ruby/object:Gem::Version
153
156
  version: '3'
@@ -155,6 +158,9 @@ dependencies:
155
158
  prerelease: false
156
159
  version_requirements: !ruby/object:Gem::Requirement
157
160
  requirements:
161
+ - - ">="
162
+ - !ruby/object:Gem::Version
163
+ version: 2.0.6
158
164
  - - "<"
159
165
  - !ruby/object:Gem::Version
160
166
  version: '3'
@@ -168,8 +174,8 @@ executables:
168
174
  extensions: []
169
175
  extra_rdoc_files: []
170
176
  files:
171
- - ".github/parse-ruby-sdk.png"
172
177
  - ".gitignore"
178
+ - ".solargraph.yml"
173
179
  - ".travis.yml"
174
180
  - ".yardopts"
175
181
  - Changes.md
@@ -256,6 +262,7 @@ files:
256
262
  - lib/parse/webhooks/payload.rb
257
263
  - lib/parse/webhooks/registration.rb
258
264
  - parse-stack.gemspec
265
+ - parse-stack.png
259
266
  homepage: https://github.com/modernistik/parse-stack
260
267
  licenses:
261
268
  - MIT
@@ -275,8 +282,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
275
282
  - !ruby/object:Gem::Version
276
283
  version: '0'
277
284
  requirements: []
278
- rubyforge_project:
279
- rubygems_version: 2.7.6
285
+ rubygems_version: 3.0.8
280
286
  signing_key:
281
287
  specification_version: 4
282
288
  summary: Parse Server Ruby Client SDK