Class: Boxing::Context
- Inherits:
-
Object
- Object
- Boxing::Context
- Defined in:
- lib/boxing/context.rb
Overview
The template context
Instance Attribute Summary collapse
- #config ⇒ Object readonly
Instance Method Summary collapse
-
#default_packages ⇒ Array<Boxing::Package>
Default packages.
-
#extra_packages ⇒ Array<Boxing::Package>
Extra Packages.
-
#git? ⇒ TrueClass|FalseClass
Does any gem from git.
-
#has?(*names) ⇒ TrueClass|FalseClass
Check rubygems exists.
-
#initialize(config, database, dependencies = []) ⇒ Context
constructor
A new instance of Context.
-
#node_version ⇒ String
Return node.js version.
-
#packages ⇒ Set<Boxing::Package>
Return required packages.
-
#to_binding ⇒ Binding
Convert to binding.
Constructor Details
#initialize(config, database, dependencies = []) ⇒ Context
Returns a new instance of Context.
16 17 18 19 20 21 22 |
# File 'lib/boxing/context.rb', line 16 def initialize(config, database, dependencies = []) @config = config @database = database @dependencies = dependencies @config.port = 3000 if has?('rails') end |
Instance Attribute Details
#config ⇒ Object (readonly)
9 10 11 |
# File 'lib/boxing/context.rb', line 9 def config @config end |
Instance Method Details
#default_packages ⇒ Array<Boxing::Package>
Default packages
65 66 67 68 69 70 71 72 |
# File 'lib/boxing/context.rb', line 65 def default_packages [ Package.new('build-base', mode: Package::BUILD) ] .push(git? ? Package.new('git', mode: Package::BUILD) : nil) .push(has?('liveness') ? Package.new('curl', mode: Package::RUNTIME) : nil) .compact end |
#extra_packages ⇒ Array<Boxing::Package>
Extra Packages
79 80 81 82 83 84 85 86 |
# File 'lib/boxing/context.rb', line 79 def extra_packages Array[config.build_packages, config.runtime_packages].compact.flat_map do |name| mode = 0 mode |= Package::BUILD if config.build_packages&.include?(name) mode |= Package::RUNTIME if config.runtime_packages&.include?(name) Package.new(name, mode: mode) end end |
#git? ⇒ TrueClass|FalseClass
Does any gem from git
56 57 58 |
# File 'lib/boxing/context.rb', line 56 def git? @dependencies.any?(&:git) end |
#has?(*names) ⇒ TrueClass|FalseClass
Check rubygems exists
47 48 49 |
# File 'lib/boxing/context.rb', line 47 def has?(*names) @dependencies.any? { |dep| names.include?(dep.name) } end |
#node_version ⇒ String
Return node.js version
93 94 95 96 97 |
# File 'lib/boxing/context.rb', line 93 def node_version return config.node_version if config.node_version `node -v`.gsub(/^v/, '') end |
#packages ⇒ Set<Boxing::Package>
Return required packages
29 30 31 32 33 34 35 36 37 38 |
# File 'lib/boxing/context.rb', line 29 def packages @packages ||= Set .new(default_packages + extra_packages) .merge( @dependencies .map(&:name) .flat_map { |name| @database.package_for(name).to_a } ) end |
#to_binding ⇒ Binding
Convert to binding
104 105 106 |
# File 'lib/boxing/context.rb', line 104 def to_binding binding end |