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