class Recipes::DatabaseContainer
Constants
- CONTAINER_VARS
- MYSQL_SERVICE
- POSTGRESQL_SERVICE
Public Instance Methods
create()
click to toggle source
# File lib/potassium/recipes/database_container.rb, line 30 def create db_type = get(:database) return if [:None, :none].include? db_type.to_sym copy_file '../assets/docker-compose.yml', 'docker-compose.yml' compose = DockerHelpers.new('docker-compose.yml') compose.add_service(db_type.to_s, self.class.const_get("#{db_type}_service".upcase)) compose.add_volume("#{db_type}_data") template '../assets/Makefile.erb', 'Makefile' run "docker-compose up -d" set_env(db_type, CONTAINER_VARS[db_type][:port], CONTAINER_VARS[db_type][:user]) set_dot_env(db_type, CONTAINER_VARS[db_type][:port], CONTAINER_VARS[db_type][:user]) end
install()
click to toggle source
# File lib/potassium/recipes/database_container.rb, line 47 def install database_config = YAML.safe_load(IO.read('config/database.yml'), [], [], true) database = database_config['development']['adapter'].gsub(/\d+/, '').to_sym set :database, database template "../assets/config/database_#{database}.yml.erb", 'config/database.yml' setup_text = # setup file is templated on project creation, manual install is needed <<~TEXT # Set up required services docker-compose up -d TEXT insert_into_file 'bin/setup', setup_text, before: "# Set up database" create run 'bin/setup' info "A new container with a #{get(:database)} database has been created." end
installed?()
click to toggle source
# File lib/potassium/recipes/database_container.rb, line 67 def installed? file_exist?("docker-compose.yml") end
Private Instance Methods
set_dot_env(_service_name, _port, _user)
click to toggle source
# File lib/potassium/recipes/database_container.rb, line 78 def set_dot_env(_service_name, _port, _user) env_text = <<~TEXT # Database DB_HOST=127.0.0.1 DB_PORT=COMMAND_EXPAND(make services-port SERVICE=#{_service_name} PORT=#{_port}) DB_USER=#{_user} TEXT insert_into_file '.env.development', env_text, after: "WEB_CONCURRENCY=1\n" end
set_env(_service_name, _port, _user)
click to toggle source
# File lib/potassium/recipes/database_container.rb, line 73 def set_env(_service_name, _port, _user) ENV["DB_PORT"] = `make services-port SERVICE=#{_service_name} PORT=#{_port}`.squish ENV["DB_USER"] = _user end