Class: Boxing::Context

Inherits:
Object
  • Object
show all
Defined in:
lib/boxing/context.rb

Overview

The template context

Since:

  • 0.1.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, database, dependencies = []) ⇒ Context

Returns a new instance of Context.

Parameters:

Since:

  • 0.1.0



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

#configObject (readonly)

Since:

  • 0.5.0



9
10
11
# File 'lib/boxing/context.rb', line 9

def config
  @config
end

Instance Method Details

#commandArray<String>

Return command options

Returns:

  • (Array<String>)

Since:

  • 0.9.0



147
148
149
150
151
152
153
154
155
# File 'lib/boxing/context.rb', line 147

def command
  return config.command.map(&:to_s) if config.command
  return ['config/environment.Lamby.cmd'] if has?('lamby')
  return ['config/environment.Aws::Rails::SqsActiveJob.lambda_job_handler'] if has?('aws-sdk-rails')
  return ['server'] if has?('openbox')
  return ['server', '-b', '0.0.0.0'] if has?('rails')

  ['rackup', '-o', '0.0.0.0']
end

#default_packagesArray<Boxing::Package>

Default packages

Returns:

Since:

  • 0.4.0



74
75
76
77
78
79
80
81
# File 'lib/boxing/context.rb', line 74

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

#entrypointArray<String>

Return entrypoint options

Returns:

  • (Array<String>)

Since:

  • 0.9.0



133
134
135
136
137
138
139
140
# File 'lib/boxing/context.rb', line 133

def entrypoint
  return config.entrypoint.map(&:to_s) if config.entrypoint
  return ['bin/aws_lambda_ric'] if has?('aws_lambda_ric')
  return ['bin/openbox'] if has?('openbox')
  return ['bin/rails'] if has?('rails')

  %w[bundle exec]
end

#exclude_groupsArray<String>

Exclude Gems in container images

Returns:

  • (Array<String>)

Since:

  • 0.11.0



45
46
47
# File 'lib/boxing/context.rb', line 45

def exclude_groups
  @exclude_groups ||= config.exclude_groups || []
end

#extra_packagesArray<Boxing::Package>

Extra Packages

Returns:

Since:

  • 0.6.0



88
89
90
91
92
93
94
# File 'lib/boxing/context.rb', line 88

def extra_packages
  [config.build_packages, config.runtime_packages].flatten.map do |name|
    next if name.nil?

    Package.new(name, mode: mode_of(name))
  end.compact
end

#git?TrueClass|FalseClass

Does any gem from git

Returns:

  • (TrueClass|FalseClass)

Since:

  • 0.4.0



65
66
67
# File 'lib/boxing/context.rb', line 65

def git?
  @dependencies.any?(&:git)
end

#has?(*names) ⇒ TrueClass|FalseClass

Check rubygems exists

Parameters:

  • names (Array<String>)

Returns:

  • (TrueClass|FalseClass)

Since:

  • 0.1.0



56
57
58
# File 'lib/boxing/context.rb', line 56

def has?(*names)
  @dependencies.any? { |dep| names.include?(dep.name) }
end

#mode_of(name) ⇒ Number

Check Package Mode

Returns:

  • (Number)

Since:

  • 0.6.3



121
122
123
124
125
126
# File 'lib/boxing/context.rb', line 121

def mode_of(name)
  mode = 0
  mode |= Package::BUILD if config.build_packages&.include?(name)
  mode |= Package::RUNTIME if config.runtime_packages&.include?(name)
  mode
end

#node_versionString

Return node.js version

Returns:

  • (String)

Since:

  • 0.6.0



101
102
103
104
105
# File 'lib/boxing/context.rb', line 101

def node_version
  return config.node_version if config.node_version

  `node -v`.gsub(/^v/, '')
end

#packagesSet<Boxing::Package>

Return required packages

Returns:

Since:

  • 0.1.0



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_bindingBinding

Convert to binding

Returns:

  • (Binding)

Since:

  • 0.1.0



112
113
114
# File 'lib/boxing/context.rb', line 112

def to_binding
  binding
end