Sha256: 943cc09ab89f2dbc9d7a4f3c5428877b8e6bf6992ca038fa58351143f08da5bb
Contents?: true
Size: 1.2 KB
Versions: 3
Compression:
Stored size: 1.2 KB
Contents
# Extension. require_relative '../ext/swift' require_relative 'swift/adapter' require_relative 'swift/attribute' require_relative 'swift/db' require_relative 'swift/header' require_relative 'swift/scheme' require_relative 'swift/type' module Swift class << self def setup name, type, options = {} unless type.kind_of?(Class) && type < Swift::Adapter raise TypeError, "Expected +type+ Swift::Adapter subclass but got #{type.inspect}" end (@repositories ||= {})[name] = type.new(options) end def db name = nil, &block # I pilfered the logic from DM but I don't really understand what is/isn't thread safe. scopes = (Thread.current[:swift_db] ||= []) repository = if name || scopes.empty? @repositories[name || :default] or raise "Unknown db '#{name || :default}', did you forget to #setup?" else scopes.last end if block_given? begin scopes.push(repository) block.call(repository) ensure scopes.pop end end repository end def schema @schema ||= [] end def migrate! name = nil db(name){ schema.each(&:migrate!)} end end end # Swift
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
swift-0.4.3 | lib/swift.rb |
swift-0.4.2 | lib/swift.rb |
swift-0.4.1 | lib/swift.rb |