Class: PgBundle::Definition
- Inherits:
-
Object
- Object
- PgBundle::Definition
- Defined in:
- lib/pgbundle/definition.rb
Overview
The Definition class collects all objects defined in a PgFile
Instance Attribute Summary collapse
-
#database ⇒ Object
Returns the value of attribute database.
-
#errors ⇒ Object
Returns the value of attribute errors.
-
#extensions ⇒ Object
Returns the value of attribute extensions.
Instance Method Summary collapse
-
#available_extensions ⇒ Object
returns an Array of already available Extensions.
-
#check ⇒ Object
returns an array hashes with dependency information [{name: ‘foo’, installed: true, created: false }].
-
#create ⇒ Object
create all required extensions.
- #init ⇒ Object
-
#initialize ⇒ Definition
constructor
A new instance of Definition.
-
#install ⇒ Object
installs missing extensions returns all successfully installed Extensions.
-
#install! ⇒ Object
installs all required extensions.
-
#link_dependencies ⇒ Object
links extension dependencies to each other.
-
#missing_extensions ⇒ Object
returns an Array of missing Extensions.
Constructor Details
#initialize ⇒ Definition
Returns a new instance of Definition.
6 7 8 9 |
# File 'lib/pgbundle/definition.rb', line 6 def initialize @extensions = {} @errors = [] end |
Instance Attribute Details
#database ⇒ Object
Returns the value of attribute database.
5 6 7 |
# File 'lib/pgbundle/definition.rb', line 5 def database @database end |
#errors ⇒ Object
Returns the value of attribute errors.
5 6 7 |
# File 'lib/pgbundle/definition.rb', line 5 def errors @errors end |
#extensions ⇒ Object
Returns the value of attribute extensions.
5 6 7 |
# File 'lib/pgbundle/definition.rb', line 5 def extensions @extensions end |
Instance Method Details
#available_extensions ⇒ Object
returns an Array of already available Extensions
18 19 20 21 |
# File 'lib/pgbundle/definition.rb', line 18 def available_extensions link_dependencies extensions.select { |_, dep| dep.available?(database) }.values end |
#check ⇒ Object
returns an array hashes with dependency information
- {name: ‘foo’, installed: true, created: false }
62 63 64 65 66 67 68 69 70 71 |
# 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 ⇒ Object
create all required extensions
44 45 46 47 48 49 |
# File 'lib/pgbundle/definition.rb', line 44 def create extensions.map do |_, dep| dep.create_with_dependencies(database) dep end end |
#init ⇒ Object
51 52 53 54 55 56 57 58 |
# 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 ⇒ Object
installs missing extensions returns all successfully installed Extensions
24 25 26 27 28 29 30 31 |
# 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! ⇒ Object
installs all required extensions
34 35 36 37 38 39 40 41 |
# 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 ⇒ Object
links extension dependencies to each other
74 75 76 77 78 79 80 81 82 83 84 85 86 |
# 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 ⇒ Object
returns an Array of missing Extensions
12 13 14 15 |
# File 'lib/pgbundle/definition.rb', line 12 def missing_extensions link_dependencies extensions.select { |_, dep| !dep.available?(database) }.values end |