summaryrefslogtreecommitdiff
path: root/vendor/gems/couchrest_session_store/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/gems/couchrest_session_store/README.md')
-rw-r--r--vendor/gems/couchrest_session_store/README.md133
1 files changed, 0 insertions, 133 deletions
diff --git a/vendor/gems/couchrest_session_store/README.md b/vendor/gems/couchrest_session_store/README.md
deleted file mode 100644
index 60e692e..0000000
--- a/vendor/gems/couchrest_session_store/README.md
+++ /dev/null
@@ -1,133 +0,0 @@
-# CouchRest::Session::Store #
-
-A simple session store based on CouchRest Model.
-
-## Setup ##
-
-`CouchRest::Session::Store` will automatically pick up the config/couch.yml
-file used by CouchRest Model.
-
-Cleaning up sessions requires a design document in the sessions database that
-enables querying by expiry. See `design/Session.json` for an example. This
-design document is loaded for tests, but you will need to load it on your own
-in a production environment. For example:
-
- curl -X PUT username:password@localhost:5984/couchrest_sessions/_design/Session --data @design/Session.json
-
-## Options ##
-
-* marshal_data: (_defaults true_) - if set to false session data will be stored
- directly in the couch document. Otherwise it's marshalled and base64 encoded
- to enable restoring ruby data structures.
-* database: database to use combined with config prefix and suffix
-* expire_after: lifetime of a session in seconds.
-
-## Dynamic Databases ##
-
-This gem also includes the module `CouchRest::Model::DatabaseMethod`, which
-allow a Model to dynamically choose what database to use.
-
-An example of specifying database dynamically:
-
- class Token < CouchRest::Model::Base
- include CouchRest::Model::DatabaseMethod
-
- use_database_method :database_name
-
- def self.database_name
- time = Time.now.utc
- "tokens_#{time.year}_#{time.month}"
- end
- end
-
-A couple notes:
-
-Once you include `CouchRest::Model::DatabaseMethod`, the database is no longer
-automatically created. In this example, you would need to run
-`Token.database.create!` or `Token.database!` in order to create the database.
-
-The symbol passed to `database_method` must match the name of a class method,
-but if there is also an instance method with the same name then this instance
-method will be called when appropriate. To state the obvious, tread lightly:
-there be dragons when generating database names that depend on properties of
-the instance.
-
-## Database Rotation ##
-
-The module `CouchRest::Model::Rotation` can be included in a Model in
-order to use dynamic databases to perform database rotation.
-
-CouchDB is not good for ephemeral data because old documents are never really
-deleted: when you deleted a document, it just appends a new revision. The bulk
-of the old data is not stored, but it does store a record for each doc id and
-revision id for the document. In the case of ephemeral data, like tokens,
-sessions, or statistics, this will quickly bloat the database with a ton of
-useless deleted documents. The proper solution is to rotate the databases:
-create a new one regularly and delete the old one entirely. This will allow
-you to recover the storage space.
-
-A better solution might be to just use a different database for all
-ephemeral data, like MariaDB or Redis. But, if you really want to use CouchDB, this
-is how you can do it.
-
-An example of specifying database rotation:
-
- class Token < CouchRest::Model::Base
- include CouchRest::Model::Rotation
-
- rotate_database 'tokens', :every => 30.days
- end
-
-Then, in a task triggered by a cron job:
-
- CouchRest::Model::Base.configure do |conf|
- conf.environment = Rails.env
- conf.connection_config_file = File.join(Rails.root, 'config', 'couchdb.admin.yml')
- end
- Token.rotate_database_now(:window => 1.day)
-
-Or perhaps:
-
- Rails.application.eager_load!
- CouchRest::Model::Rotation.descendants.each do |model|
- model.rotate_database_now
- end
-
-The `:window` argument to `rotate_database_now` specifies how far in advance we
-should create the new database (default 1.day). For ideal behavior, this value
-should be GREATER than or equal to the frequency with which the cron job is
-run. For example, if the cron job is run every hour, the argument can be
-`1.hour`, `2.hours`, `1.day`, but not `20.minutes`.
-
-The method `rotate_database_now` will do nothing if the database has already
-been rotated. Otherwise, as needed, it will create the new database, create
-the design documents, set up replication between the old and new databases,
-and delete the old database (once it is not used anymore).
-
-These actions will require admin access, so if your application normally runs
-without admin rights you will need specify a different configuration for
-CouchRest::Model before `rotate_database_now` is called.
-
-Known issues:
-
-* If you change the rotation period, there will be a break in the rotation
- (old documents will not get replicated to the new rotated db) and the old db
- will not get automatically deleted.
-
-* Calling `Model.database.delete!` will not necessarily remove all the
- relevant databases because of the way prior and future databases are kept
- for the 'window' period.
-
-## Changes ##
-
-0.3.0
-
-* Added support for dynamic and rotating databases.
-
-0.2.4
-
-* Do not crash if can't connect to CouchDB
-
-0.2.3
-
-* Better retry and conflict catching.d \ No newline at end of file