README.md in logcabin-0.0.1 vs README.md in logcabin-0.0.3
- old
+ new
@@ -10,9 +10,46 @@
Support dynamic loading of modules at runtime
## Usage
+Create a collection of modules with `collection = LogCabin.new(load_path: '/path/to/modules')`.
+
+You can also pass in an array of paths as load_path.
+
+You can then load a module and return it with `collection.find(:module_name)` (you can use a string or symbol for the name).
+
+Modules should be children of LogCabin::Modules, like so:
+
+```
+module LogCabin
+ module Modules
+ module MyDynamicModule
+ def useful_function
+ puts "Hello world"
+ end
+ end
+ end
+end
+```
+
+This should go in the file "my_dynamic_module.rb", and would be loaded with `collection.find(:my_dynamic_module)`. This naming convention is required for modules, where an underscore in the filename matches with a capitalized letter in the module definition.
+
+As an example usage, you can use LogCabin to dynamically extend instances of a class:
+
+```
+COLLECTION = LogCabin.new(load_path: '/path/to/my/dynamic/module')
+
+class BoringClass
+ def initialize(cool_module)
+ extend COLLECTION.find(cool_module)
+ end
+end
+
+x = BoringClass.new('my_dynamic_module')
+x.useful_function >> puts "Hello World"
+```
+
## Installation
gem install logcabin
## License