Sha256: c78414be77d54d5b8447970753b8b00cf532c5348bede627df13cced18c14256

Contents?: true

Size: 1.21 KB

Versions: 2

Compression:

Stored size: 1.21 KB

Contents

require 'railsless/active_record'

module Railsless
  module ActiveRecord
    module SinatraExtension

      def self.registered(app)
        unless app.respond_to?(:activerecord_config) && app.activerecord_config
          app.set :activerecord_config, Railsless::ActiveRecord::Config.new
        end
        app.set :database, app.database
        app.helpers SinatraExtensionHelper
        app.after { Railsless::ActiveRecord.disconnect! }
      end

      def database
        @database ||= Railsless::ActiveRecord.connect!(activerecord_config)
      end

      def activerecord_config=(config)
        @database = nil
        @activerecord_config = config
        @database = Railsless::ActiveRecord.connect!(config)
      end
    end

    module SinatraExtensionHelper
      def database
        settings.database
      end
    end
  end
end

# HACK: Support classic apps by automatically registering the extension, as recommended
#       by the Sinatra docs here: http://www.sinatrarb.com/extensions.html
if defined?(Sinatra) && defined?(Sinatra::Application)
  # We're using classic; sinatra/main defines Sinatra::Application, so hook into that.
  Sinatra::Application.send(:register, ::Railsless::ActiveRecord::SinatraExtension)
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
railsless-active_record-0.0.2 lib/railsless/active_record/sinatra_extension.rb
railsless-active_record-0.0.1 lib/railsless/active_record/sinatra_extension.rb