Sha256: 3f7450357e11b08ea17fccf4050264018c1d33b41ff609f68e71ac2083e0e49c

Contents?: true

Size: 1.13 KB

Versions: 18

Compression:

Stored size: 1.13 KB

Contents

require 'orange-core/middleware/base'
module Orange::Middleware
  
  class Database < Base
    def init(opts = {})
      opts = opts.with_defaults(:migration_url => (orange.options[:development_mode] ? '/__ORANGE_DB__/migrate' : false), :no_auto_upgrade => false)
      orange.mixin Orange::Mixins::DBLoader
      @options = opts
    end
    
    def stack_init
      unless orange.options.has_key?('database') && orange.options['database'] == false
        db = orange.options['database'] || 'sqlite3::memory:'
        orange.load_db!(db) 
        orange.upgrade_db! unless @options[:no_auto_upgrade]
      end
    end
    
    def packet_call(packet)
      path = packet['route.path'] || packet.request.path_info
      if @options[:migration_url] && @options[:migration_url] == path
        orange.migrate_db!
        after = packet.flash('redirect_to') || '/'
        packet.reroute(after)
      end
      pass packet
    end
  end
  
end

module Orange::Mixins::DBLoader
  def load_db!(url)
    DataMapper.setup(:default, url)
  end
  
  def migrate_db!
    DataMapper.auto_migrate!
  end
  
  def upgrade_db!
    DataMapper.auto_upgrade!
  end
  
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
orange-0.3.9 lib/orange-core/middleware/database.rb
orange-0.3.8 lib/orange-core/middleware/database.rb
orange-0.3.7 lib/orange-core/middleware/database.rb
orange-0.3.6 lib/orange-core/middleware/database.rb
orange-0.3.5 lib/orange-core/middleware/database.rb
orange-0.3.4 lib/orange-core/middleware/database.rb
orange-0.3.3 lib/orange-core/middleware/database.rb
orange-0.3.2 lib/orange-core/middleware/database.rb
orange-0.3.1 lib/orange-core/middleware/database.rb
orange-0.3.0 lib/orange-core/middleware/database.rb
orange-0.2.11 lib/orange-core/middleware/database.rb
orange-0.2.9 lib/orange-core/middleware/database.rb
orange-0.2.8 lib/orange-core/middleware/database.rb
orange-0.2.7 lib/orange-core/middleware/database.rb
orange-0.2.6 lib/orange-core/middleware/database.rb
orange-0.2.5 lib/orange-core/middleware/database.rb
orange-0.2.4 lib/orange-core/middleware/database.rb
orange-0.2.3 lib/orange-core/middleware/database.rb