class Docker::ConfigGenerator

Public Instance Methods

create_db_config_for_docker() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 100
def create_db_config_for_docker
  if @db_type == 'mongo'
    template 'mongoid.yml', 'config/mongoid.docker.yml'
  else
    template "database.#{@db_type}.yml", 'config/database.docker.yml'
  end
end
create_docker_composer_debug_file() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 108
def create_docker_composer_debug_file
  say('creating docker composer debug file')
  template 'docker-compose.debug.yml', 'docker/docker-compose.debug.yml'
end
create_docker_composer_file() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 95
def create_docker_composer_file
  say('creating docker composer file')
  template 'docker-compose.yml', 'docker/docker-compose.yml'
end
create_docker_config() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 28
def create_docker_config
  say('creating docker config')
  template 'dockerconfig.json', 'docker/dockerconfig.json'
end
create_docker_file() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 33
def create_docker_file
  say('creating docker file')
  @db_config_file = if @db_type == 'mongo'
                      'mongoid'
                    else
                      'database'
    end
  template 'Dockerfile', 'docker/Dockerfile'
end
create_docker_ignore() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 43
    def create_docker_ignore
      content = <<~CODE
        config/database.yml
        config/mongoid.yml
        Dockerfile
        docker-compose*.yml
        docker/
        lib/tasks/docker.rake
CODE
      filename = '.dockerignore'
      if file? filename
        append_to_file filename, content
      else
        create_file filename, content
      end
    end
create_docker_task() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 113
def create_docker_task
  say('creating docker task')
  template 'docker.rake', 'lib/tasks/docker.rake'
end
create_git_ignore() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 60
    def create_git_ignore
      content = <<~CODE
        # See https://help.github.com/articles/ignoring-files for more about ignoring files.
        #
        # If you find yourself ignoring temporary files generated by your text editor
        # or operating system, you probably want to add a global ignore instead:
        #   git config --global core.excludesfile '~/.gitignore_global'

        # Ignore bundler config.
        /.bundle

        # Ignore all logfiles and tempfiles.
        .rake_tasks
        /log/*
        !/log/.keep
        /tmp
        *~
        .#*
        public/assets
        config/settings.local.yml
        config/settings/*.local.yml
        config/environments/*.local.yml
        config/mongoid.yml
        cache
        spring/*
        vendor/*
CODE
      filename = '.gitignore'
      if file? filename
        append_to_file filename, content
      else
        create_file filename, content
      end
      end
setup() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 7
def setup
  config = file?('docker/dockerconfig.json') ? JSON.parse(File.read('docker/dockerconfig.json')) : {}
  @base_image_name = ask_with_default('Which Image do you want to from(Base Image)?', config['base_name'] || default_base_image_name)
  @author = ask_with_default('Who is the Author', config['author'] || ENV['USER'])
  @service_name = ask_with_default('What is the Service Name', config['service_name'] || 'app')
  db_type = %w[mongo mysql postgres]
  say('what type of DB you are using:')
  print_table(db_type.map.with_index { |a, i| [i + 1, a] })
  default_choice = if file?('config/mongoid.yml')
                     1
                   else
                     2
  end
  db_select = ask_with_default('choice:', default_choice).to_i
  @db_type = db_type[db_select - 1]
  @db = db_content(@db_type)
  @service_image_name = ask_with_default('Service Image Name ', config['image_name'] || default_service_image_name)
  @docker_repo_url = ask_with_default('Your docker repo', config['docker_repo'] || default_docker_repo)
  @secret = `rake secret`.chop
end

Private Instance Methods

ask_with_default(statement, default_value) click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 124
def ask_with_default(statement, default_value)
  answer = ask("#{statement}[#{default_value}]:", Thor::Shell::Color::BLUE)
  answer.present? ? answer : default_value
end
db_content(db_type) click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 141
def db_content(db_type)
  temp_dir = File.expand_path('../templates', __FILE__)
  File.read("#{temp_dir}/#{db_type}.erb").chop
end
default_base_image_name() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 129
def default_base_image_name
  'shaoyang/ruby:alpine'
end
default_docker_repo() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 137
def default_docker_repo
  ENV['DEFAULT_DOCKER_REPO'] || "docker.io/#{@author}"
end
default_service_image_name() click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 133
def default_service_image_name
  File.basename(Dir.getwd)
end
file?(path) click to toggle source
# File lib/generators/docker/config/config_generator.rb, line 120
def file?(path)
  File.exist?(path)
end