Changeset 5767
- Timestamp:
- 12/21/06 22:12:21 (3 years ago)
- Files:
-
- trunk/activeresource/CHANGELOG (modified) (1 diff)
- trunk/activeresource/lib/active_resource/base.rb (modified) (2 diffs)
- trunk/activeresource/test/base_test.rb (modified) (1 diff)
- trunk/activeresource/test/fixtures/beast.rb (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/activeresource/CHANGELOG
r5717 r5767 1 1 *SVN* 2 2 3 * Allow subclassed resources to share the site info [Rick ]3 * Allow subclassed resources to share the site info [Rick, Jeremy Kemper] 4 4 5 5 class BeastResource < ActiveResource::Base 6 6 self.site = 'http://beast.caboo.se' 7 7 end 8 8 9 9 class Forum < BeastResource 10 10 # taken from BeastResource 11 11 # self.site = 'http://beast.caboo.se' 12 12 end 13 13 14 14 class Topic < BeastResource 15 s ite <<'/forums/:forum_id'15 self.site += '/forums/:forum_id' 16 16 end 17 17 trunk/activeresource/lib/active_resource/base.rb
r5717 r5767 7 7 cattr_accessor :logger 8 8 9 def self.inherited(base)10 base.site = site.to_s if site11 super12 end13 14 9 class << self 15 attr_reader :site 10 def site 11 if defined?(@site) 12 @site 13 elsif superclass != Object and superclass.site 14 superclass.site.dup.freeze 15 end 16 end 16 17 17 18 def site=(site) … … 84 85 new(connection.get(element_path(scope, options)), options) 85 86 end 86 87 87 88 def create_site_uri_from(site) 88 returning site.is_a?(URI) ? site : URI.parse(site) do |uri| 89 def uri.<<(extra) 90 path << extra 91 end unless uri.respond_to?(:<<) 92 end 89 site.is_a?(URI) ? site.dup : URI.parse(site) 93 90 end 94 91 end trunk/activeresource/test/base_test.rb
r5717 r5767 44 44 end 45 45 46 def test_site_reader_uses_superclass_site_until_written 47 # Superclass is Object so returns nil. 48 assert_nil ActiveResource::Base.site 49 assert_nil Class.new(ActiveResource::Base).site 50 51 # Subclass uses superclass site. 52 actor = Class.new(Person) 53 assert_equal Person.site, actor.site 54 55 # Subclass returns frozen superclass copy. 56 assert !Person.site.frozen? 57 assert actor.site.frozen? 58 59 # Changing subclass site doesn't change superclass site. 60 actor.site = 'http://localhost:31337' 61 assert_not_equal Person.site, actor.site 62 63 # Changed subclass site is not frozen. 64 assert !actor.site.frozen? 65 66 # Changing superclass site doesn't overwrite subclass site. 67 Person.site = 'http://somewhere.else' 68 assert_not_equal Person.site, actor.site 69 70 # Changing superclass site after subclassing changes subclass site. 71 jester = Class.new(actor) 72 actor.site = 'http://nomad' 73 assert_equal actor.site, jester.site 74 assert jester.site.frozen? 75 end 46 76 47 77 def test_collection_name trunk/activeresource/test/fixtures/beast.rb
r5717 r5767 11 11 12 12 class Topic < BeastResource 13 s ite <<'/forums/:forum_id'13 self.site += '/forums/:forum_id' 14 14 end