Skip to content

Commit

Permalink
issue #54 Add support of ENV['DATABASE_URL']. Use ActiveRecord::Base.…
Browse files Browse the repository at this point in the history
…connection as config source
  • Loading branch information
numbata committed Sep 20, 2016
1 parent aa58c21 commit 8808d0f
Showing 1 changed file with 15 additions and 4 deletions.
19 changes: 15 additions & 4 deletions lib/capistrano-db-tasks/database.rb
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,15 @@ def dump_cmd_ignore_data_tables_opts
class Remote < Base
def initialize(cap_instance)
super(cap_instance)
@config = @cap.capture("cat #{@cap.current_path}/config/database.yml")
@config = YAML.load(ERB.new(@config).result)[@cap.fetch(:rails_env).to_s]
@cap.info "Loading remote database config"
@cap.within @cap.current_path do
@cap.with rails_env: @cap.fetch(:rails_env) do
config_content = @cap.capture(:rails, 'runner "puts ActiveRecord::Base.connection.instance_variable_get(:@config).to_yaml"', '2>/dev/null')
# Remove all bundler and rails initialization warnings and errors
config_content = config_content.split($/)[config_content.split($/).rindex("---")..-1].join($/)
end
end
@config = YAML.load(config_content).inject({}) { |h, (k, v)| h[k.to_s] = v; h }
end

def dump
Expand Down Expand Up @@ -145,8 +152,12 @@ def dump_file_path
class Local < Base
def initialize(cap_instance)
super(cap_instance)
@config = YAML.load(ERB.new(File.read(File.join('config', 'database.yml'))).result)[fetch(:local_rails_env).to_s]
puts "local #{@config}"
@cap.info "Loading local database config"
config_content = @cap.run_locally do
capture(:rails, 'runner "puts ActiveRecord::Base.connection.instance_variable_get(:@config).to_yaml"')
end
config_content = config_content.split($/)[config_content.split($/).rindex("---")..-1].join($/)
@config = YAML.load(config_content).inject({}) { |h, (k, v)| h[k.to_s] = v; h }
end

# cleanup = true removes the mysqldump file after loading, false leaves it in db/
Expand Down

0 comments on commit 8808d0f

Please sign in to comment.