class PgBundle::Definition
The Definition
class collects all objects defined in a PgFile
Attributes
database[RW]
errors[RW]
extensions[RW]
Public Class Methods
new()
click to toggle source
# File lib/pgbundle/definition.rb, line 6 def initialize @extensions = {} @errors = [] end
Public Instance Methods
available_extensions()
click to toggle source
returns an Array of already available Extensions
# File lib/pgbundle/definition.rb, line 18 def available_extensions link_dependencies extensions.select { |_, dep| dep.available?(database) }.values end
check()
click to toggle source
returns an array of hashes with dependency information
- {name: 'foo', installed: true, created: false }
# File lib/pgbundle/definition.rb, line 62 def check link_dependencies extensions.map do |_,ext| { name: ext.name, installed: ext.installed?(database), created: ext.created?(database) } end end
create()
click to toggle source
create all required extensions
# File lib/pgbundle/definition.rb, line 44 def create extensions.map do |_, dep| dep.create_with_dependencies(database) dep end end
init()
click to toggle source
# File lib/pgbundle/definition.rb, line 51 def init ["database '#{database.name}', host: '#{database.host}', user: '#{database.user}', system_user: '#{database.system_user}', use_sudo: #{database.use_sudo}"] + database.current_definition.map do |r| name, version = r['name'], r['version'] requires = r['requires'] ? ", requires: " + r['requires'].gsub(/[{},]/,{'{' => '%w(', '}' =>')', ','=> ' '}) : '' "pgx '#{name}', '#{version}'#{requires}" end end
install()
click to toggle source
installs missing extensions returns all successfully installed Extensions
# File lib/pgbundle/definition.rb, line 24 def install installed = missing_extensions.map do |dep| dep.install(database) dep end installed.select { |dep| dep.available?(database) } end
install!()
click to toggle source
installs all required extensions
# File lib/pgbundle/definition.rb, line 34 def install! installed = extensions.map do |_, dep| dep.install(database, true) dep end installed.select { |dep| dep.available?(database) } end
link_dependencies()
click to toggle source
links extension dependencies to each other
# File lib/pgbundle/definition.rb, line 74 def link_dependencies extensions.each do |_, ex| undefined_dependencies = ex.dependencies.select { |k, v| v.source.nil? }.keys undefined_dependencies.each do |name| if extensions[name] ex.dependencies[name] = extensions[name] else ex.dependencies[name] = PgBundle::Extension.new(name) end end end self end
missing_extensions()
click to toggle source
returns an Array of missing Extensions
# File lib/pgbundle/definition.rb, line 12 def missing_extensions link_dependencies extensions.select { |_, dep| !dep.available?(database) }.values end