sequelizer 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/.gitignore +18 -0
 - data/.travis.yml +15 -0
 - data/README.md +1 -1
 - data/Rakefile +9 -0
 - data/lib/sequel/extensions/db_opts.rb +41 -0
 - data/lib/sequel/extensions/settable.rb +17 -0
 - data/lib/sequelizer.rb +11 -4
 - data/lib/sequelizer/cli.rb +3 -1
 - data/lib/sequelizer/connection_maker.rb +66 -2
 - data/lib/sequelizer/env_config.rb +10 -2
 - data/lib/sequelizer/monkey_patches/database_in_after_connect.rb +26 -0
 - data/lib/sequelizer/options.rb +27 -5
 - data/lib/sequelizer/version.rb +1 -1
 - data/lib/sequelizer/yaml_config.rb +3 -2
 - data/sequelizer.gemspec +2 -1
 - data/test/lib/sequel/extensions/test_db_opts.rb +40 -0
 - data/test/lib/sequelizer/test_connection_maker.rb +102 -0
 - data/test/{sequelizer → lib/sequelizer}/test_env_config.rb +8 -2
 - data/test/{sequelizer → lib/sequelizer}/test_gemfile_modifier.rb +2 -2
 - data/test/{sequelizer → lib/sequelizer}/test_options.rb +26 -3
 - data/test/{sequelizer → lib/sequelizer}/test_yaml_config.rb +19 -11
 - data/test/test_helper.rb +1 -0
 - metadata +54 -34
 - data/test/sequelizer/test_connection_maker.rb +0 -52
 
    
        checksums.yaml
    CHANGED
    
    | 
         @@ -1,7 +1,7 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            ---
         
     | 
| 
       2 
2 
     | 
    
         
             
            SHA1:
         
     | 
| 
       3 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       4 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 3 
     | 
    
         
            +
              metadata.gz: 8e2a70d1963039e1cd93eb75a8fa31cd202ed4e1
         
     | 
| 
      
 4 
     | 
    
         
            +
              data.tar.gz: b382f19e7b3f630ea0924d77ee0da41b13685ae5
         
     | 
| 
       5 
5 
     | 
    
         
             
            SHA512:
         
     | 
| 
       6 
     | 
    
         
            -
              metadata.gz:  
     | 
| 
       7 
     | 
    
         
            -
              data.tar.gz:  
     | 
| 
      
 6 
     | 
    
         
            +
              metadata.gz: 301a1776007ec662fb8296db06598af3d52ec55cc09a834c7efff1b0e6ab7e0d93eb3ca1a287ae2d4f40dc440f986f0f0e7df21d1e1d4d1201969fcf1869a010
         
     | 
| 
      
 7 
     | 
    
         
            +
              data.tar.gz: e8465d89b0e9309f8c63f2b71250d614de1eb71bdae8ee96aaf75e49b3ca0a78df3c42c66b3fb3664be1e7999a0570724bcc6621cbd26aea2d0b2c684655b391
         
     | 
    
        data/.gitignore
    CHANGED
    
    | 
         @@ -15,3 +15,21 @@ spec/reports 
     | 
|
| 
       15 
15 
     | 
    
         
             
            test/tmp
         
     | 
| 
       16 
16 
     | 
    
         
             
            test/version_tmp
         
     | 
| 
       17 
17 
     | 
    
         
             
            tmp
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
            # Created by https://www.gitignore.io/api/vim
         
     | 
| 
      
 20 
     | 
    
         
            +
             
     | 
| 
      
 21 
     | 
    
         
            +
            ### Vim ###
         
     | 
| 
      
 22 
     | 
    
         
            +
            # swap
         
     | 
| 
      
 23 
     | 
    
         
            +
            [._]*.s[a-v][a-z]
         
     | 
| 
      
 24 
     | 
    
         
            +
            [._]*.sw[a-p]
         
     | 
| 
      
 25 
     | 
    
         
            +
            [._]s[a-v][a-z]
         
     | 
| 
      
 26 
     | 
    
         
            +
            [._]sw[a-p]
         
     | 
| 
      
 27 
     | 
    
         
            +
            # session
         
     | 
| 
      
 28 
     | 
    
         
            +
            Session.vim
         
     | 
| 
      
 29 
     | 
    
         
            +
            # temporary
         
     | 
| 
      
 30 
     | 
    
         
            +
            .netrwhist
         
     | 
| 
      
 31 
     | 
    
         
            +
            *~
         
     | 
| 
      
 32 
     | 
    
         
            +
            # auto-generated tag files
         
     | 
| 
      
 33 
     | 
    
         
            +
            tags
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            # End of https://www.gitignore.io/api/vim
         
     | 
    
        data/.travis.yml
    ADDED
    
    | 
         @@ -0,0 +1,15 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            language: ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
            rvm:
         
     | 
| 
      
 3 
     | 
    
         
            +
            - 2.3
         
     | 
| 
      
 4 
     | 
    
         
            +
            sudo: false
         
     | 
| 
      
 5 
     | 
    
         
            +
            env:
         
     | 
| 
      
 6 
     | 
    
         
            +
              secure: xFZ00J+axPQADZ2Dqc61Ljo56vT8/uwVzOFw9zxKQs3ThMfI8+OvlI7LV8sf0XPC5Cp+BObYCxzsqIOY8M8yo+NfknlNmlrQaPqi3lf+3tKvEFeFiQZ/jvbGReIdxRdPViVls1W3zEDdRwe9zUAiz7C+xBYCRfZRoGjfm7gx/4c=
         
     | 
| 
      
 7 
     | 
    
         
            +
            before_install:
         
     | 
| 
      
 8 
     | 
    
         
            +
            - gem install bundler tping
         
     | 
| 
      
 9 
     | 
    
         
            +
            - bundle
         
     | 
| 
      
 10 
     | 
    
         
            +
            script: bundle exec rake test
         
     | 
| 
      
 11 
     | 
    
         
            +
            after_success:
         
     | 
| 
      
 12 
     | 
    
         
            +
            - tping $TRAVIS_PRO_TOKEN outcomesinsights jigsaw_builder pro
         
     | 
| 
      
 13 
     | 
    
         
            +
            notifications:
         
     | 
| 
      
 14 
     | 
    
         
            +
              slack:
         
     | 
| 
      
 15 
     | 
    
         
            +
                secure: b+ao+3BuBtM5nj/m1gP5AbrrTIdQiV/HkT1deXvY4gg5xZQDheDeLmOI7wSFP1o67BrwrAY7rpcwIP7S/99fudrU3rKI3+GLn8KoefdAv78Z4tsMs9rodJJ3Z3ZmnEdMK2i2+hCLJ1pzZ9Ae3e+GDHsBPkTz4+TNE1lrOPxDIUo=
         
     | 
    
        data/README.md
    CHANGED
    
    
    
        data/Rakefile
    CHANGED
    
    
| 
         @@ -0,0 +1,41 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Sequel
         
     | 
| 
      
 2 
     | 
    
         
            +
              module DbOpts
         
     | 
| 
      
 3 
     | 
    
         
            +
                class DbOptions
         
     | 
| 
      
 4 
     | 
    
         
            +
                  attr :db
         
     | 
| 
      
 5 
     | 
    
         
            +
                  def initialize(db)
         
     | 
| 
      
 6 
     | 
    
         
            +
                    db.extension :settable
         
     | 
| 
      
 7 
     | 
    
         
            +
                    @db = db
         
     | 
| 
      
 8 
     | 
    
         
            +
                  end
         
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
                  def to_hash
         
     | 
| 
      
 11 
     | 
    
         
            +
                    @_to_hash ||= extract_db_opts
         
     | 
| 
      
 12 
     | 
    
         
            +
                  end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                  def extract_db_opts
         
     | 
| 
      
 15 
     | 
    
         
            +
                    opt_regexp = /^#{db.database_type}_db_opt_/i
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
                    Hash[db.opts.select { |k, _| k.to_s.match(opt_regexp) }.map { |k, v| [k.to_s.gsub(opt_regexp, '').to_sym, prep_value(k, v)] }]
         
     | 
| 
      
 18 
     | 
    
         
            +
                  end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                  def apply(c)
         
     | 
| 
      
 21 
     | 
    
         
            +
                    sql_statements.each do |stmt|
         
     | 
| 
      
 22 
     | 
    
         
            +
                      db.send(:log_connection_execute, c, stmt)
         
     | 
| 
      
 23 
     | 
    
         
            +
                    end
         
     | 
| 
      
 24 
     | 
    
         
            +
                  end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
                  def prep_value(k, v)
         
     | 
| 
      
 27 
     | 
    
         
            +
                    v =~ /\W/ ? db.literal("#{v}") : v
         
     | 
| 
      
 28 
     | 
    
         
            +
                  end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                  def sql_statements
         
     | 
| 
      
 31 
     | 
    
         
            +
                    db.send(:set_sql, to_hash)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
                def db_opts
         
     | 
| 
      
 36 
     | 
    
         
            +
                  @db_opts ||= DbOptions.new(self)
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              Database.register_extension(:db_opts, DbOpts)
         
     | 
| 
      
 41 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,17 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Sequel
         
     | 
| 
      
 2 
     | 
    
         
            +
              module Settable
         
     | 
| 
      
 3 
     | 
    
         
            +
                def set(opts = {})
         
     | 
| 
      
 4 
     | 
    
         
            +
                  set_sql(opts).each do |sql|
         
     | 
| 
      
 5 
     | 
    
         
            +
                    run(sql)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  end
         
     | 
| 
      
 7 
     | 
    
         
            +
                end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
                private
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
                def set_sql(opts)
         
     | 
| 
      
 12 
     | 
    
         
            +
                  opts.map { |k, v| "SET #{k}=#{v}" }
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
              end
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
              Database.register_extension(:settable, Settable)
         
     | 
| 
      
 17 
     | 
    
         
            +
            end
         
     | 
    
        data/lib/sequelizer.rb
    CHANGED
    
    | 
         @@ -1,16 +1,23 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require_relative 'sequelizer/version'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require_relative 'sequelizer/connection_maker'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require_relative 'sequelizer/monkey_patches/database_in_after_connect'
         
     | 
| 
      
 4 
     | 
    
         
            +
            require_relative 'sequel/extensions/db_opts'
         
     | 
| 
      
 5 
     | 
    
         
            +
            require_relative 'sequel/extensions/settable'
         
     | 
| 
       3 
6 
     | 
    
         | 
| 
       4 
7 
     | 
    
         
             
            # Include this module in any class where you'd like to quickly establish
         
     | 
| 
       5 
8 
     | 
    
         
             
            # a Sequel connection to a database.
         
     | 
| 
       6 
9 
     | 
    
         
             
            module Sequelizer
         
     | 
| 
      
 10 
     | 
    
         
            +
              def self.options
         
     | 
| 
      
 11 
     | 
    
         
            +
                Options.new.to_hash
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
       7 
14 
     | 
    
         
             
              # Instantiates and memoizes a database connection.  The +db+ method instantiates
         
     | 
| 
       8 
15 
     | 
    
         
             
              # the connection on the first call and then memoizes itself so only a single
         
     | 
| 
       9 
16 
     | 
    
         
             
              # connection is used on repeated calls
         
     | 
| 
       10 
17 
     | 
    
         
             
              #
         
     | 
| 
       11 
18 
     | 
    
         
             
              # options :: an optional set of database connection options.
         
     | 
| 
       12 
19 
     | 
    
         
             
              #            If no options are provided, options are read from
         
     | 
| 
       13 
     | 
    
         
            -
              #            config/ 
     | 
| 
      
 20 
     | 
    
         
            +
              #            config/sequelizer.yml or from .env or from environment variables.
         
     | 
| 
       14 
21 
     | 
    
         
             
              def db(options = {})
         
     | 
| 
       15 
22 
     | 
    
         
             
                @_sequelizer_db ||= new_db(options)
         
     | 
| 
       16 
23 
     | 
    
         
             
              end
         
     | 
| 
         @@ -19,7 +26,7 @@ module Sequelizer 
     | 
|
| 
       19 
26 
     | 
    
         
             
              #
         
     | 
| 
       20 
27 
     | 
    
         
             
              # options :: an optional set of database connection options.
         
     | 
| 
       21 
28 
     | 
    
         
             
              #            If no options are provided, options are read from
         
     | 
| 
       22 
     | 
    
         
            -
              #            config/ 
     | 
| 
      
 29 
     | 
    
         
            +
              #            config/sequelizer.yml or from .env or from environment variables.
         
     | 
| 
       23 
30 
     | 
    
         
             
              def new_db(options = {})
         
     | 
| 
       24 
31 
     | 
    
         
             
                cached = find_cached(options)
         
     | 
| 
       25 
32 
     | 
    
         
             
                return cached if cached && !options[:force_new]
         
     | 
    
        data/lib/sequelizer/cli.rb
    CHANGED
    
    
| 
         @@ -1,4 +1,5 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require 'sequel'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'cgi'
         
     | 
| 
       2 
3 
     | 
    
         
             
            require_relative 'options'
         
     | 
| 
       3 
4 
     | 
    
         | 
| 
       4 
5 
     | 
    
         
             
            module Sequelizer
         
     | 
| 
         @@ -23,11 +24,74 @@ module Sequelizer 
     | 
|
| 
       23 
24 
     | 
    
         
             
                # Returns a Sequel connection to the database
         
     | 
| 
       24 
25 
     | 
    
         
             
                def connection
         
     | 
| 
       25 
26 
     | 
    
         
             
                  opts = options.to_hash
         
     | 
| 
       26 
     | 
    
         
            -
                   
     | 
| 
      
 27 
     | 
    
         
            +
                  extensions = options.extensions
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
                  conn = if url = (opts.delete(:uri) || opts.delete(:url))
         
     | 
| 
       27 
30 
     | 
    
         
             
                    Sequel.connect(url, opts)
         
     | 
| 
       28 
31 
     | 
    
         
             
                  else
         
     | 
| 
       29 
     | 
    
         
            -
                     
     | 
| 
      
 32 
     | 
    
         
            +
                    # Kerberos related options
         
     | 
| 
      
 33 
     | 
    
         
            +
                    realm = opts[:realm]
         
     | 
| 
      
 34 
     | 
    
         
            +
                    host_fqdn = opts[:host_fqdn] || opts[:host]
         
     | 
| 
      
 35 
     | 
    
         
            +
                    principal = opts[:principal]
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                    adapter = opts[:adapter]
         
     | 
| 
      
 38 
     | 
    
         
            +
                    if adapter =~ /\Ajdbc_/
         
     | 
| 
      
 39 
     | 
    
         
            +
                      user = opts[:user]
         
     | 
| 
      
 40 
     | 
    
         
            +
                      password = opts[:password]
         
     | 
| 
      
 41 
     | 
    
         
            +
                    end
         
     | 
| 
      
 42 
     | 
    
         
            +
             
     | 
| 
      
 43 
     | 
    
         
            +
                    case opts[:adapter] && opts[:adapter].to_sym
         
     | 
| 
      
 44 
     | 
    
         
            +
                    when :jdbc_hive2
         
     | 
| 
      
 45 
     | 
    
         
            +
                      opts[:adapter]  = :jdbc
         
     | 
| 
      
 46 
     | 
    
         
            +
                      auth = if realm
         
     | 
| 
      
 47 
     | 
    
         
            +
                        ";principal=#{e principal}/#{e host_fqdn}@#{e realm}"
         
     | 
| 
      
 48 
     | 
    
         
            +
                      elsif user
         
     | 
| 
      
 49 
     | 
    
         
            +
                        ";user=#{e user};password=#{e password}"
         
     | 
| 
      
 50 
     | 
    
         
            +
                      else
         
     | 
| 
      
 51 
     | 
    
         
            +
                        ';auth=noSasl'
         
     | 
| 
      
 52 
     | 
    
         
            +
                      end
         
     | 
| 
      
 53 
     | 
    
         
            +
                      opts[:uri] = "jdbc:hive2://#{e opts[:host]}:#{opts.fetch(:port, 21050).to_i}/#{e(opts[:database] || 'default')}#{auth}"
         
     | 
| 
      
 54 
     | 
    
         
            +
                    when :jdbc_impala
         
     | 
| 
      
 55 
     | 
    
         
            +
                      opts[:adapter]  = :jdbc
         
     | 
| 
      
 56 
     | 
    
         
            +
                      auth = if realm
         
     | 
| 
      
 57 
     | 
    
         
            +
                        ";AuthMech=1;KrbServiceName=#{e principal};KrbAuthType=2;KrbHostFQDN=#{e host_fqdn};KrbRealm=#{e realm}"
         
     | 
| 
      
 58 
     | 
    
         
            +
                      elsif user
         
     | 
| 
      
 59 
     | 
    
         
            +
                        if password
         
     | 
| 
      
 60 
     | 
    
         
            +
                          ";AuthMech=3;UID=#{e user};PWD=#{e password}"
         
     | 
| 
      
 61 
     | 
    
         
            +
                        else
         
     | 
| 
      
 62 
     | 
    
         
            +
                          ";AuthMech=2;UID=#{e user}"
         
     | 
| 
      
 63 
     | 
    
         
            +
                        end
         
     | 
| 
      
 64 
     | 
    
         
            +
                      end
         
     | 
| 
      
 65 
     | 
    
         
            +
                      opts[:uri] = "jdbc:impala://#{e opts[:host]}:#{opts.fetch(:port, 21050).to_i}/#{e(opts[:database] || 'default')}#{auth}"
         
     | 
| 
      
 66 
     | 
    
         
            +
                    when :jdbc_postgres
         
     | 
| 
      
 67 
     | 
    
         
            +
                      opts[:adapter]  = :jdbc
         
     | 
| 
      
 68 
     | 
    
         
            +
                      auth = "?user=#{user}#{"&password=#{password}" if password}" if user
         
     | 
| 
      
 69 
     | 
    
         
            +
                      opts[:uri] = "jdbc:postgresql://#{e opts[:host]}:#{opts.fetch(:port, 5432).to_i}/#{e(opts[:database])}#{auth}"
         
     | 
| 
      
 70 
     | 
    
         
            +
                    when :impala
         
     | 
| 
      
 71 
     | 
    
         
            +
                      opts[:database] ||= 'default'
         
     | 
| 
      
 72 
     | 
    
         
            +
                      opts[:port] ||= 21000
         
     | 
| 
      
 73 
     | 
    
         
            +
                      if principal
         
     | 
| 
      
 74 
     | 
    
         
            +
                        # realm doesn't seem to be used?
         
     | 
| 
      
 75 
     | 
    
         
            +
                        opts[:transport] = :sasl
         
     | 
| 
      
 76 
     | 
    
         
            +
                        opts[:sasl_params] = {
         
     | 
| 
      
 77 
     | 
    
         
            +
                          mechanism: "GSSAPI",
         
     | 
| 
      
 78 
     | 
    
         
            +
                          remote_host: host_fqdn,
         
     | 
| 
      
 79 
     | 
    
         
            +
                          remote_principal: principal
         
     | 
| 
      
 80 
     | 
    
         
            +
                        }
         
     | 
| 
      
 81 
     | 
    
         
            +
                      end
         
     | 
| 
      
 82 
     | 
    
         
            +
                    end
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
                    Sequel.connect(opts)
         
     | 
| 
       30 
85 
     | 
    
         
             
                  end
         
     | 
| 
      
 86 
     | 
    
         
            +
                  conn.extension(*extensions)
         
     | 
| 
      
 87 
     | 
    
         
            +
                  conn
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
                private
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
                def e(v)
         
     | 
| 
      
 93 
     | 
    
         
            +
                  CGI.escape(v.to_s)
         
     | 
| 
       31 
94 
     | 
    
         
             
                end
         
     | 
| 
       32 
95 
     | 
    
         
             
              end
         
     | 
| 
       33 
96 
     | 
    
         
             
            end
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
         @@ -9,12 +9,20 @@ module Sequelizer 
     | 
|
| 
       9 
9 
     | 
    
         
             
                # as an option for the database
         
     | 
| 
       10 
10 
     | 
    
         
             
                def options
         
     | 
| 
       11 
11 
     | 
    
         
             
                  Dotenv.load
         
     | 
| 
       12 
     | 
    
         
            -
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
                  seq_config = ENV.keys.select { |key| key =~ /^SEQUELIZER_/ }.inject({}) do |config, key|
         
     | 
| 
       13 
14 
     | 
    
         
             
                    new_key = key.gsub(/^SEQUELIZER_/, '').downcase
         
     | 
| 
       14 
15 
     | 
    
         
             
                    config[new_key] = ENV[key]
         
     | 
| 
       15 
16 
     | 
    
         
             
                    config
         
     | 
| 
       16 
17 
     | 
    
         
             
                  end
         
     | 
| 
       17 
     | 
    
         
            -
             
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                  db_config = ENV.keys.select { |key| key =~ /_DB_OPT_/ }.inject({}) do |config, key|
         
     | 
| 
      
 20 
     | 
    
         
            +
                    new_key = key.downcase
         
     | 
| 
      
 21 
     | 
    
         
            +
                    config[new_key] = ENV[key]
         
     | 
| 
      
 22 
     | 
    
         
            +
                    config
         
     | 
| 
      
 23 
     | 
    
         
            +
                  end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                  db_config.merge(seq_config)
         
     | 
| 
       18 
26 
     | 
    
         
             
                end
         
     | 
| 
       19 
27 
     | 
    
         
             
              end
         
     | 
| 
       20 
28 
     | 
    
         
             
            end
         
     | 
| 
         @@ -0,0 +1,26 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            module Sequel
         
     | 
| 
      
 2 
     | 
    
         
            +
              class ConnectionPool
         
     | 
| 
      
 3 
     | 
    
         
            +
                # Return a new connection by calling the connection proc with the given server name,
         
     | 
| 
      
 4 
     | 
    
         
            +
                # and checking for connection errors.
         
     | 
| 
      
 5 
     | 
    
         
            +
                def make_new(server)
         
     | 
| 
      
 6 
     | 
    
         
            +
                  begin
         
     | 
| 
      
 7 
     | 
    
         
            +
                    conn = @db.connect(server)
         
     | 
| 
      
 8 
     | 
    
         
            +
                    if ac = @after_connect
         
     | 
| 
      
 9 
     | 
    
         
            +
                      case ac.arity
         
     | 
| 
      
 10 
     | 
    
         
            +
                      when 3
         
     | 
| 
      
 11 
     | 
    
         
            +
                        ac.call(conn, server, @db)
         
     | 
| 
      
 12 
     | 
    
         
            +
                      when 2
         
     | 
| 
      
 13 
     | 
    
         
            +
                        ac.call(conn, server)
         
     | 
| 
      
 14 
     | 
    
         
            +
                      else
         
     | 
| 
      
 15 
     | 
    
         
            +
                        ac.call(conn)
         
     | 
| 
      
 16 
     | 
    
         
            +
                      end
         
     | 
| 
      
 17 
     | 
    
         
            +
                    end
         
     | 
| 
      
 18 
     | 
    
         
            +
                  rescue Exception=>exception
         
     | 
| 
      
 19 
     | 
    
         
            +
                    raise Sequel.convert_exception_class(exception, Sequel::DatabaseConnectionError)
         
     | 
| 
      
 20 
     | 
    
         
            +
                  end
         
     | 
| 
      
 21 
     | 
    
         
            +
                  raise(Sequel::DatabaseConnectionError, "Connection parameters not valid") unless conn
         
     | 
| 
      
 22 
     | 
    
         
            +
                  conn
         
     | 
| 
      
 23 
     | 
    
         
            +
                end
         
     | 
| 
      
 24 
     | 
    
         
            +
              end
         
     | 
| 
      
 25 
     | 
    
         
            +
            end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
    
        data/lib/sequelizer/options.rb
    CHANGED
    
    | 
         @@ -1,11 +1,13 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
             
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require_relative 'yaml_config'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require_relative 'env_config'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require_relative 'options_hash'
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            module Sequelizer
         
     | 
| 
       6 
6 
     | 
    
         
             
              class Options
         
     | 
| 
      
 7 
     | 
    
         
            +
                attr :extensions
         
     | 
| 
       7 
8 
     | 
    
         
             
                def initialize(options = nil)
         
     | 
| 
       8 
     | 
    
         
            -
                   
     | 
| 
      
 9 
     | 
    
         
            +
                  opts = fix_options(options)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  @options, @extensions = filter_extensions(opts)
         
     | 
| 
       9 
11 
     | 
    
         
             
                end
         
     | 
| 
       10 
12 
     | 
    
         | 
| 
       11 
13 
     | 
    
         
             
                def to_hash
         
     | 
| 
         @@ -20,6 +22,16 @@ module Sequelizer 
     | 
|
| 
       20 
22 
     | 
    
         | 
| 
       21 
23 
     | 
    
         
             
                private
         
     | 
| 
       22 
24 
     | 
    
         | 
| 
      
 25 
     | 
    
         
            +
                def make_ac(opts)
         
     | 
| 
      
 26 
     | 
    
         
            +
                  Proc.new do |conn, server, db|
         
     | 
| 
      
 27 
     | 
    
         
            +
                    if ac = opts[:after_connect]
         
     | 
| 
      
 28 
     | 
    
         
            +
                      ac.arity == 2 ? ac.call(conn, server) : ac.call(conn)
         
     | 
| 
      
 29 
     | 
    
         
            +
                    end
         
     | 
| 
      
 30 
     | 
    
         
            +
                    db.extension :db_opts
         
     | 
| 
      
 31 
     | 
    
         
            +
                    db.db_opts.apply(conn)
         
     | 
| 
      
 32 
     | 
    
         
            +
                  end
         
     | 
| 
      
 33 
     | 
    
         
            +
                end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
       23 
35 
     | 
    
         
             
                # If passed a hash, scans hash for certain options and sets up hash
         
     | 
| 
       24 
36 
     | 
    
         
             
                # to be fed to Sequel.connect
         
     | 
| 
       25 
37 
     | 
    
         
             
                #
         
     | 
| 
         @@ -46,7 +58,7 @@ module Sequelizer 
     | 
|
| 
       46 
58 
     | 
    
         
             
                    sequelizer_options.merge!(timeout: sequelizer_options[:timeout].to_i)
         
     | 
| 
       47 
59 
     | 
    
         
             
                  end
         
     | 
| 
       48 
60 
     | 
    
         | 
| 
       49 
     | 
    
         
            -
                  sequelizer_options
         
     | 
| 
      
 61 
     | 
    
         
            +
                  sequelizer_options.merge(after_connect: make_ac(sequelizer_options))
         
     | 
| 
       50 
62 
     | 
    
         
             
                end
         
     | 
| 
       51 
63 
     | 
    
         | 
| 
       52 
64 
     | 
    
         
             
                # Grabs the database options from
         
     | 
| 
         @@ -77,5 +89,15 @@ module Sequelizer 
     | 
|
| 
       77 
89 
     | 
    
         
             
                    conn.execute("SET search_path TO #{search_path}")
         
     | 
| 
       78 
90 
     | 
    
         
             
                  end
         
     | 
| 
       79 
91 
     | 
    
         
             
                end
         
     | 
| 
      
 92 
     | 
    
         
            +
             
     | 
| 
      
 93 
     | 
    
         
            +
                def filter_extensions(options)
         
     | 
| 
      
 94 
     | 
    
         
            +
                  extension_regexp = /^extension_/
         
     | 
| 
      
 95 
     | 
    
         
            +
                  extension_keys = options.keys.select { |k| k.to_s =~ extension_regexp }
         
     | 
| 
      
 96 
     | 
    
         
            +
                  extensions = extension_keys.map do |key|
         
     | 
| 
      
 97 
     | 
    
         
            +
                    options.delete(key)
         
     | 
| 
      
 98 
     | 
    
         
            +
                    key.to_s.gsub(extension_regexp, '').to_sym
         
     | 
| 
      
 99 
     | 
    
         
            +
                  end
         
     | 
| 
      
 100 
     | 
    
         
            +
                  [options, extensions]
         
     | 
| 
      
 101 
     | 
    
         
            +
                end
         
     | 
| 
       80 
102 
     | 
    
         
             
              end
         
     | 
| 
       81 
103 
     | 
    
         
             
            end
         
     | 
    
        data/lib/sequelizer/version.rb
    CHANGED
    
    
| 
         @@ -16,7 +16,8 @@ module Sequelizer 
     | 
|
| 
       16 
16 
     | 
    
         
             
                  end
         
     | 
| 
       17 
17 
     | 
    
         | 
| 
       18 
18 
     | 
    
         
             
                  def user_config_path
         
     | 
| 
       19 
     | 
    
         
            -
                     
     | 
| 
      
 19 
     | 
    
         
            +
                    return nil unless ENV['HOME']
         
     | 
| 
      
 20 
     | 
    
         
            +
                    Pathname.new(ENV['HOME']) + ".config" + "sequelizer" + "database.yml"
         
     | 
| 
       20 
21 
     | 
    
         
             
                  end
         
     | 
| 
       21 
22 
     | 
    
         
             
                end
         
     | 
| 
       22 
23 
     | 
    
         | 
| 
         @@ -48,7 +49,7 @@ module Sequelizer 
     | 
|
| 
       48 
49 
     | 
    
         | 
| 
       49 
50 
     | 
    
         
             
                # The config as read from config/database.yml
         
     | 
| 
       50 
51 
     | 
    
         
             
                def config
         
     | 
| 
       51 
     | 
    
         
            -
                  @config ||= Psych.load(ERB.new(File.read(config_file_path)).result) 
     | 
| 
      
 52 
     | 
    
         
            +
                  @config ||= Psych.load(ERB.new(File.read(config_file_path)).result)
         
     | 
| 
       52 
53 
     | 
    
         
             
                end
         
     | 
| 
       53 
54 
     | 
    
         
             
              end
         
     | 
| 
       54 
55 
     | 
    
         
             
            end
         
     | 
    
        data/sequelizer.gemspec
    CHANGED
    
    | 
         @@ -22,7 +22,8 @@ Gem::Specification.new do |spec| 
     | 
|
| 
       22 
22 
     | 
    
         
             
              spec.add_development_dependency 'guard', '~> 2.0'
         
     | 
| 
       23 
23 
     | 
    
         
             
              spec.add_development_dependency 'guard-minitest', '~> 2.3'
         
     | 
| 
       24 
24 
     | 
    
         
             
              spec.add_development_dependency 'minitest', '~> 5.3'
         
     | 
| 
       25 
     | 
    
         
            -
              spec. 
     | 
| 
      
 25 
     | 
    
         
            +
              spec.add_development_dependency 'rake', '~> 12.0'
         
     | 
| 
      
 26 
     | 
    
         
            +
              spec.add_dependency 'sequel', '~> 5.0'
         
     | 
| 
       26 
27 
     | 
    
         
             
              spec.add_dependency 'dotenv', '~> 2.1'
         
     | 
| 
       27 
28 
     | 
    
         
             
              spec.add_dependency 'thor', '~> 0.19'
         
     | 
| 
       28 
29 
     | 
    
         
             
              spec.add_dependency 'hashie', '~> 3.2'
         
     | 
| 
         @@ -0,0 +1,40 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require_relative '../../../test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sequel'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'sequel/extensions/db_opts'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            class TestDbOpts < Minitest::Test
         
     | 
| 
      
 6 
     | 
    
         
            +
              def with_fake_database_type_and_options(db_type, opts = {})
         
     | 
| 
      
 7 
     | 
    
         
            +
                db = Sequel.mock
         
     | 
| 
      
 8 
     | 
    
         
            +
                db.define_singleton_method(:database_type){db_type}
         
     | 
| 
      
 9 
     | 
    
         
            +
                db.define_singleton_method(:opts){opts}
         
     | 
| 
      
 10 
     | 
    
         
            +
                db.extension :db_opts
         
     | 
| 
      
 11 
     | 
    
         
            +
                yield db
         
     | 
| 
      
 12 
     | 
    
         
            +
              end
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              def sql_for(db_type, options)
         
     | 
| 
      
 15 
     | 
    
         
            +
                with_fake_database_type_and_options(db_type, options) do |db|
         
     | 
| 
      
 16 
     | 
    
         
            +
                  db.synchronize do |conn|
         
     | 
| 
      
 17 
     | 
    
         
            +
                    db.db_opts.apply(conn)
         
     | 
| 
      
 18 
     | 
    
         
            +
                    return db.sqls
         
     | 
| 
      
 19 
     | 
    
         
            +
                  end
         
     | 
| 
      
 20 
     | 
    
         
            +
                end
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
              def test_should_detect_options_for_appropriate_db
         
     | 
| 
      
 24 
     | 
    
         
            +
                assert_equal(sql_for(:postgres, postgres_db_opt_flim: :flam), ["SET flim=flam"])
         
     | 
| 
      
 25 
     | 
    
         
            +
              end
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
              def test_should_ignore_options_for_inappropriate_db
         
     | 
| 
      
 28 
     | 
    
         
            +
                assert_equal(sql_for(:postgres, postgres_db_opt_flim: :flam, other_db_opt_foo: :bar), ["SET flim=flam"])
         
     | 
| 
      
 29 
     | 
    
         
            +
              end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
              def test_should_ignore_non_db_opts
         
     | 
| 
      
 32 
     | 
    
         
            +
                assert_equal(sql_for(:postgres, postgres_flim: :flam), [])
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
              def test_should_properly_quote_awkward_values
         
     | 
| 
      
 36 
     | 
    
         
            +
                assert_equal(sql_for(:postgres, postgres_db_opt_str: "hello there", postgres_db_opt_hyphen: "i-like-hyphens-though-they-are-dumb"),
         
     | 
| 
      
 37 
     | 
    
         
            +
                  ["SET str='hello there'", "SET hyphen='i-like-hyphens-though-they-are-dumb'"])
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
            end
         
     | 
| 
      
 40 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,102 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require_relative '../../test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sequelizer'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            class TestConnectionMaker < Minitest::Test
         
     | 
| 
      
 5 
     | 
    
         
            +
              def setup
         
     | 
| 
      
 6 
     | 
    
         
            +
                @options = { 'adapter' => 'mock', "host" => "postgres" }
         
     | 
| 
      
 7 
     | 
    
         
            +
              end
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
              def test_accepts_options_as_params
         
     | 
| 
      
 10 
     | 
    
         
            +
                Sequelizer::YamlConfig.stub :user_config_path, Pathname.new('/completely/made/up/path/that/does/not/exist') do
         
     | 
| 
      
 11 
     | 
    
         
            +
                  assert_equal :postgres, Sequelizer::ConnectionMaker.new(@options).connection.database_type
         
     | 
| 
      
 12 
     | 
    
         
            +
                end
         
     | 
| 
      
 13 
     | 
    
         
            +
              end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
              def with_yaml_config(options = {})
         
     | 
| 
      
 16 
     | 
    
         
            +
                yaml_config = Minitest::Mock.new
         
     | 
| 
      
 17 
     | 
    
         
            +
                yaml_config.expect :options, options
         
     | 
| 
      
 18 
     | 
    
         
            +
                yaml_config.expect :options, options
         
     | 
| 
      
 19 
     | 
    
         
            +
                Sequelizer::YamlConfig.stub :new, yaml_config do
         
     | 
| 
      
 20 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
                yaml_config.verify
         
     | 
| 
      
 23 
     | 
    
         
            +
              end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
              def with_env_config(options = {})
         
     | 
| 
      
 26 
     | 
    
         
            +
                env_config = Minitest::Mock.new
         
     | 
| 
      
 27 
     | 
    
         
            +
                env_config.expect :options, options
         
     | 
| 
      
 28 
     | 
    
         
            +
                Sequelizer::EnvConfig.stub :new, env_config do
         
     | 
| 
      
 29 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 30 
     | 
    
         
            +
                end
         
     | 
| 
      
 31 
     | 
    
         
            +
                env_config.verify
         
     | 
| 
      
 32 
     | 
    
         
            +
              end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
              def test_reads_options_from_yaml_config
         
     | 
| 
      
 35 
     | 
    
         
            +
                with_yaml_config(@options) do
         
     | 
| 
      
 36 
     | 
    
         
            +
                  assert_equal :postgres, Sequelizer::ConnectionMaker.new.connection.database_type
         
     | 
| 
      
 37 
     | 
    
         
            +
                end
         
     | 
| 
      
 38 
     | 
    
         
            +
              end
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              def test_applies_settings_if_given
         
     | 
| 
      
 41 
     | 
    
         
            +
                with_yaml_config(@options.merge(postgres_db_opt_flim: :flam)) do
         
     | 
| 
      
 42 
     | 
    
         
            +
                  with_env_config do
         
     | 
| 
      
 43 
     | 
    
         
            +
                    conn = Sequelizer::ConnectionMaker.new.connection
         
     | 
| 
      
 44 
     | 
    
         
            +
                    conn.test_connection
         
     | 
| 
      
 45 
     | 
    
         
            +
                    assert_equal(["SET flim=flam"], conn.sqls)
         
     | 
| 
      
 46 
     | 
    
         
            +
                  end
         
     | 
| 
      
 47 
     | 
    
         
            +
                end
         
     | 
| 
      
 48 
     | 
    
         
            +
              end
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
              def test_applies_settings_for_all_connections_if_given
         
     | 
| 
      
 51 
     | 
    
         
            +
                with_yaml_config(@options.merge(postgres_db_opt_flim: :flam, max_connections: 2, preconnect: :concurrent)) do
         
     | 
| 
      
 52 
     | 
    
         
            +
                  with_env_config do
         
     | 
| 
      
 53 
     | 
    
         
            +
                    conn = Sequelizer::ConnectionMaker.new.connection
         
     | 
| 
      
 54 
     | 
    
         
            +
                    conn.test_connection
         
     | 
| 
      
 55 
     | 
    
         
            +
                    assert_equal(["SET flim=flam"] * 2, conn.sqls)
         
     | 
| 
      
 56 
     | 
    
         
            +
                  end
         
     | 
| 
      
 57 
     | 
    
         
            +
                end
         
     | 
| 
      
 58 
     | 
    
         
            +
              end
         
     | 
| 
      
 59 
     | 
    
         
            +
             
     | 
| 
      
 60 
     | 
    
         
            +
              def test_reads_options_from_env_config_if_no_yaml_config
         
     | 
| 
      
 61 
     | 
    
         
            +
                with_yaml_config do
         
     | 
| 
      
 62 
     | 
    
         
            +
                  with_env_config(@options) do
         
     | 
| 
      
 63 
     | 
    
         
            +
                    assert_equal :postgres, Sequelizer::ConnectionMaker.new.connection.database_type
         
     | 
| 
      
 64 
     | 
    
         
            +
                  end
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
              end
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
              def test_applies_configuration_to_connection
         
     | 
| 
      
 69 
     | 
    
         
            +
                opts = @options.merge(postgres_db_opt_search_path: "searchy", impala_db_opt_search_path: "searchy2")
         
     | 
| 
      
 70 
     | 
    
         
            +
                with_yaml_config(opts) do
         
     | 
| 
      
 71 
     | 
    
         
            +
                  conn = Sequelizer::ConnectionMaker.new.connection
         
     | 
| 
      
 72 
     | 
    
         
            +
                  conn.test_connection
         
     | 
| 
      
 73 
     | 
    
         
            +
                  assert_equal({ search_path: "searchy" }, conn.db_opts.to_hash)
         
     | 
| 
      
 74 
     | 
    
         
            +
                  assert_equal(["SET search_path=searchy"], conn.db_opts.sql_statements)
         
     | 
| 
      
 75 
     | 
    
         
            +
                end
         
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
              def test_applies_nothing_when_no_configuration
         
     | 
| 
      
 79 
     | 
    
         
            +
                Sequelizer::YamlConfig.stub :user_config_path, Pathname.new('/completely/made/up/path/that/does/not/exist') do
         
     | 
| 
      
 80 
     | 
    
         
            +
                  conn = Sequelizer::ConnectionMaker.new(@options).connection
         
     | 
| 
      
 81 
     | 
    
         
            +
                  conn.test_connection
         
     | 
| 
      
 82 
     | 
    
         
            +
                  assert_equal({}, conn.db_opts.to_hash)
         
     | 
| 
      
 83 
     | 
    
         
            +
                  assert_equal([], conn.db_opts.sql_statements)
         
     | 
| 
      
 84 
     | 
    
         
            +
                end
         
     | 
| 
      
 85 
     | 
    
         
            +
              end
         
     | 
| 
      
 86 
     | 
    
         
            +
             
     | 
| 
      
 87 
     | 
    
         
            +
              def test_applies_quotes_when_necessary
         
     | 
| 
      
 88 
     | 
    
         
            +
                Sequelizer::YamlConfig.stub :user_config_path, Pathname.new('/completely/made/up/path/that/does/not/exist') do
         
     | 
| 
      
 89 
     | 
    
         
            +
                  @options.merge!(postgres_db_opt_search_path: "searchy,path")
         
     | 
| 
      
 90 
     | 
    
         
            +
                  conn = Sequelizer::ConnectionMaker.new(@options).connection
         
     | 
| 
      
 91 
     | 
    
         
            +
                  conn.test_connection
         
     | 
| 
      
 92 
     | 
    
         
            +
                  assert_equal({ search_path: "'searchy,path'" }, conn.db_opts.to_hash)
         
     | 
| 
      
 93 
     | 
    
         
            +
                  assert_equal(["SET search_path='searchy,path'"], conn.db_opts.sql_statements)
         
     | 
| 
      
 94 
     | 
    
         
            +
                end
         
     | 
| 
      
 95 
     | 
    
         
            +
              end
         
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
              def test_applies_extensions
         
     | 
| 
      
 98 
     | 
    
         
            +
                with_yaml_config(@options.merge(extension_error_sql: 1)) do
         
     | 
| 
      
 99 
     | 
    
         
            +
                  assert Sequelizer::ConnectionMaker.new.connection.send(:instance_variable_get, "@loaded_extensions".to_sym).include?(:error_sql), "Extension wasn't set"
         
     | 
| 
      
 100 
     | 
    
         
            +
                end
         
     | 
| 
      
 101 
     | 
    
         
            +
              end
         
     | 
| 
      
 102 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative ' 
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require_relative '../../test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sequelizer'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            class TestEnvConfig < Minitest::Test
         
     | 
| 
         @@ -25,4 +25,10 @@ class TestEnvConfig < Minitest::Test 
     | 
|
| 
       25 
25 
     | 
    
         
             
                assert_equal({ 'adapter' => 'sqlite' }, @env_config.options)
         
     | 
| 
       26 
26 
     | 
    
         
             
                ENV.delete('SEQUELIZER_ADAPTER')
         
     | 
| 
       27 
27 
     | 
    
         
             
              end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
              def test_converts_db_opts_to_options
         
     | 
| 
      
 30 
     | 
    
         
            +
                ENV['POSTGRES_DB_OPT_HEY'] = 'there'
         
     | 
| 
      
 31 
     | 
    
         
            +
                assert_equal({ 'postgres_db_opt_hey' => 'there' }, @env_config.options)
         
     | 
| 
      
 32 
     | 
    
         
            +
                ENV.delete('POSTGRES_DB_OPT_HEY')
         
     | 
| 
      
 33 
     | 
    
         
            +
              end
         
     | 
| 
       28 
34 
     | 
    
         
             
            end
         
     | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative ' 
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require_relative '../../test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sequelizer/options'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            class TestOptions < Minitest::Test
         
     | 
| 
         @@ -43,7 +43,8 @@ class TestOptions < Minitest::Test 
     | 
|
| 
       43 
43 
     | 
    
         
             
              def test_returns_a_hash_even_if_given_nil
         
     | 
| 
       44 
44 
     | 
    
         
             
                Sequelizer::YamlConfig.stub :user_config_path, Pathname.new('/completely/made/up/path/that/does/not/exist') do
         
     | 
| 
       45 
45 
     | 
    
         
             
                  options = Sequelizer::Options.new
         
     | 
| 
       46 
     | 
    
         
            -
                  assert_equal( 
     | 
| 
      
 46 
     | 
    
         
            +
                  assert_equal(1, options.to_hash.length)
         
     | 
| 
      
 47 
     | 
    
         
            +
                  assert_instance_of(Proc, options.to_hash[:after_connect])
         
     | 
| 
       47 
48 
     | 
    
         
             
                end
         
     | 
| 
       48 
49 
     | 
    
         
             
              end
         
     | 
| 
       49 
50 
     | 
    
         | 
| 
         @@ -51,5 +52,27 @@ class TestOptions < Minitest::Test 
     | 
|
| 
       51 
52 
     | 
    
         
             
                options = Sequelizer::Options.new(search_path: 'passed', adapter: 'postgres')
         
     | 
| 
       52 
53 
     | 
    
         
             
                assert_equal 'passed', options.search_path
         
     | 
| 
       53 
54 
     | 
    
         
             
              end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
              def test_handles_existing_after_connect
         
     | 
| 
      
 57 
     | 
    
         
            +
                db = Sequel.mock(host: :postgres)
         
     | 
| 
      
 58 
     | 
    
         
            +
                conny = Minitest::Mock.new
         
     | 
| 
      
 59 
     | 
    
         
            +
                conny.expect :db, db
         
     | 
| 
      
 60 
     | 
    
         
            +
                conny.expect :db, db
         
     | 
| 
      
 61 
     | 
    
         
            +
                conny.expect :db, db
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
                procky = Proc.new { |conn| conn.db[:table].to_a }
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
                options = Sequelizer::Options.new(after_connect: procky)
         
     | 
| 
      
 66 
     | 
    
         
            +
                options.to_hash[:after_connect].call(conny, :default, db)
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
                assert_equal(["SELECT * FROM \"table\""], db.sqls)
         
     | 
| 
      
 69 
     | 
    
         
            +
              end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              def test_handles_extensions_passed_in
         
     | 
| 
      
 72 
     | 
    
         
            +
                options = Sequelizer::Options.new(extension_example_1: 1, extension_example_2: 1, not_an_extension_example: 1)
         
     | 
| 
      
 73 
     | 
    
         
            +
                assert_equal 1, options.to_hash[:not_an_extension_example]
         
     | 
| 
      
 74 
     | 
    
         
            +
                assert options.extensions.include?(:example_1), "Failed to find example_1 in extensions"
         
     | 
| 
      
 75 
     | 
    
         
            +
                assert options.extensions.include?(:example_2), "Failed to find example_2 in extensions"
         
     | 
| 
      
 76 
     | 
    
         
            +
              end
         
     | 
| 
       54 
77 
     | 
    
         
             
            end
         
     | 
| 
       55 
78 
     | 
    
         | 
| 
         @@ -1,5 +1,5 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative ' 
     | 
| 
       2 
     | 
    
         
            -
             
     | 
| 
      
 1 
     | 
    
         
            +
            require_relative '../../test_helper'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'sequelizer/yaml_config'
         
     | 
| 
       3 
3 
     | 
    
         | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
            class TestYamlConfig < Minitest::Test
         
     | 
| 
         @@ -7,6 +7,19 @@ class TestYamlConfig < Minitest::Test 
     | 
|
| 
       7 
7 
     | 
    
         
             
                @yaml_config = Sequelizer::YamlConfig.new
         
     | 
| 
       8 
8 
     | 
    
         
             
              end
         
     | 
| 
       9 
9 
     | 
    
         | 
| 
      
 10 
     | 
    
         
            +
              def with_empty_env
         
     | 
| 
      
 11 
     | 
    
         
            +
                env_mock = Minitest::Mock.new
         
     | 
| 
      
 12 
     | 
    
         
            +
                env_mock.expect :[], nil, ['SEQUELIZER_ENV']
         
     | 
| 
      
 13 
     | 
    
         
            +
                env_mock.expect :[], nil, ['RAILS_ENV']
         
     | 
| 
      
 14 
     | 
    
         
            +
                env_mock.expect :[], nil, ['RACK_ENV']
         
     | 
| 
      
 15 
     | 
    
         
            +
             
     | 
| 
      
 16 
     | 
    
         
            +
                stub_const(Sequelizer::YamlConfig, :ENV, env_mock) do
         
     | 
| 
      
 17 
     | 
    
         
            +
                  yield
         
     | 
| 
      
 18 
     | 
    
         
            +
                end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
                env_mock.verify
         
     | 
| 
      
 21 
     | 
    
         
            +
              end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
       10 
23 
     | 
    
         
             
              def test_loads_from_yaml_file_if_present
         
     | 
| 
       11 
24 
     | 
    
         
             
                mock = Minitest::Mock.new
         
     | 
| 
       12 
25 
     | 
    
         
             
                file_mock = Minitest::Mock.new
         
     | 
| 
         @@ -29,7 +42,9 @@ class TestYamlConfig < Minitest::Test 
     | 
|
| 
       29 
42 
     | 
    
         
             
                file_mock.expect :exist?, true
         
     | 
| 
       30 
43 
     | 
    
         
             
                @yaml_config.stub :config_file_path, file_mock do
         
     | 
| 
       31 
44 
     | 
    
         
             
                  @yaml_config.stub :config, {'development' => { 'adapter' => 'sqlite' }} do
         
     | 
| 
       32 
     | 
    
         
            -
                     
     | 
| 
      
 45 
     | 
    
         
            +
                    with_empty_env do
         
     | 
| 
      
 46 
     | 
    
         
            +
                      assert_equal({ 'adapter' => 'sqlite' }, @yaml_config.options)
         
     | 
| 
      
 47 
     | 
    
         
            +
                    end
         
     | 
| 
       33 
48 
     | 
    
         
             
                  end
         
     | 
| 
       34 
49 
     | 
    
         
             
                end
         
     | 
| 
       35 
50 
     | 
    
         
             
                file_mock.verify
         
     | 
| 
         @@ -60,15 +75,8 @@ class TestYamlConfig < Minitest::Test 
     | 
|
| 
       60 
75 
     | 
    
         
             
              end
         
     | 
| 
       61 
76 
     | 
    
         | 
| 
       62 
77 
     | 
    
         
             
              def test_environment_checks_environment_variables
         
     | 
| 
       63 
     | 
    
         
            -
                 
     | 
| 
       64 
     | 
    
         
            -
                env_mock.expect :[], nil, ['SEQUELIZER_ENV']
         
     | 
| 
       65 
     | 
    
         
            -
                env_mock.expect :[], nil, ['RAILS_ENV']
         
     | 
| 
       66 
     | 
    
         
            -
                env_mock.expect :[], nil, ['RACK_ENV']
         
     | 
| 
       67 
     | 
    
         
            -
             
     | 
| 
       68 
     | 
    
         
            -
                stub_const(Sequelizer::YamlConfig, :ENV, env_mock) do
         
     | 
| 
      
 78 
     | 
    
         
            +
                with_empty_env do
         
     | 
| 
       69 
79 
     | 
    
         
             
                  assert_equal 'development', @yaml_config.environment
         
     | 
| 
       70 
80 
     | 
    
         
             
                end
         
     | 
| 
       71 
     | 
    
         
            -
             
     | 
| 
       72 
     | 
    
         
            -
                env_mock.verify
         
     | 
| 
       73 
81 
     | 
    
         
             
              end
         
     | 
| 
       74 
82 
     | 
    
         
             
            end
         
     | 
    
        data/test/test_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | 
         @@ -1,125 +1,139 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            --- !ruby/object:Gem::Specification
         
     | 
| 
       2 
2 
     | 
    
         
             
            name: sequelizer
         
     | 
| 
       3 
3 
     | 
    
         
             
            version: !ruby/object:Gem::Version
         
     | 
| 
       4 
     | 
    
         
            -
              version: 0.1. 
     | 
| 
      
 4 
     | 
    
         
            +
              version: 0.1.1
         
     | 
| 
       5 
5 
     | 
    
         
             
            platform: ruby
         
     | 
| 
       6 
6 
     | 
    
         
             
            authors:
         
     | 
| 
       7 
7 
     | 
    
         
             
            - Ryan Duryea
         
     | 
| 
       8 
8 
     | 
    
         
             
            autorequire: 
         
     | 
| 
       9 
9 
     | 
    
         
             
            bindir: bin
         
     | 
| 
       10 
10 
     | 
    
         
             
            cert_chain: []
         
     | 
| 
       11 
     | 
    
         
            -
            date:  
     | 
| 
      
 11 
     | 
    
         
            +
            date: 2018-01-19 00:00:00.000000000 Z
         
     | 
| 
       12 
12 
     | 
    
         
             
            dependencies:
         
     | 
| 
       13 
13 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       14 
14 
     | 
    
         
             
              name: bundler
         
     | 
| 
       15 
15 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       16 
16 
     | 
    
         
             
                requirements:
         
     | 
| 
       17 
     | 
    
         
            -
                - -  
     | 
| 
      
 17 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       18 
18 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       19 
19 
     | 
    
         
             
                    version: '1.5'
         
     | 
| 
       20 
20 
     | 
    
         
             
              type: :development
         
     | 
| 
       21 
21 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       22 
22 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       23 
23 
     | 
    
         
             
                requirements:
         
     | 
| 
       24 
     | 
    
         
            -
                - -  
     | 
| 
      
 24 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       25 
25 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       26 
26 
     | 
    
         
             
                    version: '1.5'
         
     | 
| 
       27 
27 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       28 
28 
     | 
    
         
             
              name: guard
         
     | 
| 
       29 
29 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       30 
30 
     | 
    
         
             
                requirements:
         
     | 
| 
       31 
     | 
    
         
            -
                - -  
     | 
| 
      
 31 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       32 
32 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       33 
33 
     | 
    
         
             
                    version: '2.0'
         
     | 
| 
       34 
34 
     | 
    
         
             
              type: :development
         
     | 
| 
       35 
35 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       36 
36 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       37 
37 
     | 
    
         
             
                requirements:
         
     | 
| 
       38 
     | 
    
         
            -
                - -  
     | 
| 
      
 38 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       39 
39 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       40 
40 
     | 
    
         
             
                    version: '2.0'
         
     | 
| 
       41 
41 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       42 
42 
     | 
    
         
             
              name: guard-minitest
         
     | 
| 
       43 
43 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       44 
44 
     | 
    
         
             
                requirements:
         
     | 
| 
       45 
     | 
    
         
            -
                - -  
     | 
| 
      
 45 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       46 
46 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       47 
47 
     | 
    
         
             
                    version: '2.3'
         
     | 
| 
       48 
48 
     | 
    
         
             
              type: :development
         
     | 
| 
       49 
49 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       50 
50 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       51 
51 
     | 
    
         
             
                requirements:
         
     | 
| 
       52 
     | 
    
         
            -
                - -  
     | 
| 
      
 52 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       53 
53 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       54 
54 
     | 
    
         
             
                    version: '2.3'
         
     | 
| 
       55 
55 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       56 
56 
     | 
    
         
             
              name: minitest
         
     | 
| 
       57 
57 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       58 
58 
     | 
    
         
             
                requirements:
         
     | 
| 
       59 
     | 
    
         
            -
                - -  
     | 
| 
      
 59 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       60 
60 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       61 
61 
     | 
    
         
             
                    version: '5.3'
         
     | 
| 
       62 
62 
     | 
    
         
             
              type: :development
         
     | 
| 
       63 
63 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       64 
64 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       65 
65 
     | 
    
         
             
                requirements:
         
     | 
| 
       66 
     | 
    
         
            -
                - -  
     | 
| 
      
 66 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       67 
67 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       68 
68 
     | 
    
         
             
                    version: '5.3'
         
     | 
| 
      
 69 
     | 
    
         
            +
            - !ruby/object:Gem::Dependency
         
     | 
| 
      
 70 
     | 
    
         
            +
              name: rake
         
     | 
| 
      
 71 
     | 
    
         
            +
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
      
 72 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 73 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 74 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 75 
     | 
    
         
            +
                    version: '12.0'
         
     | 
| 
      
 76 
     | 
    
         
            +
              type: :development
         
     | 
| 
      
 77 
     | 
    
         
            +
              prerelease: false
         
     | 
| 
      
 78 
     | 
    
         
            +
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
      
 79 
     | 
    
         
            +
                requirements:
         
     | 
| 
      
 80 
     | 
    
         
            +
                - - ~>
         
     | 
| 
      
 81 
     | 
    
         
            +
                  - !ruby/object:Gem::Version
         
     | 
| 
      
 82 
     | 
    
         
            +
                    version: '12.0'
         
     | 
| 
       69 
83 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       70 
84 
     | 
    
         
             
              name: sequel
         
     | 
| 
       71 
85 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       72 
86 
     | 
    
         
             
                requirements:
         
     | 
| 
       73 
     | 
    
         
            -
                - -  
     | 
| 
      
 87 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       74 
88 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       75 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 89 
     | 
    
         
            +
                    version: '5.0'
         
     | 
| 
       76 
90 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       77 
91 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       78 
92 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       79 
93 
     | 
    
         
             
                requirements:
         
     | 
| 
       80 
     | 
    
         
            -
                - -  
     | 
| 
      
 94 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       81 
95 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       82 
     | 
    
         
            -
                    version: ' 
     | 
| 
      
 96 
     | 
    
         
            +
                    version: '5.0'
         
     | 
| 
       83 
97 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       84 
98 
     | 
    
         
             
              name: dotenv
         
     | 
| 
       85 
99 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       86 
100 
     | 
    
         
             
                requirements:
         
     | 
| 
       87 
     | 
    
         
            -
                - -  
     | 
| 
      
 101 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       88 
102 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       89 
103 
     | 
    
         
             
                    version: '2.1'
         
     | 
| 
       90 
104 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       91 
105 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       92 
106 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       93 
107 
     | 
    
         
             
                requirements:
         
     | 
| 
       94 
     | 
    
         
            -
                - -  
     | 
| 
      
 108 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       95 
109 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       96 
110 
     | 
    
         
             
                    version: '2.1'
         
     | 
| 
       97 
111 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       98 
112 
     | 
    
         
             
              name: thor
         
     | 
| 
       99 
113 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       100 
114 
     | 
    
         
             
                requirements:
         
     | 
| 
       101 
     | 
    
         
            -
                - -  
     | 
| 
      
 115 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       102 
116 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       103 
117 
     | 
    
         
             
                    version: '0.19'
         
     | 
| 
       104 
118 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       105 
119 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       106 
120 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       107 
121 
     | 
    
         
             
                requirements:
         
     | 
| 
       108 
     | 
    
         
            -
                - -  
     | 
| 
      
 122 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       109 
123 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       110 
124 
     | 
    
         
             
                    version: '0.19'
         
     | 
| 
       111 
125 
     | 
    
         
             
            - !ruby/object:Gem::Dependency
         
     | 
| 
       112 
126 
     | 
    
         
             
              name: hashie
         
     | 
| 
       113 
127 
     | 
    
         
             
              requirement: !ruby/object:Gem::Requirement
         
     | 
| 
       114 
128 
     | 
    
         
             
                requirements:
         
     | 
| 
       115 
     | 
    
         
            -
                - -  
     | 
| 
      
 129 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       116 
130 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       117 
131 
     | 
    
         
             
                    version: '3.2'
         
     | 
| 
       118 
132 
     | 
    
         
             
              type: :runtime
         
     | 
| 
       119 
133 
     | 
    
         
             
              prerelease: false
         
     | 
| 
       120 
134 
     | 
    
         
             
              version_requirements: !ruby/object:Gem::Requirement
         
     | 
| 
       121 
135 
     | 
    
         
             
                requirements:
         
     | 
| 
       122 
     | 
    
         
            -
                - -  
     | 
| 
      
 136 
     | 
    
         
            +
                - - ~>
         
     | 
| 
       123 
137 
     | 
    
         
             
                  - !ruby/object:Gem::Version
         
     | 
| 
       124 
138 
     | 
    
         
             
                    version: '3.2'
         
     | 
| 
       125 
139 
     | 
    
         
             
            description: Easily establish a connection to a database via Sequel gem using options
         
     | 
| 
         @@ -131,7 +145,8 @@ executables: 
     | 
|
| 
       131 
145 
     | 
    
         
             
            extensions: []
         
     | 
| 
       132 
146 
     | 
    
         
             
            extra_rdoc_files: []
         
     | 
| 
       133 
147 
     | 
    
         
             
            files:
         
     | 
| 
       134 
     | 
    
         
            -
            -  
     | 
| 
      
 148 
     | 
    
         
            +
            - .gitignore
         
     | 
| 
      
 149 
     | 
    
         
            +
            - .travis.yml
         
     | 
| 
       135 
150 
     | 
    
         
             
            - CHANGELOG.md
         
     | 
| 
       136 
151 
     | 
    
         
             
            - Gemfile
         
     | 
| 
       137 
152 
     | 
    
         
             
            - Guardfile
         
     | 
| 
         @@ -142,21 +157,25 @@ files: 
     | 
|
| 
       142 
157 
     | 
    
         
             
            - examples/database.with_one_set_of_options.yml
         
     | 
| 
       143 
158 
     | 
    
         
             
            - examples/database.yml
         
     | 
| 
       144 
159 
     | 
    
         
             
            - examples/dot_env.txt
         
     | 
| 
      
 160 
     | 
    
         
            +
            - lib/sequel/extensions/db_opts.rb
         
     | 
| 
      
 161 
     | 
    
         
            +
            - lib/sequel/extensions/settable.rb
         
     | 
| 
       145 
162 
     | 
    
         
             
            - lib/sequelizer.rb
         
     | 
| 
       146 
163 
     | 
    
         
             
            - lib/sequelizer/cli.rb
         
     | 
| 
       147 
164 
     | 
    
         
             
            - lib/sequelizer/connection_maker.rb
         
     | 
| 
       148 
165 
     | 
    
         
             
            - lib/sequelizer/env_config.rb
         
     | 
| 
       149 
166 
     | 
    
         
             
            - lib/sequelizer/gemfile_modifier.rb
         
     | 
| 
      
 167 
     | 
    
         
            +
            - lib/sequelizer/monkey_patches/database_in_after_connect.rb
         
     | 
| 
       150 
168 
     | 
    
         
             
            - lib/sequelizer/options.rb
         
     | 
| 
       151 
169 
     | 
    
         
             
            - lib/sequelizer/options_hash.rb
         
     | 
| 
       152 
170 
     | 
    
         
             
            - lib/sequelizer/version.rb
         
     | 
| 
       153 
171 
     | 
    
         
             
            - lib/sequelizer/yaml_config.rb
         
     | 
| 
       154 
172 
     | 
    
         
             
            - sequelizer.gemspec
         
     | 
| 
       155 
     | 
    
         
            -
            - test/ 
     | 
| 
       156 
     | 
    
         
            -
            - test/sequelizer/ 
     | 
| 
       157 
     | 
    
         
            -
            - test/sequelizer/ 
     | 
| 
       158 
     | 
    
         
            -
            - test/sequelizer/ 
     | 
| 
       159 
     | 
    
         
            -
            - test/sequelizer/ 
     | 
| 
      
 173 
     | 
    
         
            +
            - test/lib/sequel/extensions/test_db_opts.rb
         
     | 
| 
      
 174 
     | 
    
         
            +
            - test/lib/sequelizer/test_connection_maker.rb
         
     | 
| 
      
 175 
     | 
    
         
            +
            - test/lib/sequelizer/test_env_config.rb
         
     | 
| 
      
 176 
     | 
    
         
            +
            - test/lib/sequelizer/test_gemfile_modifier.rb
         
     | 
| 
      
 177 
     | 
    
         
            +
            - test/lib/sequelizer/test_options.rb
         
     | 
| 
      
 178 
     | 
    
         
            +
            - test/lib/sequelizer/test_yaml_config.rb
         
     | 
| 
       160 
179 
     | 
    
         
             
            - test/test_helper.rb
         
     | 
| 
       161 
180 
     | 
    
         
             
            homepage: https://github.com/outcomesinsights/sequelizer
         
     | 
| 
       162 
181 
     | 
    
         
             
            licenses:
         
     | 
| 
         @@ -168,24 +187,25 @@ require_paths: 
     | 
|
| 
       168 
187 
     | 
    
         
             
            - lib
         
     | 
| 
       169 
188 
     | 
    
         
             
            required_ruby_version: !ruby/object:Gem::Requirement
         
     | 
| 
       170 
189 
     | 
    
         
             
              requirements:
         
     | 
| 
       171 
     | 
    
         
            -
              - -  
     | 
| 
      
 190 
     | 
    
         
            +
              - - '>='
         
     | 
| 
       172 
191 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       173 
192 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       174 
193 
     | 
    
         
             
            required_rubygems_version: !ruby/object:Gem::Requirement
         
     | 
| 
       175 
194 
     | 
    
         
             
              requirements:
         
     | 
| 
       176 
     | 
    
         
            -
              - -  
     | 
| 
      
 195 
     | 
    
         
            +
              - - '>='
         
     | 
| 
       177 
196 
     | 
    
         
             
                - !ruby/object:Gem::Version
         
     | 
| 
       178 
197 
     | 
    
         
             
                  version: '0'
         
     | 
| 
       179 
198 
     | 
    
         
             
            requirements: []
         
     | 
| 
       180 
199 
     | 
    
         
             
            rubyforge_project: 
         
     | 
| 
       181 
     | 
    
         
            -
            rubygems_version: 2. 
     | 
| 
      
 200 
     | 
    
         
            +
            rubygems_version: 2.0.14.1
         
     | 
| 
       182 
201 
     | 
    
         
             
            signing_key: 
         
     | 
| 
       183 
202 
     | 
    
         
             
            specification_version: 4
         
     | 
| 
       184 
203 
     | 
    
         
             
            summary: Sequel database connections via config/database.yml or .env
         
     | 
| 
       185 
204 
     | 
    
         
             
            test_files:
         
     | 
| 
       186 
     | 
    
         
            -
            - test/ 
     | 
| 
       187 
     | 
    
         
            -
            - test/sequelizer/ 
     | 
| 
       188 
     | 
    
         
            -
            - test/sequelizer/ 
     | 
| 
       189 
     | 
    
         
            -
            - test/sequelizer/ 
     | 
| 
       190 
     | 
    
         
            -
            - test/sequelizer/ 
     | 
| 
      
 205 
     | 
    
         
            +
            - test/lib/sequel/extensions/test_db_opts.rb
         
     | 
| 
      
 206 
     | 
    
         
            +
            - test/lib/sequelizer/test_connection_maker.rb
         
     | 
| 
      
 207 
     | 
    
         
            +
            - test/lib/sequelizer/test_env_config.rb
         
     | 
| 
      
 208 
     | 
    
         
            +
            - test/lib/sequelizer/test_gemfile_modifier.rb
         
     | 
| 
      
 209 
     | 
    
         
            +
            - test/lib/sequelizer/test_options.rb
         
     | 
| 
      
 210 
     | 
    
         
            +
            - test/lib/sequelizer/test_yaml_config.rb
         
     | 
| 
       191 
211 
     | 
    
         
             
            - test/test_helper.rb
         
     | 
| 
         @@ -1,52 +0,0 @@ 
     | 
|
| 
       1 
     | 
    
         
            -
            require_relative '../test_helper'
         
     | 
| 
       2 
     | 
    
         
            -
            require_relative '../../lib/sequelizer'
         
     | 
| 
       3 
     | 
    
         
            -
             
     | 
| 
       4 
     | 
    
         
            -
            class TestConnectionMaker < Minitest::Test
         
     | 
| 
       5 
     | 
    
         
            -
              def setup
         
     | 
| 
       6 
     | 
    
         
            -
                @options = { 'adapter' => 'sqlite' }
         
     | 
| 
       7 
     | 
    
         
            -
                @sequel_mock = Minitest::Mock.new
         
     | 
| 
       8 
     | 
    
         
            -
                stub_const(Sequelizer::ConnectionMaker, :Sequel, @sequel_mock)
         
     | 
| 
       9 
     | 
    
         
            -
                @sequel_mock.expect :connect, :connection, [@options]
         
     | 
| 
       10 
     | 
    
         
            -
              end
         
     | 
| 
       11 
     | 
    
         
            -
             
     | 
| 
       12 
     | 
    
         
            -
              def teardown
         
     | 
| 
       13 
     | 
    
         
            -
                @sequel_mock.verify
         
     | 
| 
       14 
     | 
    
         
            -
                remove_stubbed_const(Sequelizer::ConnectionMaker, :Sequel)
         
     | 
| 
       15 
     | 
    
         
            -
              end
         
     | 
| 
       16 
     | 
    
         
            -
             
     | 
| 
       17 
     | 
    
         
            -
              def test_accepts_options_as_params
         
     | 
| 
       18 
     | 
    
         
            -
                Sequelizer::YamlConfig.stub :user_config_path, Pathname.new('/completely/made/up/path/that/does/not/exist') do
         
     | 
| 
       19 
     | 
    
         
            -
                  assert_equal :connection, Sequelizer::ConnectionMaker.new(@options).connection
         
     | 
| 
       20 
     | 
    
         
            -
                end
         
     | 
| 
       21 
     | 
    
         
            -
              end
         
     | 
| 
       22 
     | 
    
         
            -
             
     | 
| 
       23 
     | 
    
         
            -
              def test_reads_options_from_yaml_config
         
     | 
| 
       24 
     | 
    
         
            -
                yaml_config = Minitest::Mock.new
         
     | 
| 
       25 
     | 
    
         
            -
                yaml_config.expect :options, @options
         
     | 
| 
       26 
     | 
    
         
            -
                yaml_config.expect :options, @options
         
     | 
| 
       27 
     | 
    
         
            -
             
     | 
| 
       28 
     | 
    
         
            -
                Sequelizer::YamlConfig.stub :new, yaml_config do
         
     | 
| 
       29 
     | 
    
         
            -
                  assert_equal :connection, Sequelizer::ConnectionMaker.new.connection
         
     | 
| 
       30 
     | 
    
         
            -
                end
         
     | 
| 
       31 
     | 
    
         
            -
             
     | 
| 
       32 
     | 
    
         
            -
                yaml_config.verify
         
     | 
| 
       33 
     | 
    
         
            -
              end
         
     | 
| 
       34 
     | 
    
         
            -
             
     | 
| 
       35 
     | 
    
         
            -
              def test_reads_options_from_env_config_if_no_yaml_config
         
     | 
| 
       36 
     | 
    
         
            -
                yaml_config = Minitest::Mock.new
         
     | 
| 
       37 
     | 
    
         
            -
                yaml_config.expect :options, {}
         
     | 
| 
       38 
     | 
    
         
            -
                yaml_config.expect :options, {}
         
     | 
| 
       39 
     | 
    
         
            -
             
     | 
| 
       40 
     | 
    
         
            -
                env_config = Minitest::Mock.new
         
     | 
| 
       41 
     | 
    
         
            -
                env_config.expect :options, @options
         
     | 
| 
       42 
     | 
    
         
            -
             
     | 
| 
       43 
     | 
    
         
            -
                Sequelizer::YamlConfig.stub :new, yaml_config do
         
     | 
| 
       44 
     | 
    
         
            -
                  Sequelizer::EnvConfig.stub :new, env_config do
         
     | 
| 
       45 
     | 
    
         
            -
                    assert_equal :connection, Sequelizer::ConnectionMaker.new.connection
         
     | 
| 
       46 
     | 
    
         
            -
                  end
         
     | 
| 
       47 
     | 
    
         
            -
                end
         
     | 
| 
       48 
     | 
    
         
            -
             
     | 
| 
       49 
     | 
    
         
            -
                env_config.verify
         
     | 
| 
       50 
     | 
    
         
            -
                yaml_config.verify
         
     | 
| 
       51 
     | 
    
         
            -
              end
         
     | 
| 
       52 
     | 
    
         
            -
            end
         
     |