class Matrixeval::DockerCompose::File
Attributes
context[R]
Public Class Methods
create_all()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 6 def create_all FileUtils.mkdir_p folder Context.all.each do |context| new(context).create end end
new(context)
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 23 def initialize(context) @context = context end
Private Class Methods
folder()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 16 def folder Matrixeval.working_dir.join(".matrixeval/docker-compose") end
Public Instance Methods
create()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 27 def create ::File.open(docker_compose_file_path, 'w+') do |file| file.puts build_content end end
Private Instance Methods
build_content()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 39 def build_content { "version" => "3", "services" => services_json, "volumes" => volumes_json }.to_yaml.sub(/---\n/, "") end
depends_on()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 74 def depends_on if docker_compose_extend.services.keys.empty? {} else { "depends_on" => docker_compose_extend.services.keys } end end
docker_compose_extend()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 104 def docker_compose_extend @docker_compose_extend ||= context.docker_compose_extend end
docker_compose_file_path()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 35 def docker_compose_file_path context.docker_compose_file_path end
env()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 66 def env target.env(context).merge( Config.env, main_variant.container.env, context.env ) end
extra_mounts()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 90 def extra_mounts mounts = Config.mounts + context.variants.map(&:mounts).flatten mounts.map do |mount| local_path, in_docker_path = mount.split(':') next mount if Pathname.new(local_path).absolute? local_path = Matrixeval.working_dir.join(local_path) docker_compose_folder_path = Matrixeval.working_dir.join(".matrixeval/docker-compose") local_path = local_path.relative_path_from docker_compose_folder_path "#{local_path}:#{in_docker_path}" end end
main_variant()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 82 def main_variant context.main_variant end
mounts()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 86 def mounts ["../..:/app:cached"] + target.mounts(context) + extra_mounts end
project_name()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 112 def project_name Config.project_name.gsub(/[^A-Za-z0-9-]/,'_').downcase end
services_json()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 47 def services_json services = {} services[main_variant.docker_compose_service_name] = { "image" => main_variant.container.image, "volumes" => mounts, "environment" => env, "working_dir" => "/app" }.merge(depends_on) services.merge(docker_compose_extend.services) end
target()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 116 def target Config.target end
volumes_json()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 60 def volumes_json target.volumes(context).merge( docker_compose_extend.volumes ) end
working_dir_name()
click to toggle source
# File lib/matrixeval/docker_compose/file.rb, line 108 def working_dir_name Matrixeval.working_dir.basename end