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