class Dockerizer::Rails
Public Instance Methods
with(db_type)
click to toggle source
# File lib/dockerizer/rails.rb, line 22 def with(db_type) @db_type = db_type valid_db_types = ["postgresql"] unless valid_db_types.include?(@db_type) puts "Invalid db type #{@db_type}. Valid types are #{valid_db_types}" exit! end if options[:name] @project_name = options[:name] else puts "What is your project name?" @project_name = STDIN.gets.chomp end if options[:db_username] @db_username = options[:db_username] else puts "Enter a db username..." @db_username = STDIN.gets.chomp end if options[:db_password] @db_password = options[:db_password] else puts "Enter a db password..." @db_password = STDIN.gets.chomp end puts "Generating rails aplication with #{@db_type} as a database in #{@project_name}..." puts "Creating #{@project_name} dir in #{Dir.pwd}" project_dir = Dir.pwd + "/#{@project_name}" if Dir.exist?(project_dir) puts "Found dir with same project name!" puts "Replacing dir with the current project..." FileUtils.remove_dir(project_dir) end puts "Creating project folder..." FileUtils.mkdir @project_name puts "Copy template files..." template_dir = Dir.glob(File.expand_path(File.dirname(__FILE__) + "/template/rails/common/*")) FileUtils.cp_r(template_dir, project_dir) docker_compose_dir = File.expand_path("#{File.dirname(__FILE__)}/template/rails/#{@db_type}/docker-compose.yml.erb") config_dir = File.expand_path("#{File.dirname(__FILE__)}/config/rails/database.yml.erb") puts "docker-compose file found at #{docker_compose_dir}" docker_compose_file = File.read(docker_compose_dir) docker_compose_renderer = ERB.new(docker_compose_file) docker_compose_output = docker_compose_renderer.result(binding) File.open("#{project_dir}/docker-compose.yml", "w") do |f| f.write(docker_compose_output) f.close() end puts "docker-compose file added successfuly" puts "Database config found at #{config_dir}" config_file = File.read(config_dir) renderer = ERB.new(config_file) config_output = renderer.result(binding) is_api = options[:api] ? '--api' : '' puts "Initializing rails application..." Dir.chdir(project_dir) do puts "Currently in #{Dir.pwd}" system "docker-compose run web rails new . --force -T --database=#{db_type} " + is_api system "docker-compose build" File.open("config/database.yml", "w") do |f| f.write(config_output) f.close() end end end