Remove hard coded references to Active Record in railties
This commit is contained in:
parent
c09f934dcb
commit
dd5a80dc3d
@ -38,7 +38,7 @@ def spec
|
||||
private
|
||||
def resolve_string_connection(spec) # :nodoc:
|
||||
hash = configurations.fetch(spec) do |k|
|
||||
self.class.connection_url_to_hash(k)
|
||||
connection_url_to_hash(k)
|
||||
end
|
||||
|
||||
raise(AdapterNotSpecified, "#{spec} database is not configured") unless hash
|
||||
@ -65,7 +65,7 @@ def resolve_hash_connection(spec) # :nodoc:
|
||||
ConnectionSpecification.new(spec, adapter_method)
|
||||
end
|
||||
|
||||
def self.connection_url_to_hash(url) # :nodoc:
|
||||
def connection_url_to_hash(url) # :nodoc:
|
||||
config = URI.parse url
|
||||
adapter = config.scheme
|
||||
adapter = "postgresql" if adapter == "postgres"
|
||||
|
@ -152,7 +152,7 @@ class Railtie < Rails::Railtie # :nodoc:
|
||||
# and then establishes the connection.
|
||||
initializer "active_record.initialize_database" do |app|
|
||||
ActiveSupport.on_load(:active_record) do
|
||||
self.configurations = app.config.database_configuration
|
||||
self.configurations = app.config.database_configuration || {}
|
||||
establish_connection
|
||||
end
|
||||
end
|
||||
|
@ -2,7 +2,7 @@ require 'active_record'
|
||||
|
||||
db_namespace = namespace :db do
|
||||
task :load_config do
|
||||
ActiveRecord::Base.configurations = Rails.application.config.database_configuration
|
||||
ActiveRecord::Base.configurations = Rails.application.config.database_configuration || {}
|
||||
ActiveRecord::Migrator.migrations_paths = Rails.application.paths['db/migrate'].to_a
|
||||
|
||||
if defined?(ENGINE_PATH) && engine = Rails::Engine.find(ENGINE_PATH)
|
||||
|
@ -98,14 +98,15 @@ def threadsafe!
|
||||
end
|
||||
|
||||
# Loads and returns the configuration of the database.
|
||||
# First, looks at If ENV['DATABASE_URL'] if it's not present it uses the #paths["config/database"]
|
||||
# The contents of the file are processed via ERB before being sent through YAML::load.
|
||||
def database_configuration
|
||||
if ENV['DATABASE_URL']
|
||||
{Rails.env => ActiveRecord::ConnectionAdapters::ConnectionSpecification::Resolver.connection_url_to_hash(ENV['DATABASE_URL']).stringify_keys}
|
||||
yaml = paths["config/database"].first
|
||||
if File.exists?(yaml)
|
||||
require "erb"
|
||||
YAML.load ERB.new(IO.read(yaml)).result
|
||||
elsif ENV['DATABASE_URL']
|
||||
nil
|
||||
else
|
||||
require 'erb'
|
||||
YAML.load ERB.new(IO.read(paths["config/database"].first)).result
|
||||
raise "Could not load database configuration. No such file - #{yaml}"
|
||||
end
|
||||
rescue Psych::SyntaxError => e
|
||||
raise "YAML syntax error occurred while parsing #{paths["config/database"].first}. " \
|
||||
|
@ -166,19 +166,6 @@ def db_test_load_structure
|
||||
require "#{app_path}/config/environment"
|
||||
db_test_load_structure
|
||||
end
|
||||
|
||||
test 'db:test:load_structure with database_url' do
|
||||
old_rails_env = ENV["RAILS_ENV"]
|
||||
ENV["RAILS_ENV"] = 'test'
|
||||
|
||||
begin
|
||||
require "#{app_path}/config/environment"
|
||||
set_database_url
|
||||
db_test_load_structure
|
||||
ensure
|
||||
ENV["RAILS_ENV"] = old_rails_env
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
Reference in New Issue
Block a user