activeresource 4.1.0 → 6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/MIT-LICENSE +20 -0
- data/README.md +324 -0
- data/lib/active_resource/active_job_serializer.rb +26 -0
- data/lib/active_resource/associations/builder/association.rb +6 -6
- data/lib/active_resource/associations/builder/belongs_to.rb +5 -3
- data/lib/active_resource/associations/builder/has_many.rb +4 -2
- data/lib/active_resource/associations/builder/has_one.rb +5 -3
- data/lib/active_resource/associations.rb +23 -20
- data/lib/active_resource/base.rb +233 -113
- data/lib/active_resource/callbacks.rb +3 -1
- data/lib/active_resource/collection.rb +21 -12
- data/lib/active_resource/connection.rb +78 -81
- data/lib/active_resource/custom_methods.rb +8 -6
- data/lib/active_resource/exceptions.rb +17 -5
- data/lib/active_resource/formats/json_format.rb +4 -1
- data/lib/active_resource/formats/xml_format.rb +4 -2
- data/lib/active_resource/formats.rb +5 -3
- data/lib/active_resource/http_mock.rb +23 -27
- data/lib/active_resource/inheriting_hash.rb +15 -0
- data/lib/active_resource/log_subscriber.rb +14 -3
- data/lib/active_resource/railtie.rb +10 -10
- data/lib/active_resource/reflection.rb +11 -10
- data/lib/active_resource/schema.rb +6 -3
- data/lib/active_resource/singleton.rb +25 -28
- data/lib/active_resource/threadsafe_attributes.rb +35 -31
- data/lib/active_resource/validations.rb +18 -15
- data/lib/active_resource/version.rb +6 -4
- data/lib/active_resource.rb +8 -7
- data/lib/activeresource.rb +3 -1
- metadata +41 -24
- data/README.rdoc +0 -231
- data/lib/active_resource/observing.rb +0 -31
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module ActiveResource
|
4
|
+
class InheritingHash < Hash
|
5
|
+
def initialize(parent_hash = {})
|
6
|
+
# Default hash value must be nil, which allows fallback lookup on parent hash
|
7
|
+
super(nil)
|
8
|
+
@parent_hash = parent_hash
|
9
|
+
end
|
10
|
+
|
11
|
+
def [](key)
|
12
|
+
super || @parent_hash[key]
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -1,9 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module ActiveResource
|
2
4
|
class LogSubscriber < ActiveSupport::LogSubscriber
|
3
5
|
def request(event)
|
4
6
|
result = event.payload[:result]
|
5
|
-
|
6
|
-
|
7
|
+
|
8
|
+
# When result is nil, the connection could not even be initiated
|
9
|
+
# with the server, so we log an internal synthetic error response (523).
|
10
|
+
code = result.try(:code) || 523 # matches CloudFlare's convention
|
11
|
+
message = result.try(:message) || "ActiveResource connection error"
|
12
|
+
body = result.try(:body) || ""
|
13
|
+
|
14
|
+
log_level_method = code.to_i < 400 ? :info : :error
|
15
|
+
|
16
|
+
send log_level_method, "#{event.payload[:method].to_s.upcase} #{event.payload[:request_uri]}"
|
17
|
+
send log_level_method, "--> %d %s %d (%.1fms)" % [code, message, body.to_s.length, event.duration]
|
7
18
|
end
|
8
19
|
|
9
20
|
def logger
|
@@ -12,4 +23,4 @@ module ActiveResource
|
|
12
23
|
end
|
13
24
|
end
|
14
25
|
|
15
|
-
ActiveResource::LogSubscriber.attach_to :active_resource
|
26
|
+
ActiveResource::LogSubscriber.attach_to :active_resource
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require "active_resource"
|
2
4
|
require "rails"
|
3
5
|
|
@@ -6,20 +8,18 @@ module ActiveResource
|
|
6
8
|
config.active_resource = ActiveSupport::OrderedOptions.new
|
7
9
|
|
8
10
|
initializer "active_resource.set_configs" do |app|
|
9
|
-
|
10
|
-
|
11
|
+
ActiveSupport.on_load(:active_resource) do
|
12
|
+
app.config.active_resource.each do |k, v|
|
13
|
+
send "#{k}=", v
|
14
|
+
end
|
11
15
|
end
|
12
16
|
end
|
13
17
|
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
ActionDispatch::Reloader.to_prepare do
|
19
|
-
ActiveResource::Base.instantiate_observers
|
20
|
-
end
|
18
|
+
initializer "active_resource.add_active_job_serializer" do |app|
|
19
|
+
if app.config.try(:active_job).try(:custom_serializers)
|
20
|
+
require "active_resource/active_job_serializer"
|
21
|
+
app.config.active_job.custom_serializers << ActiveResource::ActiveJobSerializer
|
21
22
|
end
|
22
23
|
end
|
23
24
|
end
|
24
25
|
end
|
25
|
-
|
@@ -1,5 +1,7 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/core_ext/class/attribute"
|
4
|
+
require "active_support/core_ext/module/deprecation"
|
3
5
|
|
4
6
|
module ActiveResource
|
5
7
|
# = Active Resource reflection
|
@@ -25,7 +27,6 @@ module ActiveResource
|
|
25
27
|
|
26
28
|
|
27
29
|
class AssociationReflection
|
28
|
-
|
29
30
|
def initialize(macro, name, options)
|
30
31
|
@macro, @name, @options = macro, name, options
|
31
32
|
end
|
@@ -61,17 +62,17 @@ module ActiveResource
|
|
61
62
|
|
62
63
|
# Returns the foreign_key for the macro.
|
63
64
|
def foreign_key
|
64
|
-
@foreign_key ||=
|
65
|
+
@foreign_key ||= derive_foreign_key
|
65
66
|
end
|
66
67
|
|
67
68
|
private
|
68
|
-
|
69
|
-
|
70
|
-
|
69
|
+
def derive_class_name
|
70
|
+
options[:class_name] ? options[:class_name].to_s.camelize : name.to_s.classify
|
71
|
+
end
|
71
72
|
|
72
|
-
|
73
|
-
|
74
|
-
|
73
|
+
def derive_foreign_key
|
74
|
+
options[:foreign_key] ? options[:foreign_key].to_s : "#{name.to_s.downcase}_id"
|
75
|
+
end
|
75
76
|
end
|
76
77
|
end
|
77
78
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module ActiveResource # :nodoc:
|
2
4
|
class Schema # :nodoc:
|
3
5
|
# attributes can be known to be one of these types. They are easy to
|
@@ -29,8 +31,8 @@ module ActiveResource # :nodoc:
|
|
29
31
|
|
30
32
|
the_type = type.to_s
|
31
33
|
# TODO: add defaults
|
32
|
-
#the_attr = [type.to_s]
|
33
|
-
#the_attr << options[:default] if options.has_key? :default
|
34
|
+
# the_attr = [type.to_s]
|
35
|
+
# the_attr << options[:default] if options.has_key? :default
|
34
36
|
@attrs[name.to_s] = the_type
|
35
37
|
self
|
36
38
|
end
|
@@ -45,7 +47,8 @@ module ActiveResource # :nodoc:
|
|
45
47
|
# attr_names.each { |name| attribute(name, 'string', options) }
|
46
48
|
# end
|
47
49
|
class_eval <<-EOV, __FILE__, __LINE__ + 1
|
48
|
-
|
50
|
+
# frozen_string_literal: true
|
51
|
+
def #{attr_type}(*args)
|
49
52
|
options = args.extract_options!
|
50
53
|
attr_names = args
|
51
54
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module ActiveResource
|
2
4
|
module Singleton
|
3
5
|
extend ActiveSupport::Concern
|
@@ -60,20 +62,19 @@ module ActiveResource
|
|
60
62
|
#
|
61
63
|
# Inventory.find
|
62
64
|
# # => raises ResourceNotFound
|
63
|
-
def find(options={})
|
65
|
+
def find(options = {})
|
64
66
|
find_singleton(options)
|
65
67
|
end
|
66
68
|
|
67
69
|
private
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
70
|
+
# Find singleton resource
|
71
|
+
def find_singleton(options)
|
72
|
+
prefix_options, query_options = split_options(options[:params])
|
73
|
+
|
74
|
+
path = singleton_path(prefix_options, query_options)
|
75
|
+
resp = self.format.decode(self.connection.get(path, self.headers).body)
|
76
|
+
instantiate_record(resp, prefix_options)
|
77
|
+
end
|
77
78
|
end
|
78
79
|
# Deletes the resource from the remote service.
|
79
80
|
#
|
@@ -87,28 +88,24 @@ module ActiveResource
|
|
87
88
|
|
88
89
|
|
89
90
|
protected
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
91
|
+
# Update the resource on the remote service
|
92
|
+
def update
|
93
|
+
connection.put(singleton_path(prefix_options), encode, self.class.headers).tap do |response|
|
94
|
+
load_attributes_from_response(response)
|
95
|
+
end
|
95
96
|
end
|
96
|
-
end
|
97
97
|
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
98
|
+
# Create (i.e. \save to the remote service) the \new resource.
|
99
|
+
def create
|
100
|
+
connection.post(singleton_path, encode, self.class.headers).tap do |response|
|
101
|
+
self.id = id_from_response(response)
|
102
|
+
load_attributes_from_response(response)
|
103
|
+
end
|
103
104
|
end
|
104
|
-
end
|
105
105
|
|
106
106
|
private
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
end
|
111
|
-
|
107
|
+
def singleton_path(options = nil)
|
108
|
+
self.class.singleton_path(options || prefix_options)
|
109
|
+
end
|
112
110
|
end
|
113
|
-
|
114
111
|
end
|
@@ -1,3 +1,7 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/core_ext/object/duplicable"
|
4
|
+
|
1
5
|
module ThreadsafeAttributes
|
2
6
|
def self.included(klass)
|
3
7
|
klass.extend(ClassMethods)
|
@@ -5,57 +9,57 @@ module ThreadsafeAttributes
|
|
5
9
|
|
6
10
|
module ClassMethods
|
7
11
|
def threadsafe_attribute(*attrs)
|
12
|
+
main_thread = Thread.main # remember this, because it could change after forking
|
13
|
+
|
8
14
|
attrs.each do |attr|
|
9
15
|
define_method attr do
|
10
|
-
get_threadsafe_attribute(attr)
|
16
|
+
get_threadsafe_attribute(attr, main_thread)
|
11
17
|
end
|
12
18
|
|
13
19
|
define_method "#{attr}=" do |value|
|
14
|
-
set_threadsafe_attribute(attr, value)
|
20
|
+
set_threadsafe_attribute(attr, value, main_thread)
|
15
21
|
end
|
16
22
|
|
17
23
|
define_method "#{attr}_defined?" do
|
18
|
-
threadsafe_attribute_defined?(attr)
|
24
|
+
threadsafe_attribute_defined?(attr, main_thread)
|
19
25
|
end
|
20
26
|
end
|
21
27
|
end
|
22
28
|
end
|
23
29
|
|
24
30
|
private
|
31
|
+
def get_threadsafe_attribute(name, main_thread)
|
32
|
+
if threadsafe_attribute_defined_by_thread?(name, Thread.current)
|
33
|
+
get_threadsafe_attribute_by_thread(name, Thread.current)
|
34
|
+
elsif threadsafe_attribute_defined_by_thread?(name, main_thread)
|
35
|
+
value = get_threadsafe_attribute_by_thread(name, main_thread)
|
36
|
+
value = value.dup if value.duplicable?
|
37
|
+
set_threadsafe_attribute_by_thread(name, value, Thread.current)
|
38
|
+
value
|
39
|
+
end
|
40
|
+
end
|
25
41
|
|
26
|
-
|
27
|
-
if threadsafe_attribute_defined_by_thread?(name, Thread.current)
|
28
|
-
get_threadsafe_attribute_by_thread(name, Thread.current)
|
29
|
-
elsif threadsafe_attribute_defined_by_thread?(name, Thread.main)
|
30
|
-
value = get_threadsafe_attribute_by_thread(name, Thread.main)
|
31
|
-
value = value.dup if value
|
42
|
+
def set_threadsafe_attribute(name, value, main_thread)
|
32
43
|
set_threadsafe_attribute_by_thread(name, value, Thread.current)
|
33
|
-
|
44
|
+
unless threadsafe_attribute_defined_by_thread?(name, main_thread)
|
45
|
+
set_threadsafe_attribute_by_thread(name, value, main_thread)
|
46
|
+
end
|
34
47
|
end
|
35
|
-
end
|
36
48
|
|
37
|
-
|
38
|
-
|
39
|
-
unless threadsafe_attribute_defined_by_thread?(name, Thread.main)
|
40
|
-
set_threadsafe_attribute_by_thread(name, value, Thread.main)
|
49
|
+
def threadsafe_attribute_defined?(name, main_thread)
|
50
|
+
threadsafe_attribute_defined_by_thread?(name, Thread.current) || ((Thread.current != main_thread) && threadsafe_attribute_defined_by_thread?(name, main_thread))
|
41
51
|
end
|
42
|
-
end
|
43
52
|
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
def get_threadsafe_attribute_by_thread(name, thread)
|
49
|
-
thread["active.resource.#{name}.#{self.object_id}"]
|
50
|
-
end
|
51
|
-
|
52
|
-
def set_threadsafe_attribute_by_thread(name, value, thread)
|
53
|
-
thread["active.resource.#{name}.#{self.object_id}.defined"] = true
|
54
|
-
thread["active.resource.#{name}.#{self.object_id}"] = value
|
55
|
-
end
|
53
|
+
def get_threadsafe_attribute_by_thread(name, thread)
|
54
|
+
thread.thread_variable_get "active.resource.#{name}.#{self.object_id}"
|
55
|
+
end
|
56
56
|
|
57
|
-
|
58
|
-
|
59
|
-
|
57
|
+
def set_threadsafe_attribute_by_thread(name, value, thread)
|
58
|
+
thread.thread_variable_set "active.resource.#{name}.#{self.object_id}.defined", true
|
59
|
+
thread.thread_variable_set "active.resource.#{name}.#{self.object_id}", value
|
60
|
+
end
|
60
61
|
|
62
|
+
def threadsafe_attribute_defined_by_thread?(name, thread)
|
63
|
+
thread.thread_variable_get "active.resource.#{name}.#{self.object_id}.defined"
|
64
|
+
end
|
61
65
|
end
|
@@ -1,8 +1,10 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "active_support/core_ext/array/wrap"
|
4
|
+
require "active_support/core_ext/object/blank"
|
3
5
|
|
4
6
|
module ActiveResource
|
5
|
-
class ResourceInvalid < ClientError
|
7
|
+
class ResourceInvalid < ClientError # :nodoc:
|
6
8
|
end
|
7
9
|
|
8
10
|
# Active Resource validation is reported to and from this object, which is used by Base#save
|
@@ -20,7 +22,7 @@ module ActiveResource
|
|
20
22
|
add humanized_attributes[attr_name], message[(attr_name.size + 1)..-1]
|
21
23
|
end
|
22
24
|
end
|
23
|
-
|
25
|
+
add(:base, message) if attr_message.nil?
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
@@ -33,16 +35,16 @@ module ActiveResource
|
|
33
35
|
def from_hash(messages, save_cache = false)
|
34
36
|
clear unless save_cache
|
35
37
|
|
36
|
-
messages.each do |(key,errors)|
|
38
|
+
messages.each do |(key, errors)|
|
37
39
|
errors.each do |error|
|
38
40
|
if @base.known_attributes.include?(key)
|
39
41
|
add key, error
|
40
|
-
elsif key ==
|
41
|
-
|
42
|
+
elsif key == "base"
|
43
|
+
add(:base, error)
|
42
44
|
else
|
43
45
|
# reporting an error on an attribute not in attributes
|
44
46
|
# format and add them to base
|
45
|
-
|
47
|
+
add(:base, "#{key.humanize} #{error}")
|
46
48
|
end
|
47
49
|
end
|
48
50
|
end
|
@@ -51,11 +53,11 @@ module ActiveResource
|
|
51
53
|
# Grabs errors from a json response.
|
52
54
|
def from_json(json, save_cache = false)
|
53
55
|
decoded = ActiveSupport::JSON.decode(json) || {} rescue {}
|
54
|
-
if decoded.kind_of?(Hash) && (decoded.has_key?(
|
55
|
-
errors = decoded[
|
56
|
+
if decoded.kind_of?(Hash) && (decoded.has_key?("errors") || decoded.empty?)
|
57
|
+
errors = decoded["errors"] || {}
|
56
58
|
if errors.kind_of?(Array)
|
57
59
|
# 3.2.1-style with array of strings
|
58
|
-
ActiveSupport::Deprecation.warn(
|
60
|
+
ActiveSupport::Deprecation.warn("Returning errors as an array of strings is deprecated.")
|
59
61
|
from_array errors, save_cache
|
60
62
|
else
|
61
63
|
# 3.2.2+ style
|
@@ -70,7 +72,7 @@ module ActiveResource
|
|
70
72
|
|
71
73
|
# Grabs errors from an XML response.
|
72
74
|
def from_xml(xml, save_cache = false)
|
73
|
-
array = Array.wrap(Hash.from_xml(xml)[
|
75
|
+
array = Array.wrap(Hash.from_xml(xml)["errors"]["error"]) rescue []
|
74
76
|
from_array array, save_cache
|
75
77
|
end
|
76
78
|
end
|
@@ -100,12 +102,13 @@ module ActiveResource
|
|
100
102
|
include ActiveModel::Validations
|
101
103
|
|
102
104
|
included do
|
103
|
-
|
105
|
+
alias_method :save_without_validation, :save
|
106
|
+
alias_method :save, :save_with_validation
|
104
107
|
end
|
105
108
|
|
106
109
|
# Validate a resource and save (POST) it to the remote web service.
|
107
110
|
# If any local validations fail - the save (POST) will not be attempted.
|
108
|
-
def save_with_validation(options={})
|
111
|
+
def save_with_validation(options = {})
|
109
112
|
perform_validation = options[:validate] != false
|
110
113
|
|
111
114
|
# clear the remote validations so they don't interfere with the local
|
@@ -130,7 +133,7 @@ module ActiveResource
|
|
130
133
|
|
131
134
|
# Loads the set of remote errors into the object's Errors based on the
|
132
135
|
# content-type of the error-block received.
|
133
|
-
def load_remote_errors(remote_errors, save_cache = false
|
136
|
+
def load_remote_errors(remote_errors, save_cache = false) # :nodoc:
|
134
137
|
case self.class.format
|
135
138
|
when ActiveResource::Formats[:xml]
|
136
139
|
errors.from_xml(remote_errors.response.body, save_cache)
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module ActiveResource
|
2
|
-
module VERSION
|
3
|
-
MAJOR =
|
4
|
-
MINOR =
|
4
|
+
module VERSION # :nodoc:
|
5
|
+
MAJOR = 6
|
6
|
+
MINOR = 0
|
5
7
|
TINY = 0
|
6
8
|
PRE = nil
|
7
9
|
|
8
|
-
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(
|
10
|
+
STRING = [MAJOR, MINOR, TINY, PRE].compact.join(".")
|
9
11
|
end
|
10
12
|
end
|
data/lib/active_resource.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
#--
|
2
4
|
# Copyright (c) 2006-2012 David Heinemeier Hansson
|
3
5
|
#
|
@@ -21,10 +23,10 @@
|
|
21
23
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
22
24
|
#++
|
23
25
|
|
24
|
-
require
|
25
|
-
require
|
26
|
-
require
|
27
|
-
require
|
26
|
+
require "active_support"
|
27
|
+
require "active_model"
|
28
|
+
require "active_resource/exceptions"
|
29
|
+
require "active_resource/version"
|
28
30
|
|
29
31
|
module ActiveResource
|
30
32
|
extend ActiveSupport::Autoload
|
@@ -35,12 +37,11 @@ module ActiveResource
|
|
35
37
|
autoload :CustomMethods
|
36
38
|
autoload :Formats
|
37
39
|
autoload :HttpMock
|
38
|
-
autoload :Observing
|
39
40
|
autoload :Schema
|
40
41
|
autoload :Singleton
|
42
|
+
autoload :InheritingHash
|
41
43
|
autoload :Validations
|
42
44
|
autoload :Collection
|
43
45
|
end
|
44
46
|
|
45
|
-
require
|
46
|
-
|
47
|
+
require "active_resource/railtie" if defined?(Rails.application)
|
data/lib/activeresource.rb
CHANGED
metadata
CHANGED
@@ -1,57 +1,57 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activeresource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 6.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Heinemeier Hansson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '6.0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '6.0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: activemodel
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '6.0'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '6.0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: activemodel-serializers-xml
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,16 +80,31 @@ dependencies:
|
|
80
80
|
- - ">="
|
81
81
|
- !ruby/object:Gem::Version
|
82
82
|
version: 0.13.0
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rexml
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
83
97
|
description: REST on Rails. Wrap your RESTful web app with Ruby classes and work with
|
84
98
|
them like Active Record models.
|
85
99
|
email: david@loudthinking.com
|
86
100
|
executables: []
|
87
101
|
extensions: []
|
88
|
-
extra_rdoc_files:
|
89
|
-
- README.rdoc
|
102
|
+
extra_rdoc_files: []
|
90
103
|
files:
|
91
|
-
-
|
104
|
+
- MIT-LICENSE
|
105
|
+
- README.md
|
92
106
|
- lib/active_resource.rb
|
107
|
+
- lib/active_resource/active_job_serializer.rb
|
93
108
|
- lib/active_resource/associations.rb
|
94
109
|
- lib/active_resource/associations/builder/association.rb
|
95
110
|
- lib/active_resource/associations/builder/belongs_to.rb
|
@@ -105,8 +120,8 @@ files:
|
|
105
120
|
- lib/active_resource/formats/json_format.rb
|
106
121
|
- lib/active_resource/formats/xml_format.rb
|
107
122
|
- lib/active_resource/http_mock.rb
|
123
|
+
- lib/active_resource/inheriting_hash.rb
|
108
124
|
- lib/active_resource/log_subscriber.rb
|
109
|
-
- lib/active_resource/observing.rb
|
110
125
|
- lib/active_resource/railtie.rb
|
111
126
|
- lib/active_resource/reflection.rb
|
112
127
|
- lib/active_resource/schema.rb
|
@@ -118,26 +133,28 @@ files:
|
|
118
133
|
homepage: http://www.rubyonrails.org
|
119
134
|
licenses:
|
120
135
|
- MIT
|
121
|
-
metadata:
|
136
|
+
metadata:
|
137
|
+
bug_tracker_uri: https://github.com/rails/activeresource/issues
|
138
|
+
changelog_uri: https://github.com/rails/activeresource/releases/tag/v6.0.0
|
139
|
+
documentation_uri: http://rubydoc.info/gems/activeresource
|
140
|
+
source_code_uri: https://github.com/rails/activeresource/tree/v6.0.0
|
141
|
+
rubygems_mfa_required: 'true'
|
122
142
|
post_install_message:
|
123
|
-
rdoc_options:
|
124
|
-
- "--main"
|
125
|
-
- README.rdoc
|
143
|
+
rdoc_options: []
|
126
144
|
require_paths:
|
127
145
|
- lib
|
128
146
|
required_ruby_version: !ruby/object:Gem::Requirement
|
129
147
|
requirements:
|
130
148
|
- - ">="
|
131
149
|
- !ruby/object:Gem::Version
|
132
|
-
version:
|
150
|
+
version: 2.6.0
|
133
151
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
134
152
|
requirements:
|
135
153
|
- - ">="
|
136
154
|
- !ruby/object:Gem::Version
|
137
155
|
version: '0'
|
138
156
|
requirements: []
|
139
|
-
|
140
|
-
rubygems_version: 2.5.1
|
157
|
+
rubygems_version: 3.2.32
|
141
158
|
signing_key:
|
142
159
|
specification_version: 4
|
143
160
|
summary: REST modeling framework (part of Rails).
|