require 'fileutils' module Backends::Terraform def working_directory(mini_environment) "tmp/terraform-working-directories/#{mini_environment.name}" end def with_terraform(mini_environment, source) source = File.expand_path(source) FileUtils.mkdir_p working_directory(mini_environment) Dir.chdir(working_directory(mini_environment)) do if Dir.empty?('.') RubyTerraform.init( backend: true, from_module: source, backend_config: { address: terraform_backend_address(mini_environment) }, plugin_dir: terraform_plugin_dir ) end yield end end def terraform_backend_address(mini_environment) ( 'http://localhost:3000' + Rails .application .routes .url_helpers .mini_environment_terraform_http_backend_path( mini_environment ) ) end def terraform_plugin_dir ENV['PATH'].split(':').first end end