Commit Graph

160 Commits

Author SHA1 Message Date
Chris Griego
a962bfe472 Optimize ActiveResource::Base.new(attributes)
* Add performance benchmark similar to ActiveRecord
* Lazily find_or_create_resource_for_collection to not incur the overhead for empty arrays and arrays of primatives
* #duplicable? is faster than inline rescues when the object is not duplicable
* Don't constantly raise and handle NameError, raising is expensive
* Even when a resource is nested inside a module, always look inside the class first for the resource definition so we don't overwrite classes all the time

Before:                                     user     system      total        real
Model.new (instantiation)               0.120000   0.000000   0.120000 (  0.119961)
Nested::Model.new (instantiation)       0.150000   0.010000   0.160000 (  0.151183)
Model.new (setting attributes)         28.540000   0.680000  29.220000 ( 29.271775)
Nested::Model.new (setting attributes) 29.740000   0.580000  30.320000 ( 30.486210)

After:                                        user     system      total        real
Model.new (instantiation)                 0.120000   0.000000   0.120000 (  0.121249)
Nested::Model.new (instantiation)         0.150000   0.010000   0.160000 (  0.152429)
Model.new (setting attributes)           11.480000   0.170000  11.650000 ( 11.656163)
Nested::Model.new (setting attributes)   11.510000   0.210000  11.720000 ( 11.724249)
2011-05-01 23:13:08 -05:00
R.T. Lechow
48841dd6ae Active Resource typos. 2011-03-05 11:56:34 +01:00
Akira Matsuda
78ecb2485e make the example code a bit more accurate 2011-01-29 09:02:54 +09:00
Akira Matsuda
8f24471989 Fix indentation 2011-01-29 08:15:31 +09:00
Josh Kalderimis
d7db6a8873 class inheritable attributes is used no more! all internal use of class inheritable has been changed to class_attribute. class inheritable attributes has been deprecated.
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-11-20 19:40:29 +01:00
Emilio Tagua
71acc2737a Move uri parser to AS as URI.parser method to reuse it in AP and ARes. 2010-09-28 11:38:35 +08:00
Matthijs Langenberg
67a838574b Fix broken module namespacing in ActiveResource with Ruby 1.9 [#5699 state:resolved]
Following namespace use case was broken with Ruby 1.9:

  class Author < ActiveRecord::Base
    ...
  end

  module Api
    class Book < ActiveResouce::Base
    end
  end

Let's say XML contains <book><author><name>John</name></author>....

  Api::Book.first.author.class.to_s #=>
    Ruby 1.8.7: "Api::Book::Author" (namespaced, correct),
    Ruby 1.9: "Author" (toplevel, broken)

Signed-off-by: José Valim <jose.valim@gmail.com>
2010-09-27 23:10:55 +02:00
Gaston Ramos
e405dbcb48 - update exceptions documentation 2010-09-27 15:25:39 -03:00
Gaston Ramos
823a8e6e66 - check prefix options in collection_path 2010-09-27 15:25:33 -03:00
Gaston Ramos
30fb3638cc - refactoring, move prefix_options check to a custom method 2010-09-27 15:25:23 -03:00
Gaston Ramos
a71e07d61e - elmenth_path raise an ActiveResource::MissingPrefixParam exception when prefix_options does not has all required prefix_options ex: class StreetAddress < ActiveResource::Base self.site = "http://37s.sunrise.i:3000/people/:person_id/" end
StreetAddress.element_path(1)
    # => ActiveResource::MissingPrefixParam
2010-09-27 15:25:16 -03:00
Jacques Crocker
51f1f550da Allow per Resource format settings
Previously, ActiveResource was using the connection level formatter for get requests. This made it impossible to use custom formatters per resource.

Additionally this commit makes the Connection request methods more consistent. It always returns a Response. The base will then decode it each the response using its format setting.

Merging this commit will allow users to add custom formatters on a per Resource basis. This enables handling pagination responses from the server side, a very common use case that was previously impossible without monkeypatching XmlFormat.

Signed-off-by: José Valim <jose.valim@gmail.com>
2010-09-25 13:54:09 +02:00
Jacques Crocker
ee5ef67c44 Allow ActiveResource to work with non-generated ids [#5660 state:resolved]
This commit updates new? so that it knows whether or not the record was actually new or not, and doesn't rely solely on the presence of id. This enables the ability to set a custom primary_key that is not autogenerated by the server.

Signed-off-by: José Valim <jose.valim@gmail.com>
2010-09-25 11:15:40 +02:00
Emilio Tagua
0876f39088 No need to use inject here.
Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
2010-09-22 18:08:03 -03:00
Thiago Pradi
3c9bf6e1dc Exception handling more readable
[#5601 state:committed]

Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
2010-09-19 12:18:51 -07:00
Mike Abner
154081f0f7 make sure a Content-Length header exists and that the response.body is not nil before trying to call methods on it. Rack does not allow HTTP 204 responses to have a content-length header set. [#5038 state:resolved] 2010-09-18 20:49:45 +02:00
Jaime Iniesta
5430f5bd06 lifecycle should be two words, life cycle 2010-08-26 14:23:58 +02:00
Joost Baaij
20333be581 fix broken relative links [#5415 state:committed]
Signed-off-by: Xavier Noria <fxn@hashref.com>
2010-08-24 16:20:32 +02:00
Josef Reidinger
59693c4c49 fix loading of different elements in array then int and string [#5036 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-08-02 17:06:09 +02:00
Josef Reidinger
0e969bdaf8 fix escaping id and parameters in path [#5137 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-07-26 16:59:47 +02:00
Santiago Pastorino
b0b9bf3204 Object#returning removed
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-07-25 23:30:27 +02:00
José Valim
6788db824a Move Rails::LogSubscriber to ActiveSupport::LogSubscriber, allowing frameworks like ActiveRecord and ActiveResource to log outsude Rails::Application [#4816 state:resolved] 2010-06-24 13:23:43 +02:00
Evgeniy Dolzhenko
ef404c771d Fix a bunch of minor spelling mistakes 2010-06-15 12:04:22 +04:00
Ryan Bigg
f453bb6d8a There is no type="array" returned with errors. [#3691:resolved] 2010-06-12 12:13:21 +10:00
Evgeniy Dolzhenko
ccf9577aee Fix a bunch of minor spelling mistakes 2010-06-11 14:15:34 +04:00
Elomar França
7bd30b9585 Adding to_key to ActiveResource objects using ActiveModel::Conversion [#4685 state:resolved]
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-05-26 15:57:27 +02:00
Santiago Pastorino
aacf2581cd refactor evals and adds some __FILE__ and __LINE__
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-05-20 15:18:57 +02:00
Santiago Pastorino
7ffe76046a ActiveResource shouldn't consider modules in the path
[#4529 state:committed]

Signed-off-by: José Valim <jose.valim@gmail.com>
2010-05-15 09:38:32 +02:00
Santiago Pastorino
903637f5f0 Fixes to_json and to_xml for ActiveResource
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-05-12 21:02:31 +02:00
Santiago Pastorino
bea3c26833 Make ActiveResource serialize XML correctly when element_name is set.
[#4529]

Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2010-05-12 09:31:36 -07:00
Santiago Pastorino
7cd1d37a51 Reuse Active Model serialization in Active Resource. [#2584 state:committed]
Signed-off-by: Jeremy Kemper <jeremy@bitsweat.net>
2010-04-26 15:00:26 -07:00
Jeremy Kemper
2a6e0f34ad Revert "create option to include_root_in_json for ActiveResource [#2584 state:committed]"
This reverts commits 72f89b5d97, 137d8e0b2f.

Should reuse Active Model.

[#2584 state:incomplete]
2010-04-25 21:04:19 -07:00
Santiago Pastorino
13e00ce606 fix stack trace lines on class_eval
Signed-off-by: José Valim <jose.valim@gmail.com>
2010-04-09 21:28:49 +02:00
Santiago Pastorino
72f89b5d97 create option to include_root_in_json for ActiveResource [#2584 state:committed] 2010-04-05 17:47:02 -03:00
Xavier Noria
105f9b8154 adds missing requires for Object#duplicable? 2010-03-28 13:26:13 +02:00
Gaël Deest
753304bd11 Makes ActiveResource work with form_for: - Adds a build' method that can be used instead of new' to load a new, unsaved resource from the remote site, filled with the correct default values. - Adds a persisted?' method that simply returns the opposite value than the new?' method. [#4222 state:resolved] [#4155 state:resolved]
Signed-off-by: wycats <wycats@gmail.com>
2010-03-27 01:40:46 -07:00
Pratik Naik
cda36a0731 Merge remote branch 'mainstream/master' 2010-01-04 03:24:39 +05:30
Joshua Peek
22752ec27c All ARes modules are safe to defer 2009-12-22 17:36:29 -06:00
Joshua Peek
2e9c775998 Use instance_eval for schema block 2009-12-20 19:04:53 -06:00
Joshua Peek
c0ad3f6cc6 Rename define_schema => schema 2009-12-20 19:04:53 -06:00
Joshua Peek
669c5eec44 Rename SchemaDefinition => Schema 2009-12-20 19:04:53 -06:00
Taryn East
fc9b3e4a45 define_schema for Active Resource
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-12-20 19:04:53 -06:00
Pratik Naik
5446d5cb05 Merge remote branch 'mainstream/master'
Conflicts:
	activesupport/lib/active_support/core_ext/hash/conversions.rb
2009-11-17 22:47:23 +00:00
Jeremy Kemper
76b2d3e337 Ruby 1.9.2: URI.parse and .decode are deprecated 2009-11-09 05:07:58 -08:00
Jeremy Kemper
6d808cf494 Remove reliance on string access core extension 2009-11-09 04:59:26 -08:00
Jeremy Kemper
b540eca588 Consolidate Object#to_param and #to_query core extensions 2009-11-02 17:50:12 -08:00
pivotal
945d999aad Digest auth option for ActiveResource.
Signed-off-by: Michael Koziarski <michael@koziarski.com>
2009-10-15 10:37:04 +13:00
Pratik Naik
66ee2654ff Merge commit 'mainstream/master' 2009-10-10 17:15:11 +01:00
Joshua Peek
89630a7c2c Cleanup whitespace introduced in 8377646 and f4f6888 2009-10-02 10:19:30 -05:00
Taryn East
8377646d68 add indifferent access to the attributes
Signed-off-by: Joshua Peek <josh@joshpeek.com>
2009-10-02 10:13:40 -05:00