# File lib/larch.rb, line 112
    def open_db(database)
      unless database == ':memory:'
        filename  = File.expand_path(database)
        directory = File.dirname(filename)

        unless File.exist?(directory)
          FileUtils.mkdir_p(directory)
          File.chmod(0700, directory)
        end
      end

      begin
        db = Sequel.amalgalite(:database => filename)
        db.test_connection
      rescue => e
        @log.fatal "unable to open message database: #{e}"
        abort
      end

      # Ensure that the database schema is up to date.
      migration_dir = File.join(LIB_DIR, 'db', 'migrate')

      begin
        Sequel::Migrator.apply(db, migration_dir)
      rescue => e
        @log.fatal "unable to migrate message database: #{e}"
        abort
      end

      require 'larch/db/message'
      require 'larch/db/mailbox'
      require 'larch/db/account'

      db
    end