module OnContainer::Dev::ActiveRecordOps

Public Instance Methods

activerecord_config() click to toggle source
# File lib/on_container/dev/active_record_ops.rb, line 24
def activerecord_config
  @activerecord_config ||= parse_activerecord_config_file 
    .fetch ENV.fetch('RAILS_ENV', 'development')
end
activerecord_database_initialized?() click to toggle source
# File lib/on_container/dev/active_record_ops.rb, line 35
def activerecord_database_initialized?
  ActiveRecord::Base.connection_pool.with_connection do |connection|
    connection.data_source_exists? :schema_migrations
  end
end
activerecord_database_ready?() click to toggle source
# File lib/on_container/dev/active_record_ops.rb, line 41
def activerecord_database_ready?
  connection_tries ||= 3

  establish_activerecord_database_connection
  activerecord_database_initialized?

rescue PG::ConnectionBad
  unless (connection_tries -= 1).zero?
    puts "Retrying DB connection #{connection_tries} more times..."
    sleep app_setup_wait
    retry
  end
  false

rescue ActiveRecord::NoDatabaseError
  false
end
app_setup_wait() click to toggle source
# File lib/on_container/dev/active_record_ops.rb, line 7
def app_setup_wait
  ENV.fetch('APP_SETUP_WAIT', '5').to_i
end
establish_activerecord_database_connection() click to toggle source
# File lib/on_container/dev/active_record_ops.rb, line 29
def establish_activerecord_database_connection
  require 'active_record' unless defined?(ActiveRecord)
  ActiveRecord::Base.establish_connection activerecord_config
  ActiveRecord::Base.connection_pool.with_connection { |connection| }
end
parse_activerecord_config_file() click to toggle source
# File lib/on_container/dev/active_record_ops.rb, line 11
def parse_activerecord_config_file
  require 'erb'
  require 'yaml'

  database_yaml = Pathname.new File.expand_path('config/database.yml')
  database_config = ERB.new(database_yaml.read).result
  loaded_yaml = YAML.safe_load(database_config, aliases: true) || {}
  shared = loaded_yaml.delete('shared')

  loaded_yaml.each { |_k, values| values.reverse_merge!(shared) } if shared
  Hash.new(shared).merge(loaded_yaml)
end
setup_activerecord_database() click to toggle source
# File lib/on_container/dev/active_record_ops.rb, line 59
def setup_activerecord_database
  system 'rails db:setup'
end