Commit graph

513 commits

Author SHA1 Message Date
Will Leinweber d333133319 Adds suppport for ActiveModel::Dirty and ::AttributeMethods
* ActiveModel::Dirty
** Basic support for dirty tracking
** It does not bubble up any changes to casted models currently

* ActiveModel::AttributeMethods
** Attributes are now read and written through ActiveModel
** This also allows you to add your own attribute methods with
   prefix suffix and affix names. For more information check out
   ActiveModel::AttributeMethods::ClassMethods
2010-09-16 17:30:43 -05:00
Sam Lown 5c21de8586 Fixing find(blank) issue 2010-09-05 20:06:44 +02:00
Sam Lown 31770ba571 Merge branch 'master' of github.com:couchrest/couchrest_model 2010-09-05 19:18:37 +02:00
Will Leinweber c2fde42fa6 bugfix: allow CastedArrays to be assigned
(And be a bit more general about it)
2010-09-03 12:23:53 -05:00
Sam Lown fafbfff474 Ensuring update_attributes cannot be called in CastedModel as per issue #9 2010-08-24 19:27:35 +02:00
Sam Lown c32992c21b Merge branch 'master' of git://github.com/tapajos/couchrest_model
Conflicts:
	Rakefile
	couchrest_model.gemspec
	history.txt
	lib/couchrest_model.rb
	spec/couchrest/attribute_protection_spec.rb
2010-08-24 11:45:37 +02:00
Marcos Tapajós bb667459a8 Adding model generator 2010-08-23 20:29:34 -03:00
Will Leinweber 62f4f72cab Fixes Model.new(nil) with attribute protection. GH issue #8
Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-08-23 20:02:08 -03:00
Will Leinweber 9437678380 refactor #read_ and #write_attribute to behave the same when called with a missing property
Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-08-23 20:00:19 -03:00
Will Leinweber 49c9656fe3 Allow mixing of protected and accessible properties.
Any unspecified properties are now assumed to be protected by default

Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-08-23 19:59:25 -03:00
Sam Lown 51918548b1 Finalizing move to rspec 2.0.0 (rake wasn't working) 2010-08-18 20:00:03 +02:00
Sam Lown dad386d8c9 Fixing time parsing issue for times without zone 2010-08-18 19:36:01 +02:00
Will Leinweber 1a7154f5bf refactor #read_ and #write_attribute to behave the same when called with a missing property 2010-08-11 22:27:53 -05:00
Will Leinweber aac6b80d26 Allow mixing of protected and accessible properties.
Any unspecified properties are now assumed to be protected by default
2010-08-11 17:42:14 -05:00
Sam Lown ee31946e07 Merge branch 'master' of github.com:couchrest/couchrest_model into improve_associations 2010-08-11 17:36:02 +02:00
Sam Lown 796f7d9f7e Raising an error when adding an un-saved item to a collection 2010-08-04 11:54:02 +02:00
Marcos Tapajós 33657d9470 creating attachments accessor 2010-08-03 23:58:28 -03:00
Marcos Tapajós c7acbc07ec Fixing documentation and two describes 2010-08-03 23:09:05 -03:00
Marcos Tapajós 1a551b54eb Adding tests to some expected behaviors 2010-08-03 22:55:17 -03:00
Sam Lown efb07295f0 Fixing big problem with lack of database passed to collection proxy 2010-06-25 20:02:18 +02:00
Sam Lown c52f009270 Fixing typoo 2010-06-23 11:58:35 +02:00
Sam Lown 3d46db1104 Fixing proxy and view bug 2010-06-22 14:15:30 +02:00
Sam Lown fcbc0b08e5 Adding manual view support to uniqueness validation 2010-06-21 23:12:15 +02:00
Sam Lown 8337bab714 Fixing uniqueness proxy error + more in README 2010-06-21 22:37:13 +02:00
Sam Lown 08390e6709 Adding uniqueness validation support out of the box 2010-06-21 21:33:46 +02:00
Sam Lown b81d37fc02 Fixing association bug to avoid searching when foreign key is nil 2010-06-21 17:03:32 +02:00
Sam Lown 226fe3bf38 Fixing view deleting database option bug 2010-06-21 16:43:33 +02:00
Sam Lown 0c008d4bc7 Renaming support delete method so as not to conflict with ExtendedDocument 2010-06-21 15:10:42 +02:00
Sam Lown d138ebc05f Testing model name 2010-06-21 14:13:19 +02:00
Sam Lown 188fd0d4de Fixing ActiveModel special calls 2010-06-21 13:58:19 +02:00
Sam Lown c280b3a29b Renaming to CouchRest Model
Refactored basic directory structure.
Moved to ActiveSupport for Validations and Callbacks.
Cleaned up older code, and removed support for text property types.
2010-06-20 22:01:11 +02:00
Sam Lown 9f1eea8d32 Fixes and testing for class proxy 2010-06-18 21:11:02 +02:00
Sam Lown 061c7a0154 Moving tests for class proxy and fixing issue with finding first 2010-06-18 20:07:34 +02:00
Sam Lown 5580caf346 Adding missing methods to proxy, proxy needs tests 2010-06-18 19:00:20 +02:00
Sam Lown 1b89f1e1df Array Properties accept hash with ordered keys and raise error for anything else 2010-06-18 01:24:49 +02:00
Sam Lown dd55466764 adding support for collection_of association 2010-06-17 15:02:33 +02:00
Sam Lown fa0ab968a8 Adding associations to casted model 2010-06-17 02:43:17 +02:00
Sam Lown 144fff028a Raising version to match history 2010-06-17 02:39:55 +02:00
Sam Lown a7a6b2f0ac adding initial support for belongs_to associations 2010-06-17 02:39:09 +02:00
Sam Lown e638db63c2 Adding more tests for new property class layout 2010-06-16 22:02:12 +02:00
Sam Lown 2b0694e1e2 Merged 2010-06-16 21:04:53 +02:00
Sam Lown 19cd7ae41e trying to refine design doc change detection 2010-06-15 02:10:14 +02:00
Sam Lown d0f8b0be68 Ensuring that views with two properties will quick find 2010-06-15 01:35:14 +02:00
Sam Lown 5dfd18cd71 Adding support for find_by quick view access searches 2010-06-15 01:15:30 +02:00
Sam Lown b5d38e3ebd Updating versions for beta release 2010-06-11 02:02:22 +02:00
Sam Lown b5d03d0be7 Check for nil paths on MIME check 2010-06-08 00:17:43 +02:00
Sam Lown 406c2e6a01 Altering history 2010-06-07 14:04:43 +02:00
Sam Lown 7b40042087 Adding alias to get for find 2010-06-07 13:56:39 +02:00
Sam Lown 5b048c2280 More trueness testing and removing string comparison for booleans 2010-05-22 00:17:33 +02:00
Sam Lown 3fa8c4b215 Fixing #property? support for boolean and TrueClass 2010-05-21 23:00:19 +02:00
Sam Lown 81168bdd79 Correcting old HTTP abstract issue 2010-05-20 20:49:53 +02:00
Sam Lown 89c45ebb87 Adding support for setting types with hash 2010-05-13 00:17:30 +02:00
Sam Lown b0d2258bd3 Improving handling of mime types, instanciation of documents from the
database, and more dependencies on active_support.
2010-05-12 23:43:17 +02:00
Sam Lown 303f0cd1cf Adding validation by default 2010-05-11 16:27:06 +02:00
Sam Lown 11a56e6f48 Moving initial loading parts 2010-05-11 15:37:50 +02:00
Sam Lown d239d037fb Added base file for better automated library loading support 2010-05-11 00:15:40 +02:00
Sam Lown bd481151d9 Removing monkeypatches to avoid conflict with CouchRest 2010-05-10 22:28:19 +02:00
Sam Lown 3894579304 Moving to own repo without the base couchrest 2010-05-10 21:19:24 +02:00
Sam Lown e6604a0990 Simplifying design docs 2010-04-16 02:51:59 +02:00
Sam Lown 0e282f0727 Disabling reset_design_doc to avoid conflict errors 2010-04-14 20:47:26 +00:00
Sam Lown ab6d833397 Adding support for only resfreshing design document if really required 2010-04-07 21:00:51 +00:00
Sam Lown 5fd1c3903b Making design doc thread safe for checking status of design doc 2010-04-06 17:51:17 +00:00
Sam Lown 77cb8160c7 Fixing support for specifying database in collections 2010-04-05 22:22:56 +00:00
Sam Lown f196aacecc Simplifying and moving CastedArray into own file 2010-03-31 08:25:33 +00:00
Sam Lown 1b019fa3fe Merge branch 'master' of git://github.com/couchrest/couchrest 2010-03-30 20:57:22 +00:00
Sam Lown dd3df8fb69 Adding support for defining cast_as on properties as a Class 2010-03-30 20:50:47 +00:00
Sam Lown 64d68ecc1a Using Classes instead of strings for typecasting and removing redundant comparisons 2010-03-30 19:06:24 +00:00
John Wood b26f90d2ff Added support for couchdb-lucene.
Added a search method to CouchRest:Database to search the documents in a
given database.  Added support for a :search parameter to Collection's
paginated_each method, which will allow you to paginate over a set of
search results.

This code has been brought to you by Dave Farkas (sakrafd) and
Arnaud Berthomier (oz).
2010-03-15 19:20:07 -05:00
John Wood 3066458eed Provide a description of the timeout error 2010-03-15 19:16:40 -05:00
Will Leinweber ef6739774b Merge remote branch 'samlown/master' into official-master 2010-03-15 18:50:20 -05:00
Sam Lown e922b81ccc Using database method call instead of using variable 2010-03-13 15:03:38 +00:00
Sam Lown de0878c84b Adding fix for ruby1.9.1 when Array casted property is not provided an array 2010-03-11 10:49:54 +00:00
sauy7 3c314e14d0 Patching in fixes for missing uri scheme in CouchRest.parse and adding support for continuous replication 2010-03-10 18:49:31 -06:00
Sam Lown c906be229f Small fix 2010-03-05 14:40:51 +00:00
Sam Lown ca23e186f4 Added ActiveRecord like after_initialize callback to ExtendedDocument 2010-03-03 20:01:27 +00:00
Sam Lown d992f44365 Refactoring typecast so that it is less invasive and uses latest code base 2010-03-03 02:18:32 +00:00
Sam Lown 88f42d8fe0 Merge branch 'master' of git://github.com/sauy7/couchrest 2010-03-03 00:18:32 +00:00
Pierre Larochelle cc9ed83cd3 Added an update_doc method to database to handle conflicts during atomic updates.
Also added appropriate specs

Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-02-27 19:05:55 -03:00
Nolan Darilek 62db7853c3 Updated time regexp.
Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-02-27 18:47:05 -03:00
Peter Gumeson 6d571a7d81 Class proxy was not setting database on result sets 2010-02-27 18:42:32 -03:00
Marcos Tapajós 17dac85a02 Changing CouchRest::ExtendedDocument to allow chaining the inherit class callback 2010-02-26 21:57:42 -03:00
Noah Zoschke a856e98a6a remove double CGI escape when PUTting an attachment
Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-02-26 21:00:45 -03:00
Will Leinweber d41c7c96da BUGFIX: attribute protection
Fixes bug where documents recreated from the database were
being stripped of their protected attributes when instantiated

Signed-off-by: Marcos Tapajos <tapajos@Tapajos-MacBook.local>
2010-02-26 17:18:10 -06:00
Tim Heighes 151ea5566d Fixes for 4 of the original 10 failing specs 2010-02-26 00:25:51 +01:00
Julien Kirch 38dad4bc78 added ascending compatability with restclient-1.4.0
Signed-off-by: Will Leinweber <will@bitfission.com>
2010-02-23 16:21:00 -06:00
Will Leinweber 15ea10eb9c attempt to merge wildchild/type_cast, still failing specs 2010-02-17 16:35:42 -06:00
Damien Mathieu ec51c34f7d recreating a non-existant database shouldn't raise any exception (and we make sure of it)
Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-02-03 14:09:56 -02:00
Johannes J. Schmidt a7ee95b33c fixed extended attachment encoding part 2
encoding was done twice, once while setting attachment
and once while saving the document.

Also the attachment was decoded while retreaving, but this is done by
CouchDB itself automatically, as described in
http://wiki.apache.org/couchdb/HTTP_Document_API#line-463.

Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-01-29 22:18:55 -02:00
Johannes J. Schmidt dad7e349a7 fixed set_attachment_attr
works with CouchDB 0.10.0

* use "content_type" instead of "content-type"
* do not encode attachment

Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-01-29 22:18:40 -02:00
Sam Lown iMac 08cf9e59b6 Fixing incorrectly generated document URIs with testing
Signed-off-by: Marcos Tapajós <tapajos@gmail.com>
2010-01-03 21:42:22 -02:00
Igal Koshevoy d0d5eec199 Added CouchRest::Database#bulk_save_doc and #batch_save_doc as human-friendlier wrappers around #save_doc. 2009-11-15 23:15:20 -08:00
Igal Koshevoy 62ea68df63 Improved CouchRest::Database#save_doc, added "batch" mode to significantly speed up saves at cost of lower durability gurantees. 2009-11-15 23:14:09 -08:00
deepj b8bda3bb02 Initialization of ExtendentDocument model shouldn't failed on a nil value in argument
Signed-off-by: Tapajós <tapajos@gmail.com>
2009-11-10 07:52:33 -02:00
Tapajós ca2faa81fe Using |property_name, property_value| instead of |key, value|. 2009-10-31 10:49:26 -02:00
Tapajós 1315d65681 Using |attribute_name, attribute_value| instead of |k,v|. 2009-10-31 10:42:36 -02:00
Will Leinweber b5d09afef5 Adds attribute protection to properties
Public Facing
   * through either :protected or :accessible8 flags
   * prevents protected attributes from being set in mass assignment
 Developer Facing
   * refactors #initialize and #update_attribute_without_saving
       to use same private methods to set attributes on ExtendedDocument
   * adds new mixin to do protection

Signed-off-by: Tapajós <tapajos@gmail.com>
2009-10-31 09:56:58 -02:00
Tapajós 58d621d399 Changing some validations to be compatible with activemodel. 2009-10-31 09:54:16 -02:00
Tapajós d4010ad76e I think that init_method is more semantic that send. 2009-10-31 09:53:50 -02:00
Julien Sanchez b5d6baaf11 Save on Document & ExtendedDocument crashed if bulk
- document#save expects to receive {"ok" => true} even with bulk mode
- ExtendedDocument#save_without_callbacks reverted to previous code
  (expecting result["ok"] as in create_without_callbacks)
2009-10-18 01:59:31 +08:00
Julien Sanchez 1c43a8f3d3 Streamer fixes
* url must be quoted inside the curl command otherwise '&' between
  params are interpreted by shells
* View url format updated
* Streamer yielded the last row returned by curl ("}]") as nil
* Specs
2009-10-18 01:59:30 +08:00
Tapajós 2f2c507582 Merge remote branch 'tapajos/master'
Conflicts:
	README.md
	lib/couchrest/mixins/properties.rb
	spec/couchrest/core/database_spec.rb
	spec/couchrest/more/extended_doc_spec.rb
2009-09-20 22:52:39 -03:00
Tapajós 3c2ebb022d Merge remote branch 'remotes/old/master'
Conflicts:
	README.md
	couchrest.gemspec
	lib/couchrest.rb
	lib/couchrest/mixins/properties.rb
2009-09-03 23:10:06 -03:00
Tapajós 8db522a116 Fix issue #1. 2009-09-03 00:27:04 -03:00
Tapajós bc6df2f5ca Adding support to :cast_as => 'Date'. 2009-09-02 23:55:55 -03:00
Matt Aimonetti ccdf9d779a removed the Database class deprecation notices 2009-08-24 17:32:34 -07:00
Matt Aimonetti a3cc649616 last touch up before merging all the 0.4 changes 2009-08-24 17:12:13 -07:00
Matt Aimonetti 64a51b73ae merged Peter's stuff 2009-08-24 16:57:58 -07:00
John Wood feb09f9764 Removed amount_pages calculation for the pagination collection, since it cannot be reliably calculated without a view 2009-08-20 12:29:02 -07:00
John Wood b0dca70b02 Fixed a bug in the pagination code that caused it to paginate over records outside of the scope of the view parameters. 2009-08-20 12:28:28 -07:00
Luke Burton 2057e59777 To address http://github.com/couchrest/couchrest/issues/#issue/2, we simply remove the check on the value returned by database.save_doc. Errors from RestClient or CouchDB itself will be propagated as exceptions, which an upstream client should handle for themselves. 2009-08-20 12:25:12 -07:00
Peter Gumeson 44d02c4b32 Rails logger is no longer needed. 2009-08-16 21:19:45 -07:00
Peter Gumeson 1938270d65 Merge commit 'mattetti/master' 2009-08-12 16:48:13 -07:00
Chris Anderson 212bc79f3e fix content_type handling for attachments 2009-08-06 13:04:17 -07:00
Matt Aimonetti 889a923dbf Added #amount_pages to a paginated result array 2009-08-03 12:19:07 -07:00
Matt Aimonetti a17df45fc3 made all the specs run on 1.9.2, yay :) 2009-08-01 14:21:18 -07:00
John Wood d1d8da513c Added code to generate a property? method for properties casted as :boolean
Signed-off-by: Matt Aimonetti <mattaimonetti@gmail.com>
2009-07-31 08:23:45 +08:00
Matt Aimonetti 5270fde0fa added an option to force the deletion of a attachment 2009-07-29 20:12:35 -07:00
Matt Aimonetti 9141669df1 extracted the rest API to its own module 2009-07-29 18:32:34 -07:00
Matt Aimonetti ac3d0a988f added a Rack logger middleware 2009-07-27 00:14:38 -07:00
tc 41eeedd49b removed {:reduce => false} in #all method to make it 0.10 comp. 2009-07-26 23:33:15 -07:00
Matt Aimonetti 5cd2eaf18a made get not raise an exception anymore, use get! instead if you need to raise exceptions.
* ExtendedDocument.get doesn't raise an exception anymore. If no documents are found nil is returned.
* ExtendedDocument.get! works the say #get used to work and will raise an exception if a document isn't found.
2009-07-22 16:05:55 -07:00
Matt Aimonetti 87d246d30e modified the 'all' view to emit doc ids so we can do Model.all(:keys => [1,2]) 2009-07-22 15:45:18 -07:00
Peter Wagenet 153ce54b1e Added ValidationErrors#count in order to play nicely with Rails 2009-07-21 23:26:24 -07:00
Daniel Kirsch 4d4972f0de fixed class proxy design doc wreidness 2009-07-21 23:38:00 +02:00
Daniel Kirsch 3ee810010d forgot to add database to count query 2009-07-21 14:36:09 +02:00
Daniel Kirsch be7cd7442b added count to proxy 2009-07-21 14:14:58 +02:00
wildchild e4ad16b77c Use Time#mktime_with_offset 2009-07-21 09:31:18 +06:00
Peter Gumeson d85155040a Merge commit 'mattetti/master' 2009-07-20 16:21:10 -07:00
wildchild f65d8bbbcc Should cast casted attribute on direct assignment 2009-07-21 05:01:34 +06:00
Matt Aimonetti 413a7602e8 added amount_pages to a paginated collection 2009-07-20 15:52:14 -07:00
wildchild e27135cb1e Fixed required_field_validator to behave correctly with boolean fields 2009-07-21 03:18:07 +06:00
wildchild 16d9e819d7 Added typecasting of properties 2009-07-21 03:17:27 +06:00
Peter Gumeson e87c543b0f reunited some __FILE__, __LINE__ with their + 1 2009-07-19 01:23:51 -07:00
Peter Gumeson 1e44302d1a Merge commit 'mattetti/master' 2009-07-19 00:01:07 -07:00
Peter Gumeson 7bae8acc36 Merge branch 'new_callbacks' 2009-07-18 23:37:16 -07:00
Arnaud Berthomier 142989a80d Dont die on empty results
Signed-off-by: Matt Aimonetti <mattaimonetti@gmail.com>
2009-07-18 01:44:42 +08:00
Matt Aimonetti 5140899041 Added ExtendedDocument.create({}) and #create!({}) so you don't have to do Model.new.create 2009-07-17 00:12:33 -07:00
Matt Aimonetti 964526193b Optimized Model.count to run about 3x faster 2009-07-16 20:38:15 -07:00
Matt Aimonetti 8f8b5dc568 added support to cast Float values 2009-07-16 19:52:53 -07:00
Matt Aimonetti 9a167cc27d fixed the specs 2009-07-14 23:48:06 -07:00
Matt Aimonetti b2a29d9eb7 started extracting the http layer 2009-07-14 01:43:40 -07:00
John Wood 42482a626a Changed pagination technique used by Collection
Modified Collection to use the pagination technique described at
http://wiki.apache.org/couchdb/How_to_page_through_results where possible.
2009-07-08 09:45:08 -07:00
John Wood a0d6204b42 Added some more doc for Collection, and cleaned up how provides_collection works. 2009-07-08 09:43:31 -07:00
John Wood a9a53b8729 Added more tests for Collection module, cleaned up the code as well. 2009-07-08 09:40:47 -07:00
John Wood 5963f1d4f8 Better integration with couchrest views. More tests, doc, and some cleanup still needed. 2009-07-08 09:39:30 -07:00
John Wood cf76466795 Added Collection mixin.
The Collection mixin adds support for executing a view, and passing
back the view results as an Array of the given ExtendedDocument instance.
It also supports will_paginate like pagination methods (paginate, paginated_each),
which will only fetch the given set of documents from CouchDB.
2009-07-08 09:38:26 -07:00
Seth Falcon 3e2b3ece46 Timeout::TimeoutError does not exist, use Timeout::Error instead
Also added a require for 'timeout' that contains this code.  Easy to get
confused as there is an alias TimeoutError:

irb(main):001:0> require 'timeout'
=> true
irb(main):002:0> TimeoutError
=> Timeout::Error
irb(main):003:0> Timeout::Error
=> Timeout::Error
irb(main):004:0> Timeout::TimeoutError
NameError: uninitialized constant Timeout::TimeoutError
        from (irb):4
2009-07-08 09:32:43 -07:00
Matt Aimonetti 9a89db44f1 fixed a commit that got reverted by accident 2009-07-08 09:28:15 -07:00
Rob Kaufman baabe40674 Fixed validates_is_numeric when dealing with an actual float 2009-07-08 09:17:07 -07:00
Matt Aimonetti 82090cb780 modified the timestamp parsing to run faster, making a big difference when loading huge datasets 2009-07-07 23:55:20 -07:00