class Redoxed::SQL
Public Class Methods
new()
click to toggle source
Calls superclass method
Redoxed::Source::new
# File lib/redoxed/source/sql.rb, line 50 def initialize super @cfg = Redoxed.config.source.sql end
Public Instance Methods
load(node_want = nil)
click to toggle source
# File lib/redoxed/source/sql.rb, line 21 def load(node_want = nil) nodes = [] db = connect query = db[@cfg.table.to_sym] query = query.with_sql(@cfg.query) if @cfg.query? query = query.where(@cfg.map.name.to_sym => node_want) if node_want query.each do |node| # map node parameters keys = {} @cfg.map.each { |key, sql_column| keys[key.to_sym] = node_var_interpolate node[sql_column.to_sym] } keys[:model] = map_model keys[:model] if keys.has_key? :model # map node specific vars vars = {} @cfg.vars_map.each do |key, sql_column| vars[key.to_sym] = node_var_interpolate node[sql_column.to_sym] end keys[:vars] = vars unless vars.empty? nodes << keys end db.disconnect nodes end
setup()
click to toggle source
# File lib/redoxed/source/sql.rb, line 9 def setup return unless @cfg.empty? Redoxed.asetus.user.source.sql.adapter = 'sqlite' Redoxed.asetus.user.source.sql.database = File.join(Config::Root, 'sqlite.db') Redoxed.asetus.user.source.sql.table = 'devices' Redoxed.asetus.user.source.sql.map.name = 'name' Redoxed.asetus.user.source.sql.map.model = 'rancid' Redoxed.asetus.save :user raise NoConfig, 'no source sql config, edit ~/.config/redoxed/config' end
Private Instance Methods
connect()
click to toggle source
# File lib/redoxed/source/sql.rb, line 55 def connect Sequel.connect(adapter: @cfg.adapter, host: @cfg.host?, user: @cfg.user?, password: @cfg.password?, database: @cfg.database) rescue Sequel::AdapterNotFound => error raise RedoxedError, "SQL adapter gem not installed: " + error.message end