Module: Docker::Stack::Service
- Included in:
- FedoraGenerator, PostgresGenerator, RedisGenerator, SolrGenerator
- Defined in:
- lib/generators/docker/stack/service.rb,
lib/generators/docker/stack/service/solr_generator.rb,
lib/generators/docker/stack/service/redis_generator.rb,
lib/generators/docker/stack/service/fedora_generator.rb,
lib/generators/docker/stack/service/postgres_generator.rb
Defined Under Namespace
Classes: FedoraGenerator, PostgresGenerator, RedisGenerator, SolrGenerator
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/generators/docker/stack/service.rb', line 8 def self.included(base) base.include Util base.class_option :env, type: :string, default: 'development,test' base.define_method :add_service do [:env].split(/,/).each do |env| @env = env add_service_for_environment end end base.no_tasks do def service self.class.generator_name end def add_service_for_environment new_service_config = current_service_config.deep_merge(service_from_template(service)) say_status :update, "#{relative_to_original_destination_root(compose_file_full_path)} [#{service}]", true File.open(compose_file_full_path, 'w') do |f| YAML.dump(new_service_config, f) end end def service_from_template(service) source = File.(find_in_source_paths("services/#{service}.yml.erb")) context = OpenStruct.new(env: @env, port_offset: port_offset).instance_eval { binding } yaml = Thor::Actions::CapturableERB.new(::File.binread(source), nil, '-', '@output_buffer').tap do |erb| erb.filename = source end.result(context) YAML.safe_load(yaml) end def port_offset { 'development' => 0, 'test' => 2 }[@env] || 0 end end end |