Class: Wrapbox::Runner::Docker
- Inherits:
-
Object
- Object
- Wrapbox::Runner::Docker
- Defined in:
- lib/wrapbox/runner/docker.rb
Defined Under Namespace
Classes: Cli, ExecutionError
Instance Attribute Summary collapse
-
#container_definition ⇒ Object
readonly
Returns the value of attribute container_definition.
-
#keep_container ⇒ Object
readonly
Returns the value of attribute keep_container.
-
#name ⇒ Object
readonly
Returns the value of attribute name.
Instance Method Summary collapse
-
#initialize(options) ⇒ Docker
constructor
A new instance of Docker.
- #run(class_name, method_name, args, container_definition_overrides: {}, environments: []) ⇒ Object
- #run_cmd(cmds, container_definition_overrides: {}, environments: []) ⇒ Object
Constructor Details
#initialize(options) ⇒ Docker
Returns a new instance of Docker.
17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/wrapbox/runner/docker.rb', line 17 def initialize() @name = [:name] @container_definitions = [:container_definition] ? [[:container_definition]] : [:container_definitions] if @container_definitions.size >= 2 raise "Docker runner does not support multi container currently" end @container_definition = @container_definitions[0] @keep_container = [:keep_container] end |
Instance Attribute Details
#container_definition ⇒ Object (readonly)
Returns the value of attribute container_definition.
12 13 14 |
# File 'lib/wrapbox/runner/docker.rb', line 12 def container_definition @container_definition end |
#keep_container ⇒ Object (readonly)
Returns the value of attribute keep_container.
12 13 14 |
# File 'lib/wrapbox/runner/docker.rb', line 12 def keep_container @keep_container end |
#name ⇒ Object (readonly)
Returns the value of attribute name.
12 13 14 |
# File 'lib/wrapbox/runner/docker.rb', line 12 def name @name end |
Instance Method Details
#run(class_name, method_name, args, container_definition_overrides: {}, environments: []) ⇒ Object
30 31 32 33 34 35 36 37 38 |
# File 'lib/wrapbox/runner/docker.rb', line 30 def run(class_name, method_name, args, container_definition_overrides: {}, environments: []) definition = container_definition .merge(container_definition_overrides) envs = base_environments(class_name, method_name, args) envs.concat(extract_environments(environments)) exec_docker(definition: definition, cmd: ["bundle", "exec", "rake", "wrapbox:run"], environments: envs) end |
#run_cmd(cmds, container_definition_overrides: {}, environments: []) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
# File 'lib/wrapbox/runner/docker.rb', line 40 def run_cmd(cmds, container_definition_overrides: {}, environments: []) definition = container_definition .merge(container_definition_overrides) environments = extract_environments(environments) cmds << nil if cmds.empty? ths = cmds.map.with_index do |cmd, idx| Thread.new(cmd, idx) do |c, i| envs = environments + ["WRAPBOX_CMD_INDEX=#{idx}"] exec_docker( definition: definition, cmd: c&.shellsplit, environments: envs ) end end ths.each(&:join) end |