module Mobb::ActiveRecordExtension

Public Class Methods

registered(app) click to toggle source
# File lib/mobb/activerecord.rb, line 18
def self.registered(app)
  if ENV['DATABASE_URL']
    app.set :database, ENV['DATABASE_URL']
  elsif File.exist?("#{Dir.pwd}/config/database.yml")
    app.set :database_file, "#{Dir.pwd}/config/database.yml"
  end

  unless defined?(Rake) || [:test, :production].include?(app.settings.environment)
    ActiveRecord::Base.logger = Logger.new(STDOUT)
  end

  app.helpers ActiveRecordHelper

  # re-connect if database connection dropped (Rails 3 only)
  app.before { ActiveRecord::Base.verify_active_connections! if ActiveRecord::Base.respond_to?(:verify_active_connections!) }
  app.after { ActiveRecord::Base.clear_active_connections! }
end

Public Instance Methods

database() click to toggle source
# File lib/mobb/activerecord.rb, line 56
def database
  ActiveRecord::Base
end
database=(spec) click to toggle source
# File lib/mobb/activerecord.rb, line 42
def database=(spec)
  if spec.is_a?(Hash) and spec.symbolize_keys[environment.to_sym]
    ActiveRecord::Base.configurations = spec.stringify_keys
    ActiveRecord::Base.establish_connection(environment.to_sym)
  elsif spec.is_a?(Hash)
    ActiveRecord::Base.configurations[environment.to_s] = spec.stringify_keys
    ActiveRecord::Base.establish_connection(spec.stringify_keys)
  else
    ActiveRecord::Base.establish_connection(spec)
    ActiveRecord::Base.configurations ||= {}
    ActiveRecord::Base.configurations[environment.to_s] = ActiveRecord::ConnectionAdapters::ConnectionSpecification::ConnectionUrlResolver.new(spec).to_hash
  end
end
database_file=(path) click to toggle source
# File lib/mobb/activerecord.rb, line 36
def database_file=(path)
  path = File.join(root, path) if Pathname(path).relative? and root
  spec = YAML.load(ERB.new(File.read(path)).result) || {}
  set :database, spec
end