Sha256: e38fa2a24a8664632019c5856ebd177ec413b18cf67547e5e857d8ce613fd40f
Contents?: true
Size: 1.81 KB
Versions: 2
Compression:
Stored size: 1.81 KB
Contents
module Alf module Sequel # # Specialization of Alf::Environment to distribute Sequel datasets # class Environment < ::Alf::Environment # # (see Alf::Environment.recognizes?) # # Returns true if args contains one String that can be interpreted as # a valid database uri. # def self.recognizes?(args) require 'uri' return false unless (args.size == 1) && args.first.is_a?(String) uri = URI::parse(args.first) if uri.scheme || looks_a_sqlite_file?(args.first) true else false end rescue ::URI::Error false end def self.looks_a_sqlite_file?(f) (File.file?(f) && File.extname(f).==(".db")) end # Creates an Environment instance def initialize(uri, options = {}) @uri = self.class.looks_a_sqlite_file?(uri) ? "sqlite://#{uri}" : uri @options = options end # # (see Alf::Environment#dataset) # def dataset(name) Iterator.new(connect[name]) end private # Creates a database connection def connect Alf::Tools::friendly_require('sequel') @db ||= ::Sequel.connect(@uri, @options) end ::Alf::Environment.register(:sequel, self) end # class Environment # Specialization of Alg::Iterator to work on a Sequel dataset class Iterator include ::Alf::Iterator def initialize(dataset) @dataset = dataset end # (see Alf::Iterator#each) def each @dataset.each(&Proc.new) end # (see Alf::Iterator#pipe) def pipe(input, env = nil) self end end # class Iterator end # module Sequel end # module Alf
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
alf-0.10.1 | lib/alf/extra/sequel.rb |
alf-0.10.0 | lib/alf/extra/sequel.rb |