Sha256: f9c4cf6f10c11f94816a0c11fa67c18726c6a83fd7ef469c48622eac419fd6af

Contents?: true

Size: 1.61 KB

Versions: 1

Compression:

Stored size: 1.61 KB

Contents

module NoGo
  class Connection
    @@proxy_adapter = nil

    # Returns proxy adapter if connected, otherwise raises an error
    def self.proxy_adapter
      @@proxy_adapter || raise('Proxy adapter is not connected.  Please run NoGo::Connection.connect! to first establish a connection.')
    end

    # Proxy an existing connection.  Raises an exception if no database
    # connection has been established.
    def self.connect!
      # TODO: Abstract away ORM-specific code *
      original_adapter = ActiveRecord::Base.connection_pool.spec.config[:adapter]
      ActiveRecord::Base.establish_connection :adapter => :nogo, :target_adapter => ActiveRecord::Base.connection

      # After establishing connection the connection pool config adapter will be set to <tt>:nogo</tt> which
      # may cause problems with gems such as activerecord-import which rely on that value to be set to a
      # standard ActiveRecord database adapter.  Fortunately we can easily change the config setting back to
      # its original value.
      ActiveRecord::Base.connection_pool.spec.config[:adapter] = original_adapter 
            
      @@proxy_adapter = ActiveRecord::Base.connection
    end

    # Returns true or false to indicate whether a proxy adapter has been connected.
    def self.connected?
      !!@@proxy_adapter
    end

    def self.enabled=(value)
      proxy_adapter.enabled = value
    end

    def self.pop_enabled_state
      proxy_adapter.pop_enabled_state
    end

    def self.push_enabled_state
      proxy_adapter.push_enabled_state
    end

    def self.strategy=(strategy)
      proxy_adapter.strategy = strategy
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
nogo-1.0.0.beta lib/nogo/connection.rb