class SequelRails::Storage::Abstract
Attributes
config[R]
Public Class Methods
new(config)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 6 def initialize(config) @config = config parse_url end
Public Instance Methods
charset()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 67 def charset @charset ||= config['charset'] || ENV['CHARSET'] || 'utf8' end
close_connections()
click to toggle source
To be overriden by subclasses
# File lib/sequel_rails/storage/abstract.rb, line 39 def close_connections true end
collation()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 71 def collation @collation ||= config['collation'] || ENV['COLLATION'] end
create()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 11 def create res = _create warn "[sequel] Created database '#{database}'" if res res end
database()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 43 def database @database ||= config['database'] || config['path'] end
drop()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 17 def drop return if ::Sequel::DATABASES.size == 0 ::Sequel::Model.db.disconnect res = _drop warn "[sequel] Dropped database '#{database}'" if res res end
dump(filename)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 26 def dump(filename) res = _dump filename warn "[sequel] Dumped structure of database '#{database}' to '#{filename}'" if res res end
host()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 55 def host @host ||= config['host'] || '' end
load(filename)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 32 def load(filename) res = _load filename warn "[sequel] Loaded structure of database '#{database}' from '#{filename}'" if res res end
owner()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 63 def owner @owner ||= config['owner'] || '' end
password()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 51 def password @password ||= config['password'] || '' end
port()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 59 def port @port ||= config['port'] || '' end
schema_information_dump(migrator, sql_dump)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 79 def schema_information_dump(migrator, sql_dump) res = '' inserts = schema_information_inserts(migrator, sql_dump) if inserts.any? res = inserts.join("\n") unless sql_dump res = <<-RUBY.strip_heredoc Sequel.migration do change do #{res} end end RUBY end end res end
search_path()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 75 def search_path @search_path ||= config['search_path'] || '"$user", public' end
username()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 47 def username @username ||= config['username'] || config['user'] || '' end
Private Instance Methods
add_flag(commands, flag)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 120 def add_flag(commands, flag) commands << flag end
add_option(commands, name, value)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 114 def add_option(commands, name, value) return unless value.present? separator = name[0, 2] == '--' ? '=' : ' ' commands << "#{name}#{separator}#{value}" end
exec(escaped_command)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 124 def exec(escaped_command) `#{escaped_command}` # Evaluate command status as a boolean like `system` does. $CHILD_STATUS.exitstatus == 0 end
parse_url()
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 99 def parse_url return unless @config['url'].present? url = URI(@config['url']) username, password = url.userinfo.to_s.split(':') @config.reverse_merge!( 'database' => url.path.to_s[1..-1], 'username' => username, 'password' => password, 'host' => url.host, 'port' => url.port ) end
safe_exec(args)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 131 def safe_exec(args) if !Gem.win_platform? exec SequelRails::Shellwords.join(Array(args)) else jarg = args.map do |arg| str = arg.to_s return "''" if str.empty? str = str.dup str.gsub!(%r{([^A-Za-z0-9_\-.,:/@\n])}, '\\1') str.gsub!(/\n/, "'\n'") str end exec jarg.join(' ') end end
schema_information_dump_with_search_path(migrator, sql_dump)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 154 def schema_information_dump_with_search_path(migrator, sql_dump) res = '' inserts = schema_information_inserts(migrator, sql_dump) if inserts.any? set_search_path_sql = "SET search_path TO #{search_path}" res = inserts.join("\n") if sql_dump res = "#{set_search_path_sql};\n#{res}" else res = <<-RUBY.strip_heredoc Sequel.migration do change do self << #{set_search_path_sql.inspect} #{res} end end RUBY end end res end
schema_information_inserts(migrator, sql_dump)
click to toggle source
# File lib/sequel_rails/storage/abstract.rb, line 147 def schema_information_inserts(migrator, sql_dump) migrator.ds.map do |hash| insert = migrator.ds.insert_sql(hash) sql_dump ? "#{insert};" : "self << #{insert.inspect}" end end