RubyGems Navigation menu

pluggability 0.0.2

Pluggability is a mixin module that turns an including class into a factory for its derivatives, capable of searching for and loading them by name. This is useful when you have an abstract base class which defines an interface and basic functionality for a part of a larger system, and a collection of subclasses which implement the interface for different underlying functionality. An example of where this might be useful is in a program which generates output with a 'driver' object, which provides a unified interface but generates different kinds of output. First the abstract base class, which is extended with Pluggability: # in mygem/driver.rb: require 'pluggability' require 'mygem' unless defined?( MyGem ) class MyGem::Driver extend Pluggability plugin_prefixes "drivers", "drivers/compat" end We can have one driver that outputs PDF documents: # mygem/drivers/pdf.rb: require 'mygem/driver' unless defined?( MyGem::Driver ) class MyGem::Driver::PDF < Driver ...implementation... end and another that outputs plain ascii text: #mygem/drivers/ascii.rb: require 'mygem/driver' unless defined?( MyGem::Driver ) class MyGem::Driver::ASCII < Driver ...implementation... end Now the driver is configurable by the end-user, who can just set it by its short name: require 'mygem' config[:driver_type] #=> "pdf" driver = MyGem::Driver.create( config[:driver_type] ) driver.class #=> MyGem::Driver::PDF # You can also pass arguments to the constructor, too: ascii_driver = MyGem::Driver.create( :ascii, :columns => 80 )

版本列表:

  1. 0.4.3 - March 04, 2015 (24.0 KB)
  2. 0.4.2 - March 04, 2015 (24.0 KB)
  3. 0.4.0 - January 08, 2014 (22.5 KB)
  4. 0.3.0 - September 26, 2013 (22.5 KB)
  5. 0.2.0 - March 28, 2013 (21.5 KB)
  6. 0.0.2 - March 01, 2013 (21.5 KB)
顯示所有版本(共 9)

Runtime 相依性套件 (1):

作者:

  • Martin Chase, Michael Granger

擁有者:

10ffad34687d0045466c257cb92ff2b304cdb622ce0aac272b61f23f373e2abf

SHA 256 checksum:

d23b07b2cb5d2324687585ced41e6239f2aa3df0cea2ccfe1077869aac8908e3

總下載次數 12,918

這個版本 1,281

Gemfile:
= Copy to clipboard Copied!

安裝:
=

License:

BSD

Required Ruby Version: None

相關連結: