Sha256: a22eb5bb5bdad2ec1d3aad08377937e5455f02ac1714ce738645099daf396630
Contents?: true
Size: 1.04 KB
Versions: 3
Compression:
Stored size: 1.04 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)) orange.mixin Orange::Mixins::DBLoader orange.register(:stack_loaded) do |stack| db = orange.options['database'] || 'sqlite3::memory:' orange.load_db!(db) orange.upgrade_db! end @options = opts 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.session['flash.redirect_to'] ? packet.session['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
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
orange-0.1.7 | lib/orange-core/middleware/database.rb |
orange-0.1.4 | lib/orange-core/middleware/database.rb |
orange-0.1.2 | lib/orange-core/middleware/database.rb |