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.
- checksums.yaml +4 -4
- data/.solargraph.yml +23 -0
- data/.travis.yml +0 -1
- data/Gemfile +13 -12
- data/Gemfile.lock +88 -51
- data/README.md +2 -4
- data/Rakefile +14 -14
- data/lib/parse/api/aggregate.rb +4 -7
- data/lib/parse/api/all.rb +1 -1
- data/lib/parse/api/analytics.rb +0 -3
- data/lib/parse/api/batch.rb +3 -5
- data/lib/parse/api/cloud_functions.rb +0 -3
- data/lib/parse/api/config.rb +0 -4
- data/lib/parse/api/files.rb +3 -7
- data/lib/parse/api/hooks.rb +4 -8
- data/lib/parse/api/objects.rb +7 -12
- data/lib/parse/api/push.rb +0 -4
- data/lib/parse/api/schema.rb +2 -6
- data/lib/parse/api/server.rb +4 -7
- data/lib/parse/api/sessions.rb +2 -5
- data/lib/parse/api/users.rb +9 -14
- data/lib/parse/client.rb +54 -50
- data/lib/parse/client/authentication.rb +29 -33
- data/lib/parse/client/batch.rb +8 -11
- data/lib/parse/client/body_builder.rb +19 -20
- data/lib/parse/client/caching.rb +23 -28
- data/lib/parse/client/protocol.rb +11 -12
- data/lib/parse/client/request.rb +4 -6
- data/lib/parse/client/response.rb +5 -7
- data/lib/parse/model/acl.rb +14 -12
- data/lib/parse/model/associations/belongs_to.rb +14 -21
- data/lib/parse/model/associations/collection_proxy.rb +328 -329
- data/lib/parse/model/associations/has_many.rb +18 -25
- data/lib/parse/model/associations/has_one.rb +6 -11
- data/lib/parse/model/associations/pointer_collection_proxy.rb +5 -8
- data/lib/parse/model/associations/relation_collection_proxy.rb +5 -9
- data/lib/parse/model/bytes.rb +8 -10
- data/lib/parse/model/classes/installation.rb +2 -4
- data/lib/parse/model/classes/product.rb +2 -5
- data/lib/parse/model/classes/role.rb +3 -5
- data/lib/parse/model/classes/session.rb +2 -5
- data/lib/parse/model/classes/user.rb +20 -16
- data/lib/parse/model/core/actions.rb +31 -46
- data/lib/parse/model/core/builder.rb +6 -6
- data/lib/parse/model/core/errors.rb +0 -1
- data/lib/parse/model/core/fetching.rb +45 -50
- data/lib/parse/model/core/properties.rb +51 -66
- data/lib/parse/model/core/querying.rb +291 -294
- data/lib/parse/model/core/schema.rb +89 -92
- data/lib/parse/model/date.rb +16 -17
- data/lib/parse/model/file.rb +171 -174
- data/lib/parse/model/geopoint.rb +12 -16
- data/lib/parse/model/model.rb +31 -37
- data/lib/parse/model/object.rb +47 -53
- data/lib/parse/model/pointer.rb +177 -176
- data/lib/parse/model/push.rb +8 -10
- data/lib/parse/model/shortnames.rb +1 -2
- data/lib/parse/model/time_zone.rb +3 -5
- data/lib/parse/query.rb +34 -35
- data/lib/parse/query/constraint.rb +4 -6
- data/lib/parse/query/constraints.rb +21 -29
- data/lib/parse/query/operation.rb +8 -11
- data/lib/parse/query/ordering.rb +45 -49
- data/lib/parse/stack.rb +11 -12
- data/lib/parse/stack/generators/rails.rb +28 -30
- data/lib/parse/stack/generators/templates/model.erb +5 -6
- data/lib/parse/stack/generators/templates/model_installation.rb +0 -1
- data/lib/parse/stack/generators/templates/model_role.rb +0 -1
- data/lib/parse/stack/generators/templates/model_session.rb +0 -1
- data/lib/parse/stack/generators/templates/model_user.rb +0 -1
- data/lib/parse/stack/generators/templates/parse.rb +9 -9
- data/lib/parse/stack/generators/templates/webhooks.rb +1 -2
- data/lib/parse/stack/railtie.rb +2 -4
- data/lib/parse/stack/tasks.rb +70 -86
- data/lib/parse/stack/version.rb +1 -1
- data/lib/parse/webhooks.rb +19 -26
- data/lib/parse/webhooks/payload.rb +26 -28
- data/lib/parse/webhooks/registration.rb +23 -31
- data/parse-stack.gemspec +25 -25
- data/parse-stack.png +0 -0
- metadata +13 -7
- data/.github/parse-ruby-sdk.png +0 -0
data/lib/parse/stack/version.rb
CHANGED
data/lib/parse/webhooks.rb
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
11
|
-
require_relative
|
12
|
-
require_relative
|
13
|
-
require_relative
|
14
|
-
require_relative
|
15
|
-
require_relative
|
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(
|
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 && (
|
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[
|
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(
|
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(
|
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
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
9
|
-
require
|
10
|
-
require
|
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
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
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
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
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;
|
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
|
-
|
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
|
5
|
-
require
|
6
|
-
require
|
7
|
-
require
|
8
|
-
require
|
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
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
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[
|
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 +=
|
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[
|
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 +=
|
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][
|
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?(
|
92
|
-
classNames.delete
|
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
|
-
|
143
|
+
end
|
152
144
|
end
|
153
145
|
end
|
154
146
|
end
|
data/parse-stack.gemspec
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
# coding: utf-8
|
2
|
-
lib = File.expand_path(
|
2
|
+
lib = File.expand_path("../lib", __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require
|
4
|
+
require "parse/stack/version"
|
5
5
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
|
-
spec.name
|
8
|
-
spec.version
|
9
|
-
spec.authors
|
10
|
-
spec.email
|
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
|
13
|
-
spec.description
|
14
|
-
spec.homepage
|
15
|
-
spec.license
|
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
|
25
|
-
spec.bindir
|
26
|
-
spec.executables
|
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 =
|
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", "<
|
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
|
data/parse-stack.png
ADDED
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.
|
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:
|
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: '
|
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: '
|
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
|
-
|
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
|