parse-stack 1.8.0 → 1.8.1

Sign up to get free protection for your applications and to get access to all the features.
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