Bugfixes and Rails Edge
Update to Rails 2.3.1. (Actually, not quite. Doesn't look like 2.3.1 will be released today, but I REALLY want to push these bugfixes out.) Removed bundled Rack (Rails 2.3.1 comes bundled with Rack 1.0). Add config.action_view.cache_template_loading = true to production environment. Fix FastCGI bug (http://rubyforge.org/tracker/index.php?func=detail&aid=24191&group_id=186&atid=783). Fix WikiWords bug (http://rubyforge.org/pipermail/instiki-users/2009-February/001181.html).
This commit is contained in:
parent
0ddef97328
commit
133c21b801
641 changed files with 20541 additions and 71675 deletions
|
@ -462,7 +462,7 @@ module ActiveResource
|
|||
# that_guy.valid? # => false
|
||||
# that_guy.new? # => true
|
||||
def create(attributes = {})
|
||||
returning(self.new(attributes)) { |res| res.save }
|
||||
self.new(attributes).tap { |resource| resource.save }
|
||||
end
|
||||
|
||||
# Core method for finding resources. Used similarly to Active Record's +find+ method.
|
||||
|
@ -600,7 +600,7 @@ module ActiveResource
|
|||
end
|
||||
|
||||
def instantiate_record(record, prefix_options = {})
|
||||
returning new(record) do |resource|
|
||||
new(record).tap do |resource|
|
||||
resource.prefix_options = prefix_options
|
||||
end
|
||||
end
|
||||
|
@ -747,7 +747,7 @@ module ActiveResource
|
|||
#
|
||||
def ==(other)
|
||||
other.equal?(self) || (other.instance_of?(self.class) && other.id == id && other.prefix_options == prefix_options)
|
||||
end
|
||||
end
|
||||
|
||||
# Tests for equality (delegates to ==).
|
||||
def eql?(other)
|
||||
|
@ -773,7 +773,7 @@ module ActiveResource
|
|||
# my_invoice.customer # => That Company
|
||||
# next_invoice.customer # => That Company
|
||||
def dup
|
||||
returning self.class.new do |resource|
|
||||
self.class.new.tap do |resource|
|
||||
resource.attributes = @attributes
|
||||
resource.prefix_options = @prefix_options
|
||||
end
|
||||
|
@ -985,14 +985,14 @@ module ActiveResource
|
|||
|
||||
# Update the resource on the remote service.
|
||||
def update
|
||||
returning connection.put(element_path(prefix_options), encode, self.class.headers) do |response|
|
||||
connection.put(element_path(prefix_options), encode, self.class.headers).tap do |response|
|
||||
load_attributes_from_response(response)
|
||||
end
|
||||
end
|
||||
|
||||
# Create (i.e., \save to the remote service) the \new resource.
|
||||
def create
|
||||
returning connection.post(collection_path, encode, self.class.headers) do |response|
|
||||
connection.post(collection_path, encode, self.class.headers).tap do |response|
|
||||
self.id = id_from_response(response)
|
||||
load_attributes_from_response(response)
|
||||
end
|
||||
|
|
|
@ -59,7 +59,7 @@ module ActiveResource
|
|||
# end
|
||||
module_eval <<-EOE, __FILE__, __LINE__
|
||||
def #{method}(path, request_headers = {}, body = nil, status = 200, response_headers = {})
|
||||
@responses[Request.new(:#{method}, path, nil, request_headers)] = Response.new(body || "", status, response_headers)
|
||||
@responses << [Request.new(:#{method}, path, nil, request_headers), Response.new(body || "", status, response_headers)]
|
||||
end
|
||||
EOE
|
||||
end
|
||||
|
@ -91,21 +91,17 @@ module ActiveResource
|
|||
@@requests ||= []
|
||||
end
|
||||
|
||||
# Returns a hash of <tt>request => response</tt> pairs for all all responses this mock has delivered, where +request+
|
||||
# is an instance of ActiveResource::Request and the response is, naturally, an instance of
|
||||
# ActiveResource::Response.
|
||||
# Returns the list of requests and their mocked responses. Look up a
|
||||
# response for a request using responses.assoc(request).
|
||||
def responses
|
||||
@@responses ||= {}
|
||||
@@responses ||= []
|
||||
end
|
||||
|
||||
# Accepts a block which declares a set of requests and responses for the HttpMock to respond to. See the main
|
||||
# ActiveResource::HttpMock description for a more detailed explanation.
|
||||
def respond_to(pairs = {}) #:yields: mock
|
||||
reset!
|
||||
pairs.each do |(path, response)|
|
||||
responses[path] = response
|
||||
end
|
||||
|
||||
responses.concat pairs.to_a
|
||||
if block_given?
|
||||
yield Responder.new(responses)
|
||||
else
|
||||
|
@ -120,29 +116,23 @@ module ActiveResource
|
|||
end
|
||||
end
|
||||
|
||||
for method in [ :post, :put ]
|
||||
# def post(path, body, headers)
|
||||
# request = ActiveResource::Request.new(:post, path, body, headers)
|
||||
# self.class.requests << request
|
||||
# self.class.responses[request] || raise(InvalidRequestError.new("No response recorded for #{request}"))
|
||||
# end
|
||||
module_eval <<-EOE, __FILE__, __LINE__
|
||||
def #{method}(path, body, headers)
|
||||
request = ActiveResource::Request.new(:#{method}, path, body, headers)
|
||||
self.class.requests << request
|
||||
self.class.responses[request] || raise(InvalidRequestError.new("No response recorded for \#{request}"))
|
||||
end
|
||||
EOE
|
||||
end
|
||||
|
||||
for method in [ :get, :delete, :head ]
|
||||
module_eval <<-EOE, __FILE__, __LINE__
|
||||
def #{method}(path, headers)
|
||||
request = ActiveResource::Request.new(:#{method}, path, nil, headers)
|
||||
self.class.requests << request
|
||||
self.class.responses[request] || raise(InvalidRequestError.new("No response recorded for \#{request}"))
|
||||
end
|
||||
EOE
|
||||
# body? methods
|
||||
{ true => %w(post put),
|
||||
false => %w(get delete head) }.each do |has_body, methods|
|
||||
methods.each do |method|
|
||||
# def post(path, body, headers)
|
||||
# request = ActiveResource::Request.new(:post, path, body, headers)
|
||||
# self.class.requests << request
|
||||
# self.class.responses.assoc(request).try(:second) || raise(InvalidRequestError.new("No response recorded for #{request}"))
|
||||
# end
|
||||
module_eval <<-EOE, __FILE__, __LINE__
|
||||
def #{method}(path, #{'body, ' if has_body}headers)
|
||||
request = ActiveResource::Request.new(:#{method}, path, #{has_body ? 'body, ' : 'nil, '}headers)
|
||||
self.class.requests << request
|
||||
self.class.responses.assoc(request).try(:second) || raise(InvalidRequestError.new("No response recorded for \#{request}"))
|
||||
end
|
||||
EOE
|
||||
end
|
||||
end
|
||||
|
||||
def initialize(site) #:nodoc:
|
||||
|
@ -157,21 +147,13 @@ module ActiveResource
|
|||
@method, @path, @body, @headers = method, path, body, headers.merge(ActiveResource::Connection::HTTP_FORMAT_HEADER_NAMES[method] => 'application/xml')
|
||||
end
|
||||
|
||||
def ==(other_request)
|
||||
other_request.hash == hash
|
||||
end
|
||||
|
||||
def eql?(other_request)
|
||||
self == other_request
|
||||
def ==(req)
|
||||
path == req.path && method == req.method && headers == req.headers
|
||||
end
|
||||
|
||||
def to_s
|
||||
"<#{method.to_s.upcase}: #{path} [#{headers}] (#{body})>"
|
||||
end
|
||||
|
||||
def hash
|
||||
"#{path}#{method}#{headers}".hash
|
||||
end
|
||||
end
|
||||
|
||||
class Response
|
||||
|
|
|
@ -203,7 +203,7 @@ module ActiveResource
|
|||
def from_xml(xml)
|
||||
clear
|
||||
humanized_attributes = @base.attributes.keys.inject({}) { |h, attr_name| h.update(attr_name.humanize => attr_name) }
|
||||
messages = Hash.from_xml(xml)['errors']['error'] rescue []
|
||||
messages = Array.wrap(Hash.from_xml(xml)['errors']['error']) rescue []
|
||||
messages.each do |message|
|
||||
attr_message = humanized_attributes.keys.detect do |attr_name|
|
||||
if message[0, attr_name.size + 1] == "#{attr_name} "
|
||||
|
|
|
@ -2,7 +2,7 @@ module ActiveResource
|
|||
module VERSION #:nodoc:
|
||||
MAJOR = 2
|
||||
MINOR = 3
|
||||
TINY = 0
|
||||
TINY = 1
|
||||
|
||||
STRING = [MAJOR, MINOR, TINY].join('.')
|
||||
end
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue