class Kamaze::DockerImage::Loader::Helper
Helper
for tasks.
Sample of use:
“`ruby helper = Kamaze::DockerImage::Loader::Helper.new(image)
desc 'Run a command in a new container'
task helper.appoint(:run), [:command] do |task, args|
helper.call(task, args) { image.run(args[:command]) }
end ““
Attributes
image[RW]
@return [Kamaze::DockerImage]
Public Class Methods
new(image)
click to toggle source
@param [Kamaze::DockerImage] image
# File lib/kamaze/docker_image/loader/helper.rb, line 26 def initialize(image) @image = image end
Public Instance Methods
appoint(name)
click to toggle source
Make task name using namespace (from image)
@return [String]
# File lib/kamaze/docker_image/loader/helper.rb, line 33 def appoint(name) namer.call(name) end
wrap(task, args = [], &block)
click to toggle source
Execute related “pre_“ and “post_“ tasks
@param [Rake::Task] task @param [Hash{Symbol => Object}] args
Sample of use:
“`ruby task 'docker:pre_start' do |task, args|
pp(task, args)
end
task 'docker:post_start' do |task, args|
pp(task, args)
end “`
# File lib/kamaze/docker_image/loader/helper.rb, line 53 def wrap(task, args = [], &block) on_pre(task, args) block.call on_post(task, args) end
Also aliased as: call
Protected Instance Methods
namer()
click to toggle source
@return [Proc]
# File lib/kamaze/docker_image/loader/helper.rb, line 67 def namer lambda do |name| "#{image.tasks_ns}:#{name}".gsub(/^:/, '') end end
on_post(task, args)
click to toggle source
@param [Rake::Task] task
# File lib/kamaze/docker_image/loader/helper.rb, line 79 def on_post(task, args) task_call(on: :post, from: task, args: args) end
on_pre(task, args)
click to toggle source
@param [Rake::Task] task
# File lib/kamaze/docker_image/loader/helper.rb, line 74 def on_pre(task, args) task_call(on: :pre, from: task, args: args) end
task_call(on:, from:, args:)
click to toggle source
Call pre/post tasks.
on: pre/post from: task as “Rake::Task“ args: Hash
# File lib/kamaze/docker_image/loader/helper.rb, line 88 def task_call(on:, from:, args:) cname = from.name.gsub(/^#{image.tasks_ns}:/, '') # @formatter:off { pre: namer.call("pre_#{cname}"), post: namer.call("post_#{cname}"), }.fetch(on).tap do |name| Rake::Task[name].execute(**args.to_h) if Rake::Task.task_defined?(name) end # @formatter:on end