doc/manual.rdoc in carioca-0.1 vs doc/manual.rdoc in carioca-1.0
- old
+ new
@@ -1,12 +1,12 @@
= Carioca
== Content
Author:: Romain GEORGES <romain@ultragreen.net>
-Version:: 1.2
-WWW:: http://www.ultragreen.net/projects/methodic
+Version:: 1.0
+WWW:: http://www.ultragreen.net/projects/carioca
== Description
CARIOCA is Configuration Agent and Registry with Inversion Of Control for your Applications
Carioca provide a full IoC light Container for designing your applications
@@ -23,12 +23,201 @@
# gem ins carioca
== Implementation
* [Carioca]
+* [Carioca::Services]
+* [Carioca:Services::Registry]
+== Utilisation
-== Example
+Carioca may be used to create Ruby applications, based on a service registry
+Carioca come with somes builtin services :
+* logger : an Internal logger based on the logger gem.
+* Configuration : a Configuration Service, with Yaml percistance, and pretty accessors.
+* Debug : a Class Debugger, based on Proxy Design pattern and meta-programation like method_missing
+
+
+=== Getting start
+
+==== Preparing Gem
+
+Just after Installation, Carioca :
+
+ $ gem ins bundler # if needed
+ $ bunlde gem myapp
+ $ cd myapp
+
+
+Edit your myapp.gemspec, add this line in Gem::Specification bloc :
+
+ gem.add_dependency 'carioca'
+ gem.add_development_dependency 'rake'
+ gem.add_development_dependency 'carioca'
+
+Description and summary need to be changed to be correctly displayed on Rubygems.
+
+so, execute bundle :
+
+ $ bundle
+
+Your environment, is ready to create your app
+
+==== Prepare Carioca
+
+
+ $ mkdir config
+ $ mkdir bin
+
+edit bin/myapp :
+
+ require 'rubygems'
+ require 'carioca'
+
+ registry = Carioca::Services::Registry.init :file => 'config/myservices.registry'
+
+
+
+After, you could Run Carioca and discover Builtins Services, you need the write access to config path
+
+
+
+ $ ruby -e 'require "rubygems"; require "carioca"; reg = Carioca::Services::Registry.init :file => "config/myservices.registry"; reg.discover_builtins; reg.save!'
+
+
+
+this create you, a New Registry config, with all builtins registered.
+Default path :
+* config file : ./.config
+* log file : /tmp/log.file
+Carioca Registry is a Singleton, and services also be unique instance.
+
+Now you could continue coding your bin/myapp
+
+==== Using Configuration Service
+
+
+ require 'rubygems'
+ require 'carioca'
+
+ registry = Carioca::Services::Registry.init :file => 'config/myservices.registry'
+ config = registry.start_service :name => 'configuration'
+ config.setings.db = { :name => 'mydb' }
+ config.settings.db.host = "myhost"
+ config.settings.db.port = "4545"
+ config.settings.email = "my@email.com"
+ config.save!
+
+
+==== Using Logger Service
+
+logger is automatically loaded with Carioca, loading registry with :debug => true, let you see the Carioca traces.
+
+
+ require 'rubygems'
+ require 'carioca'
+
+ registry = Carioca::Services::Registry.init :file => 'config/myservices.registry' :debug => true
+ log = registry.get_service :name => 'logger'
+ log.info('myapp') {'my message' }
+
+
+==== Creating and using your own service
+
+before create your own service :
+
+
+ $ mkdir services
+
+
+Services, must be a class, if not do a wrapper
+edit services/myservice.rb
+
+ class MyService
+ def initialize
+ end
+
+ def test(arg = nil)
+ return 'OK'
+ end
+ end
+ end
+
+
+You could use the #service_register API (See spec for all details)
+but, you could write it directly in YAML in your config/myservices.registry :
+add the following lines :
+
+ ...
+ myservice:
+ :type: :file
+ :resource: services/myservice.rb
+ :description: a test service
+ :service: MyServices
+ ...
+
+So in your app :
+
+
+ require 'rubygems'
+ require 'carioca'
+
+ registry = Carioca::Services::Registry.init :file => 'config/myservices.registry'
+ service = registry.start_service :name => 'myservice'
+ service.test('titi')
+
+
+
+==== Using Debug in multiple service instance
+
+
+in your app, for debug you could use the Proxy Debug (you need to run Carioca Registry in debug mode ) :
+(Using "debug_", you create an instance of service debug, so with this syntaxe you could create multiple services instances, with different parameters calling.)
+
+
+ require 'rubygems'
+ require 'carioca'
+
+ registry = Carioca::Services::Registry.init :file => 'config/myservices.registry' :debug => true
+ proxy1 = registry.get_service :name => 'debug_myservice', :params => {:service => 'myservice'}
+ proxy1.test('titi')
+
+
+
+see the log /tmp/log.file :
+
+
+ D, [2013-03-23T18:20:39.839826 #76641] DEBUG -- ProxyDebug: BEGIN CALL for mapped service myservice
+ D, [2013-03-23T18:20:39.839875 #76641] DEBUG -- ProxyDebug: called: test
+ D, [2013-03-23T18:20:39.839920 #76641] DEBUG -- ProxyDebug: args : titi
+ D, [2013-03-23T18:20:39.839970 #76641] DEBUG -- ProxyDebug: => returned: OK
+ D, [2013-03-23T18:20:39.840014 #76641] DEBUG -- ProxyDebug: END CALL
+
+==== Using Gem for a service
+
+
+For exemple install uuid gem :
+
+ $ gem ins uuid
+
+
+add to your YAML config config/myservices.registry :
+
+ uuid:
+ :type: :gem
+ :resource: uuid
+ :description: a Rubygems called uuid to build UUID ids.
+ :service: UUID
+
+
+in your app :
+
+ require 'rubygems'
+ require 'carioca'
+
+ registry = Carioca::Services::Registry.init :file => 'config/myservices.registry' :debug => true
+ uuid = registry.get_service :name => 'uuid'
+ uuid.generate
== Copyright
<pre>carioca (c) 2012-2013 Romain GEORGES <romain@ultragreen.net> for Ultragreen Software </pre>