Module: RSence::Plugins::PluginBase
Overview
This module contains common functionality included in the Plugin, GUIPlugin and the Servlet base classes.
Extension hooks for server events
These methods are provided as the basic server event hooks:
-
#init
– Use instead ofinitialize
-
#open
– Extend to open objects -
#flush
– Extend to write the state and to flush buffers -
#close
– Extend to close objects
Utility methods
These are general utility methods not intended to be extended.
-
#file_read
Use to read files -
#yaml_read
Use to read yaml data -
#file_write
Use to write files -
#bundle_path
Use for plugin bundle -specific paths -
#httime
Use for HTTP date/time
See also
-
Plugin Bundles – General information about the plugin bundle system
-
Plugin – The Plugin base class
-
Servlet – The Servlet base class
-
GUIPlugin – The GUIPlugin base class
Instance Method Summary collapse
-
#bundle_path(path = false, prefix = false, suffix = false) ⇒ String
Path utility.
-
#close ⇒ nil
Extend to close objects like streams and database connections.
-
#file_exist?(path) ⇒ false, true
File existence checker.
-
#file_read(path) ⇒ false, String
File reader utility.
-
#file_write(path, data) ⇒ true, false
(also: #file_save)
File writer utility.
-
#flush ⇒ nil
Extend to save your plugin state, write or flush any data that needs to be stored.
-
#httime(time = false) ⇒ String
Utility for returning the time in the HTTP RFC specification format, like: !!!text Sun, 04 Jul 2010 06:20:53 EEST.
-
#init ⇒ nil
Extend this method do any initial configuration instead of extending the
initialize
constructor, which should never be done in plugins. -
#json_read(path) ⇒ false, Object
JSON reader utility.
-
#method_missing(sym, *args, &block) ⇒ Object
When a method is missing, tries a call via pluginmanager.
-
#open ⇒ nil
Extend to open objects like streams and database connections.
-
#yaml_read(path) ⇒ false, Object
YAML reader utility.
-
#yaml_write(path, data) ⇒ Object
Yaml writer utility.
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(sym, *args, &block) ⇒ Object
When a method is missing, tries a call via pluginmanager. (Eliminates plugins.plugin_name.method_name calls -> plugin_name.method_name)
32 33 34 |
# File 'lib/rsence/plugins/plugin_base.rb', line 32 def method_missing( sym, *args, &block ) @plugins.method_missing( sym, *args, &block ) end |
Instance Method Details
#bundle_path(path = false, prefix = false, suffix = false) ⇒ String
Path utility
Makes a full, absolute path using the plugin bundle as the default path when a relative path is given. Returns just the bundle’s local path, if no parameters given.
187 188 189 190 191 192 193 194 195 196 197 |
# File 'lib/rsence/plugins/plugin_base.rb', line 187 def bundle_path( path=false, prefix=false, suffix=false ) return @path if not path if suffix path = "#{path}#{suffix}" unless path.end_with?(suffix) end if prefix path = File.join( prefix, path ) end path = File.( path, @path ) return path end |
#close ⇒ nil
Extend to close objects like streams and database connections.
It is called by the PluginManager when the plugin is about to be destructed, so don’t expect any events after it has been called.
69 70 |
# File 'lib/rsence/plugins/plugin_base.rb', line 69 def close end |
#file_exist?(path) ⇒ false, true
File existence checker
Just a wrapper for File.exist, except it handles the path
via #bundle_path
78 79 80 81 |
# File 'lib/rsence/plugins/plugin_base.rb', line 78 def file_exist?( path ) path = bundle_path( path ) File.exist?( path ) end |
#file_read(path) ⇒ false, String
File reader utility
Reads the contents of the file given in the path
.
91 92 93 94 95 |
# File 'lib/rsence/plugins/plugin_base.rb', line 91 def file_read( path ) path = bundle_path( path ) return false unless File.exist?( path ) return File.read( path ) end |
#file_write(path, data) ⇒ true, false Also known as: file_save
File writer utility.
Writes the contents of the data
into the file given in the path
.
155 156 157 158 159 160 161 162 163 164 165 166 |
# File 'lib/rsence/plugins/plugin_base.rb', line 155 def file_write( path, data ) path = bundle_path( path ) begin datafile = File.open( path, 'wb' ) datafile.write( data.to_s ) datafile.close return true rescue => e warn "file_write error for path #{path} #{e}" return false end end |
#flush ⇒ nil
Extend to save your plugin state, write or flush any data that needs to be stored.
It is called by the PluginManager before #close, but doesn’t always mean a close
event is imminent.
61 62 |
# File 'lib/rsence/plugins/plugin_base.rb', line 61 def flush end |
#httime(time = false) ⇒ String
Utility for returning the time in the HTTP RFC specification format, like:
Sun, 04 Jul 2010 06:20:53 EEST
206 207 208 209 |
# File 'lib/rsence/plugins/plugin_base.rb', line 206 def httime(time=false) time = Time.new unless time return time.gmtime.strftime('%a, %d %b %Y %H:%M:%S %Z') end |
#init ⇒ nil
Extend this method do any initial configuration instead of extending the initialize
constructor, which should never be done in plugins.
It is called by the PluginManager when the plugin has been constructed and registered.
45 46 |
# File 'lib/rsence/plugins/plugin_base.rb', line 45 def init end |
#json_read(path) ⇒ false, Object
JSON reader utility
Reads the contents of the JSON file given in the path
and returns as a parsed structure of the contents of the file.
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/rsence/plugins/plugin_base.rb', line 132 def json_read( path ) file_data = file_read( path ) if not file_data return false else begin return JSON.parse( file_data ) rescue => e warn "An exception occurred while parsing JSON file: #{path}" warn e. warn " #{e.backtrace.join("\n ")}" return false end end end |
#open ⇒ nil
Extend to open objects like streams and database connections.
It is called by the PluginManager after the #init method, when everything is constructed after all plugins are loaded.
53 54 |
# File 'lib/rsence/plugins/plugin_base.rb', line 53 def open end |
#yaml_read(path) ⇒ false, Object
YAML reader utility
Reads the contents of the YAML file given in the path
and returns as a parsed structure of the contents of the file.
105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 |
# File 'lib/rsence/plugins/plugin_base.rb', line 105 def yaml_read( path ) file_data = file_read( path ) if not file_data return false else begin return YAML.load( file_data ) rescue Psych::SyntaxError => e warn "Syntax Error in YAML file: #{path} (#{e.})" return false rescue => e warn "An exception occurred while parsing YAML file: #{path}" warn e. warn " #{e.backtrace.join("\n ")}" return false end end end |
#yaml_write(path, data) ⇒ Object
Yaml writer utility.
Wrapper for #file_write Converts data
to yaml and then calls file_write with the result.
173 174 175 |
# File 'lib/rsence/plugins/plugin_base.rb', line 173 def yaml_write( path, data ) file_write( path, data.to_yaml ) end |