Class: HerokuTool::DbConfiguration

Inherits:
Object
  • Object
show all
Defined in:
lib/heroku_tool/db_configuration.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(filepath: "config/database.yml", rails_env: ENV["RAILS_ENV"] || "development") ⇒ DbConfiguration

Returns a new instance of DbConfiguration.



6
7
8
9
10
11
12
13
14
15
16
17
# File 'lib/heroku_tool/db_configuration.rb', line 6

def initialize(filepath: "config/database.yml", rails_env: ENV["RAILS_ENV"] || "development")
  db_config_from_file = ERB.new(File.read(filepath)).result
  @config_all = YAML.safe_load(db_config_from_file, permitted_classes: [], permitted_symbols: [], aliases: true)
  config_env = @config_all[rails_env]
  @config_env = if config_env["database"].is_a?(String)
    config_env
  elsif config_env.key?("primary")
    config_env["primary"]
  else
    config_env.values.first
  end
end

Instance Attribute Details

#config_allObject (readonly)

Returns the value of attribute config_all.



4
5
6
# File 'lib/heroku_tool/db_configuration.rb', line 4

def config_all
  @config_all
end

#config_envObject (readonly)

Returns the value of attribute config_env.



4
5
6
# File 'lib/heroku_tool/db_configuration.rb', line 4

def config_env
  @config_env
end

Instance Method Details

#databaseObject



29
30
31
# File 'lib/heroku_tool/db_configuration.rb', line 29

def database
  config_env["database"]
end

#generate_drop_tables_sqlObject



19
20
21
22
# File 'lib/heroku_tool/db_configuration.rb', line 19

def generate_drop_tables_sql
  sql = %(select 'DROP TABLE IF EXISTS \\"' || tablename || '\\" CASCADE;' from pg_tables where schemaname = 'public')
  %(psql #{user_arg} #{database} -t -c "#{sql}")
end

#user_argObject



24
25
26
27
# File 'lib/heroku_tool/db_configuration.rb', line 24

def user_arg
  username = config_env["username"]
  username.present? && "-U #{username}" || ""
end