Overview

merb_relaxdb is a merb plugin that provides integration with CouchDB via the RelaxDB gem. Version numbers indicate compatibility with Merb. Revision numbers are excluded e.g. merb_relaxdb 1.0 should be compatible with Merb 1.0.x

The current release includes integration with merb-auth, but this should not yet be considered stable. A sample integration file is included below.

merb_relaxdb expects your merb app to augment the standard layout as described in the following tree. couchdb.yml is mandatory. Reference data, sample data and views are optional. merb-gen model my_model will create a sample couchdb.yml.

To use merb_relaxdb, list dependency "merb_relaxdb", "1.0" in config/dependencies.rb and use_orm :relaxdb in config/init.rb

For more details on using RelaxDB, see the RelaxDB wiki

</p>
my_merb_app $ tree
.
|— Rakefile
|— app
|— autotest
|— config
|   |— couchdb.yml
|— couchdb
|   |— data
|   |   |— reference
|   |   |   `— reference_data.rb
|   |   `— sample
|   |       `— sample_data.rb
|   `— views
|       `— views.js
|— lib
|— log
|— public
|— scratch
`— spec

<p>

Sample merb/merb-auth/setup.rb


begin
  Merb::Authentication.user_class = User 
  
  # Mixin the salted user mixin  
  require 'merb-auth-more/mixins/salted_user'
  require 'merb_relaxdb/rdb_salted_user'
  
  Merb::Authentication.user_class.class_eval{ include Merb::Authentication::Mixins::SaltedUser }
      
  # Setup the session serialization
  class Merb::Authentication

    def fetch_user(session_user_id)
      RelaxDB.load(session_user_id) rescue nil
    end

    def store_user(user)
      user.nil? ? user : user._id
    end
  end
  
rescue => e
  Merb.logger.error <<-TEXT
  
    You need to setup some kind of user class with merb-auth.  
    Merb::Authentication.user_class = User
    
    If you want to fully customize your authentication you should use merb-core directly.  
    
    See lib/authentication/setup.rb and strategies.rb to customize your setup

    TEXT
end