From b540eca5889d7a28fac39c9ec0df715aa89487ce Mon Sep 17 00:00:00 2001
From: Jeremy Kemper <jeremy@bitsweat.net>
Date: Sun, 1 Nov 2009 11:06:47 +0100
Subject: Consolidate Object#to_param and #to_query core extensions

---
 activeresource/lib/active_resource/base.rb | 1 +
 1 file changed, 1 insertion(+)

(limited to 'activeresource')

diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index ae627c365d..bd2abdd38e 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -8,6 +8,7 @@ require 'active_support/core_ext/module/delegation'
 require 'active_support/core_ext/module/aliasing'
 require 'active_support/core_ext/object/blank'
 require 'active_support/core_ext/object/misc'
+require 'active_support/core_ext/object/to_query'
 require 'set'
 require 'uri'
 
-- 
cgit v1.2.3


From 6d808cf494e0434c814c0be9594020ad6f00ef18 Mon Sep 17 00:00:00 2001
From: Jeremy Kemper <jeremy@bitsweat.net>
Date: Mon, 9 Nov 2009 04:59:26 -0800
Subject: Remove reliance on string access core extension

---
 activeresource/lib/active_resource/base.rb | 27 +++++++++++++++------------
 1 file changed, 15 insertions(+), 12 deletions(-)

(limited to 'activeresource')

diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index bd2abdd38e..bfe4208d98 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -1152,15 +1152,16 @@ module ActiveResource
     def respond_to?(method, include_priv = false)
       method_name = method.to_s
       if attributes.nil?
-        return super
+        super
       elsif attributes.has_key?(method_name)
-        return true
-      elsif ['?','='].include?(method_name.last) && attributes.has_key?(method_name.first(-1))
-        return true
+        true
+      elsif method_name =~ /(?:=|\?)$/ && attributes.include?($`)
+        true
+      else
+        # super must be called at the end of the method, because the inherited respond_to?
+        # would return true for generated readers, even if the attribute wasn't present
+        super
       end
-      # super must be called at the end of the method, because the inherited respond_to?
-      # would return true for generated readers, even if the attribute wasn't present
-      super
     end
 
     protected
@@ -1249,13 +1250,15 @@ module ActiveResource
       def method_missing(method_symbol, *arguments) #:nodoc:
         method_name = method_symbol.to_s
 
-        case method_name.last
+        if method_name =~ /(=|\?)$/
+          case $1
           when "="
-            attributes[method_name.first(-1)] = arguments.first
+            attributes[$`] = arguments.first
           when "?"
-            attributes[method_name.first(-1)]
-          else
-            attributes.has_key?(method_name) ? attributes[method_name] : super
+            attributes[$`]
+          end
+        else
+          attributes.include?(method_name) ? attributes[method_name] : super
         end
       end
   end
-- 
cgit v1.2.3


From 76b2d3e33730fce9680d0b6e97df12b1744fb23d Mon Sep 17 00:00:00 2001
From: Jeremy Kemper <jeremy@bitsweat.net>
Date: Mon, 9 Nov 2009 05:07:58 -0800
Subject: Ruby 1.9.2: URI.parse and .decode are deprecated

---
 activeresource/lib/active_resource/base.rb       | 12 ++++++++----
 activeresource/lib/active_resource/connection.rb |  9 +++++----
 2 files changed, 13 insertions(+), 8 deletions(-)

(limited to 'activeresource')

diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index bfe4208d98..18105e8887 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -274,8 +274,8 @@ module ActiveResource
           @site = nil
         else
           @site = create_site_uri_from(site)
-          @user = URI.decode(@site.user) if @site.user
-          @password = URI.decode(@site.password) if @site.password
+          @user = uri_parser.unescape(@site.user) if @site.user
+          @password = uri_parser.unescape(@site.password) if @site.password
         end
       end
 
@@ -737,12 +737,12 @@ module ActiveResource
 
         # Accepts a URI and creates the site URI from that.
         def create_site_uri_from(site)
-          site.is_a?(URI) ? site.dup : URI.parse(site)
+          site.is_a?(URI) ? site.dup : uri_parser.parse(site)
         end
 
         # Accepts a URI and creates the proxy URI from that.
         def create_proxy_uri_from(proxy)
-          proxy.is_a?(URI) ? proxy.dup : URI.parse(proxy)
+          proxy.is_a?(URI) ? proxy.dup : uri_parser.parse(proxy)
         end
 
         # contains a set of the current prefix parameters.
@@ -767,6 +767,10 @@ module ActiveResource
 
           [ prefix_options, query_options ]
         end
+
+        def uri_parser
+          @uri_parser ||= URI.const_defined?(:Parser) ? URI::Parser.new : URI
+        end
     end
 
     attr_accessor :attributes #:nodoc:
diff --git a/activeresource/lib/active_resource/connection.rb b/activeresource/lib/active_resource/connection.rb
index 98cb1a932b..193be89a82 100644
--- a/activeresource/lib/active_resource/connection.rb
+++ b/activeresource/lib/active_resource/connection.rb
@@ -31,20 +31,21 @@ module ActiveResource
     def initialize(site, format = ActiveResource::Formats::XmlFormat)
       raise ArgumentError, 'Missing site URI' unless site
       @user = @password = nil
+      @uri_parser = URI.const_defined?(:Parser) ? URI::Parser.new : URI
       self.site = site
       self.format = format
     end
 
     # Set URI for remote service.
     def site=(site)
-      @site = site.is_a?(URI) ? site : URI.parse(site)
-      @user = URI.decode(@site.user) if @site.user
-      @password = URI.decode(@site.password) if @site.password
+      @site = site.is_a?(URI) ? site : @uri_parser.parse(site)
+      @user = @uri_parser.unescape(@site.user) if @site.user
+      @password = @uri_parser.unescape(@site.password) if @site.password
     end
 
     # Set the proxy for remote service.
     def proxy=(proxy)
-      @proxy = proxy.is_a?(URI) ? proxy : URI.parse(proxy)
+      @proxy = proxy.is_a?(URI) ? proxy : @uri_parser.parse(proxy)
     end
 
     # Sets the user for remote service.
-- 
cgit v1.2.3


From 1979e9c8553f4d7905822fdcc99e52d179e78c3c Mon Sep 17 00:00:00 2001
From: Xavier Noria <fxn@hashref.com>
Date: Mon, 9 Nov 2009 21:11:26 +0100
Subject: Symbol#to_proc is not needed for Ruby >= 1.8.7

---
 activeresource/test/cases/base/load_test.rb | 1 -
 1 file changed, 1 deletion(-)

(limited to 'activeresource')

diff --git a/activeresource/test/cases/base/load_test.rb b/activeresource/test/cases/base/load_test.rb
index 189a4d81fe..7745a9439b 100644
--- a/activeresource/test/cases/base/load_test.rb
+++ b/activeresource/test/cases/base/load_test.rb
@@ -1,7 +1,6 @@
 require 'abstract_unit'
 require "fixtures/person"
 require "fixtures/street_address"
-require 'active_support/core_ext/symbol'
 require 'active_support/core_ext/hash/conversions'
 
 module Highrise
-- 
cgit v1.2.3


From 11e798ae0f2f46498811282756c9d21df3d4b523 Mon Sep 17 00:00:00 2001
From: Joshua Peek <josh@joshpeek.com>
Date: Mon, 9 Nov 2009 23:28:36 -0600
Subject: Avoid adding component lib/ to load path multiple times

---
 activeresource/test/abstract_unit.rb | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

(limited to 'activeresource')

diff --git a/activeresource/test/abstract_unit.rb b/activeresource/test/abstract_unit.rb
index ee12f785b5..10849be20c 100644
--- a/activeresource/test/abstract_unit.rb
+++ b/activeresource/test/abstract_unit.rb
@@ -3,9 +3,11 @@ begin
   require "#{root}/vendor/gems/environment"
 rescue LoadError
   $:.unshift("#{root}/activesupport/lib")
-  $:.unshift("#{root}/activeresource/lib")
 end
 
+lib = File.expand_path("#{File.dirname(__FILE__)}/../lib")
+$:.unshift(lib) unless $:.include?('lib') || $:.include?(lib)
+
 require 'rubygems'
 require 'test/unit'
 require 'active_support'
-- 
cgit v1.2.3


From bbb3e5a858b2d078b2af7516a583fa12f3edb565 Mon Sep 17 00:00:00 2001
From: Jeremy Kemper <jeremy@bitsweat.net>
Date: Tue, 10 Nov 2009 16:50:15 -0800
Subject: Unify test:isolated across components and run by default at toplevel

---
 activeresource/Rakefile | 15 ++++++++-------
 1 file changed, 8 insertions(+), 7 deletions(-)

(limited to 'activeresource')

diff --git a/activeresource/Rakefile b/activeresource/Rakefile
index 834d4c0c59..6566e84d4c 100644
--- a/activeresource/Rakefile
+++ b/activeresource/Rakefile
@@ -35,15 +35,16 @@ Rake::TestTask.new { |t|
   t.warning = true
 }
 
-task :isolated_test do
-  ruby = File.join(*RbConfig::CONFIG.values_at('bindir', 'RUBY_INSTALL_NAME'))
-  activesupport_path = "#{File.dirname(__FILE__)}/../activesupport/lib"
-  Dir.glob("test/**/*_test.rb").all? do |file|
-    system(ruby, '-w', "-Ilib:test:#{activesupport_path}", file)
-  end or raise "Failures"
+namespace :test do
+  task :isolated do
+    ruby = File.join(*RbConfig::CONFIG.values_at('bindir', 'RUBY_INSTALL_NAME'))
+    activesupport_path = "#{File.dirname(__FILE__)}/../activesupport/lib"
+    Dir.glob("test/**/*_test.rb").all? do |file|
+      system(ruby, '-w', "-Ilib:test:#{activesupport_path}", file)
+    end or raise "Failures"
+  end
 end
 
-
 # Generate the RDoc documentation
 
 Rake::RDocTask.new { |rdoc|
-- 
cgit v1.2.3