aboutsummaryrefslogtreecommitdiffstats
path: root/activeresource/lib
diff options
context:
space:
mode:
authorJeremy Kemper <jeremy@bitsweat.net>2006-12-29 22:16:04 +0000
committerJeremy Kemper <jeremy@bitsweat.net>2006-12-29 22:16:04 +0000
commit73101af6ab89034b53e86c28b2f8a9f14eece950 (patch)
treef2b2f63f6a56c20dcd004037a25007b551d88da4 /activeresource/lib
parent6a5388b6549cb88fd19ff7ea2c48be1210a6e1cb (diff)
downloadrails-73101af6ab89034b53e86c28b2f8a9f14eece950.tar.gz
rails-73101af6ab89034b53e86c28b2f8a9f14eece950.tar.bz2
rails-73101af6ab89034b53e86c28b2f8a9f14eece950.zip
prefix_parameters pulls /:path/:params from the URI prefix
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@5809 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activeresource/lib')
-rw-r--r--activeresource/lib/active_resource/base.rb25
1 files changed, 12 insertions, 13 deletions
diff --git a/activeresource/lib/active_resource/base.rb b/activeresource/lib/active_resource/base.rb
index c8225bba1b..b5ebd3961c 100644
--- a/activeresource/lib/active_resource/base.rb
+++ b/activeresource/lib/active_resource/base.rb
@@ -4,8 +4,7 @@ require 'set'
module ActiveResource
class Base
- # The logger for logging diagnostic and trace information during ARes
- # calls.
+ # The logger for diagnosing and tracing ARes calls.
cattr_accessor :logger
class << self
@@ -18,9 +17,8 @@ module ActiveResource
end
def site=(site)
- @site = create_site_uri_from(site)
@connection = nil
- @site
+ @site = create_site_uri_from(site)
end
def connection(refresh = false)
@@ -40,13 +38,11 @@ module ActiveResource
end
def prefix=(value = '/')
- @prefix_parameters = Set.new
- prefix_call = value.gsub(/:\w+/) do |key|
- @prefix_parameters << key[1..-1].to_sym
- "\#{options[#{key}]}"
- end
- method_decl = %(def prefix(options={}) "#{prefix_call}" end)
- instance_eval method_decl, __FILE__, __LINE__
+ prefix_call = value.gsub(/:\w+/) { |key| "\#{options[#{key}]}" }
+ instance_eval <<-end_eval, __FILE__, __LINE__
+ def prefix_source() "#{value}" end
+ def prefix(options={}) "#{prefix_call}" end
+ end_eval
rescue
logger.error "Couldn't set prefix: #{$!}\n #{method_decl}"
raise
@@ -99,10 +95,13 @@ module ActiveResource
site.is_a?(URI) ? site.dup : URI.parse(site)
end
+ def prefix_parameters
+ @prefix_parameters ||= prefix_source.scan(/:\w+/).map { |key| key[1..-1].to_sym }.to_set
+ end
+
def query_string(options)
# Omit parameters which appear in the URI path.
- prefix unless defined?(@prefix_parameters)
- query_params = options.reject { |key, value| @prefix_parameters.include?(key) }
+ query_params = options.reject { |key, value| prefix_parameters.include?(key) }
# Accumulate a list of escaped key=value pairs for the given parameters.
pairs = []