redshift-client 0.2.0 → 0.3.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 07134341d34da433891d4a6fabe9c092d09973a1
4
- data.tar.gz: 1fffad0d484638978060447997fdc977d0cb2aa3
3
+ metadata.gz: 8ccf86e0129abf8d78dd4b7551f1b6dad0d5aa76
4
+ data.tar.gz: aabd618f7ac00c951abfa34250dc3c27954697fc
5
5
  SHA512:
6
- metadata.gz: 6c4f6be049d2d7d848367c892624fa67dc64e63f725186a9005dea738d63d7ca5ab2d4f73957ee3f13ea24654b4bfafc9368414b70900c6d86fd11593e8ca983
7
- data.tar.gz: 1266a3424362a90776b32832de19008f8be05b161bd5205e43ab28f4adab02dd0599e527d1c09d476c98b2f743700bbe754b9ca1891eb83d65066cecb7c0a117
6
+ metadata.gz: a5a53fd03e12708b9f5d2e94bce1ae9f397faec83efafb3897b37d08a50123e0cbc4a63fd206750d81f48226b570706bbd653bf0f260298ba7a158e8ec1f0f23
7
+ data.tar.gz: dd412e3922d8c4add73479d784c9c31739cd85283a05ff0b620bac578a1af50578ee51d6fb507e97160760d4a183eee35bffc33975a22c2dc2023fbdb2ff4ac2
@@ -1,11 +1,13 @@
1
1
  require "redshift/client/version"
2
2
  require "redshift/client/errors"
3
3
  require "redshift/client/configuration"
4
+ require 'redshift/client/loggable'
4
5
  require "redshift/client/connection"
5
6
  require "redshift/client/connection_handling"
6
7
 
7
8
  module Redshift
8
9
  module Client
10
+ extend Loggable
9
11
  extend ConnectionHandling
10
12
  end
11
13
  end
@@ -1,27 +1,59 @@
1
1
  require 'uri'
2
+ require 'cgi'
3
+ require 'active_support/core_ext/hash/reverse_merge'
2
4
 
3
5
  module Redshift
4
6
  module Client
5
7
  class Configuration
6
8
  attr_reader :host, :port, :user, :password, :dbname
7
9
 
8
- def self.resolve(config = {})
9
- if config.empty?
10
- url = URI.parse(ENV["REDSHIFT_URL"])
11
- self.new(url.host, url.port, url.user, url.password, url.path[1..-1])
12
- else
13
- self.new(config[:host], config[:port], config[:user], config[:password], config[:dbname])
10
+ DEFAULT_SSL_MODE = 'allow'.freeze
11
+
12
+ class << self
13
+ def resolve(config = {})
14
+ config.reverse_merge!(parse_redshift_url)
15
+
16
+ Configuration.new(
17
+ config[:host],
18
+ config[:port],
19
+ config[:user],
20
+ config[:password],
21
+ config[:dbname],
22
+ config[:sslmode]
23
+ )
24
+ end
25
+
26
+ private
27
+
28
+ def parse_redshift_url
29
+ uri = URI.parse(ENV['REDSHIFT_URL'])
30
+ {
31
+ host: uri.host,
32
+ port: uri.port,
33
+ user: uri.user,
34
+ password: uri.password,
35
+ dbname: uri.path[1..-1],
36
+ sslmode: sslmode(uri)
37
+ }
38
+ rescue
39
+ {}
40
+ end
41
+
42
+ def sslmode(uri)
43
+ if uri.query
44
+ param = CGI.parse(uri.query)['sslmode']
45
+ param && param[0]
46
+ end
14
47
  end
15
- rescue => e
16
- raise ConfigurationError.new(e.message)
17
48
  end
18
49
 
19
- def initialize(host, port, user, password, dbname)
50
+ def initialize(host, port, user, password, dbname, sslmode)
20
51
  @host = host
21
52
  @port = port || 5439
22
53
  @user = user
23
54
  @password = password
24
55
  @dbname = dbname
56
+ @sslmode = sslmode || DEFAULT_SSL_MODE
25
57
  end
26
58
 
27
59
  def params
@@ -30,7 +62,8 @@ module Redshift
30
62
  port: @port,
31
63
  user: @user,
32
64
  password: @password,
33
- dbname: @dbname
65
+ dbname: @dbname,
66
+ sslmode: @sslmode
34
67
  }
35
68
  end
36
69
  end
@@ -4,7 +4,7 @@ require 'active_support/lazy_load_hooks'
4
4
  module Redshift
5
5
  module Client
6
6
  module ConnectionHandling
7
- def establish_connection(config= {})
7
+ def establish_connection(config = {})
8
8
  clear_connection!
9
9
  clear_thread!
10
10
 
@@ -3,9 +3,6 @@ module Redshift
3
3
  class RedshiftClientError < StandardError
4
4
  end
5
5
 
6
- class ConfigurationError < RedshiftClientError
7
- end
8
-
9
6
  class ConnectionNotEstablished < RedshiftClientError
10
7
  end
11
8
  end
@@ -0,0 +1,24 @@
1
+ require 'active_support'
2
+ require 'active_support/core_ext/class/attribute_accessors'
3
+ require 'logger'
4
+
5
+ module Redshift
6
+ module Client
7
+ module Loggable
8
+ def logger
9
+ @logger || create_default_logger
10
+ end
11
+
12
+ def logger=(logger)
13
+ @logger = logger
14
+ end
15
+
16
+ private
17
+ def create_default_logger
18
+ @logger = Logger.new($stdout)
19
+ @logger.level = Logger::INFO
20
+ @logger
21
+ end
22
+ end
23
+ end
24
+ end
@@ -1,5 +1,5 @@
1
1
  module Redshift
2
2
  module Client
3
- VERSION = "0.2.0"
3
+ VERSION = "0.3.0"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: redshift-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Dai Akatsuka
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2015-10-10 00:00:00.000000000 Z
11
+ date: 2017-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pg
@@ -101,10 +101,9 @@ files:
101
101
  - lib/redshift/client/connection.rb
102
102
  - lib/redshift/client/connection_handling.rb
103
103
  - lib/redshift/client/errors.rb
104
+ - lib/redshift/client/loggable.rb
104
105
  - lib/redshift/client/version.rb
105
106
  - redshift-client.gemspec
106
- - spec/redshift/client_spec.rb
107
- - spec/spec_helper.rb
108
107
  homepage: https://github.com/dakatsuka/redshift-client
109
108
  licenses:
110
109
  - MIT
@@ -125,10 +124,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
125
124
  version: '0'
126
125
  requirements: []
127
126
  rubyforge_project:
128
- rubygems_version: 2.4.5
127
+ rubygems_version: 2.6.11
129
128
  signing_key:
130
129
  specification_version: 4
131
130
  summary: The ruby client for AWS Redshift.
132
- test_files:
133
- - spec/redshift/client_spec.rb
134
- - spec/spec_helper.rb
131
+ test_files: []
@@ -1,102 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Redshift::Client do
4
- it 'has a version number' do
5
- expect(Redshift::Client::VERSION).not_to be nil
6
- end
7
-
8
- describe '#establish_connection' do
9
- it 'establishes connection' do
10
- expect {
11
- Redshift::Client.establish_connection
12
- }.to change {
13
- Redshift::Client.established?
14
- }.from(false).to(true)
15
- end
16
- end
17
-
18
- describe '#disconnect' do
19
- before do
20
- Redshift::Client.establish_connection
21
- Redshift::Client.connection
22
- end
23
-
24
- it 'disconnects from database' do
25
- expect {
26
- Redshift::Client.disconnect
27
- }.to change {
28
- Redshift::Client.connected?
29
- }.from(true).to(false)
30
- end
31
- end
32
-
33
- describe '#connected?' do
34
- context "when already connected" do
35
- before do
36
- Redshift::Client.establish_connection
37
- Redshift::Client.connection
38
- end
39
-
40
- after do
41
- Redshift::Client.disconnect
42
- end
43
-
44
- it "returns true" do
45
- expect(Redshift::Client).to be_connected
46
- end
47
- end
48
-
49
- context "when not yet connected" do
50
- it "returns false" do
51
- expect(Redshift::Client).not_to be_connected
52
- end
53
- end
54
- end
55
-
56
- describe "#connection" do
57
- context "when already established" do
58
- before do
59
- Redshift::Client.establish_connection
60
- end
61
-
62
- it "returns an instance of connection" do
63
- expect(Redshift::Client.connection).to be_instance_of Redshift::Client::Connection
64
- end
65
- end
66
-
67
- context "when not yet established" do
68
- before do
69
- allow(ActiveSupport).to receive :run_load_hooks
70
- end
71
-
72
- it "calls ActiveSupport#run_load_hooks and raise error" do
73
- Thread.new {
74
- expect { Redshift::Client.connection }.to raise_error(Redshift::Client::ConnectionNotEstablished)
75
- expect(ActiveSupport).to have_received(:run_load_hooks).with(:redshift_client_connection).once
76
- }.join
77
- end
78
- end
79
- end
80
-
81
- describe "#established?" do
82
- context "when already established" do
83
- before do
84
- Redshift::Client.establish_connection
85
- end
86
-
87
- after do
88
- Redshift::Client.disconnect
89
- end
90
-
91
- it "returns true" do
92
- expect(Redshift::Client).to be_established
93
- end
94
- end
95
-
96
- context "when not yet established" do
97
- it "returns false" do
98
- Thread.new { expect(Redshift::Client).not_to be_established }.join
99
- end
100
- end
101
- end
102
- end
@@ -1,2 +0,0 @@
1
- $LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
2
- require 'redshift/client'