/active-direct

ActiveDirect is a server-side implementation of Ext.Direct using Rack Middleware.

Primary LanguageRubyMIT LicenseMIT

ActiveDirect is a server-side implementation of Ext.Direct Spec (http://www.extjs.com/products/extjs/direct.php
) using Rack Middleware.

Introduction: http://bit.ly/3LkYpB

Features : 
  12 CRUD related methods directable by default 
  Custom methods can be added using declarations. 
  Form and Form upload handler support 


Install : script/plugin install git@github.com:stonegao/active-direct.git

Configuration : 
*  Middleware configurations (environment.rb) : 
   config.middleware.use 'ActiveDirect::Router', '/direct_router'
   config.middleware.use 'ActiveDirect::Api', '/direct_api', '/direct_router’

* In your Html files : 
  <script type="text/javascript" src=”/javascripts/ext/adapter/ext/ext-base.js"></script>
  <script type=“text/javascript” src=”/javascripts/ext/ext-all-debug.js"></script>
  <script type=“text/javascript” src=”/direct_api"></script>
 
* Add rpc provider (in you javascript) : 
  Ext.Direct.addProvider(REMOTING_API);

* Model configurations 

class Category < ActiveRecord::Base
    acts_as_direct  :root_nodes => 0, :create_new_cat => {:len => 1, :formHandler => true}

    def root_nodes

    end 
    def create_new_cat(params) 

    end
end 

  

Examples ( After config correctly, you can write the following code in Javascript)

  App.models.Category.create( { name : ‘ruby’ }  )
  App.models.Category.update(2,  { name : ‘ruby books’ } )
  App.models.Category.update_all({ name : ‘ruby books’ },  “ name LIKE ‘%ruby%’ ” )
  App.models.Category.all()
  App.models.Category.find( 2 )
  App.models.Category.find_every( { conditions : “name LIKE ‘%java%’ “ } )
  App.models.Category.exists( [“ name LIKE ? “,  ‘%java%’ ] )
  App.models.Category.first()
  App.models.Category.last()
  App.models.Category.count()
  App.models.Category.delete( 2 )
  App.models.Category.delete_all( “ name LIKE  ‘%java%’  “  )


To Do : 
  Add more tests.

Stone Gao (stones.gao at gmail.com), released under the MIT license