train-pgsql 1.0.0 → 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3a5a7f95a8bbb5fa60e7582b24b6bd7ba271dd659ff66e524c13aa6f4790b86d
4
- data.tar.gz: b9350bb9dcad6c1ed426b0a58ff663d4f676e3058494a047f3ba754c0d439368
3
+ metadata.gz: 9b350bc75289acf2790bd703acea6fe334651aa0b57408a1efb40026f8728eab
4
+ data.tar.gz: 6be610b670d7839f092bf7496b62d9281c905e18933df18dc93dc584ca5e88c6
5
5
  SHA512:
6
- metadata.gz: 707700dcf6d3067f7082d2973a5c1f14235a78a4b026f3c042af70c1c9e63c20822b52fe0553731a05cb618f53e58833159e5f090d0a38068b17aaac5344552d
7
- data.tar.gz: 2e7a11fa24fff87cb75d7effa39646276b6ab7e589d97de2dd176b33af3d9d04c2c6ba9541c10f0fc6178bc222221ea8f6a01f8a76b6a6edf67b84d8ebaccea6
6
+ metadata.gz: f1a6e6455f31b4a2c254ff4e2165df2572656d26fa1021d96d9bcda302077a97b6c1df7c95ca17dfbb798a2a866f8a24228a87d66a895026f542dc2e8e9d99e1
7
+ data.tar.gz: 84f7f92b4d39d343e583e9ffbe4794413e149b0631ed10d396466cad439a3b3d204948a8a38c99591192018f5e53a7e07c5ac80d1e28581aa7d73d0be37049a9
data/README.md CHANGED
@@ -5,11 +5,16 @@ This plugin allows applications that rely on Train to communicate via postgres S
5
5
 
6
6
  ## Installation
7
7
 
8
- You will have to build this gem yourself to install it as it is not yet on
9
- Rubygems.Org. For this there is a rake task which makes this a one-liner:
8
+ This is published to rubygems.org at https://rubygems.org/gems/train-pgsql.
10
9
 
11
- ```bash
12
- rake install:local
10
+ You can install the gem directly:
11
+ ```sh
12
+ gem install train-pgsql
13
+ ```
14
+
15
+ Or you can install it as an `inspec` plugin:
16
+ ```sh
17
+ inspec plugin install train-pgsql
13
18
  ```
14
19
 
15
20
  ## Transport parameters
@@ -35,4 +40,46 @@ train = Train.create("pgsql", {
35
40
  conn = train.connection
36
41
  result = conn.run_command("show version\n")
37
42
  conn.close
38
- ```
43
+ ```
44
+
45
+ ## Local development
46
+ If you are building this on a Mac you may run into an issue trying to install this locally due to the `PG` gem not installing due to code signing issues.
47
+ You can build it and run it in a docker container.
48
+
49
+ ### Requirements
50
+ - Postgres running locally
51
+ - docker
52
+
53
+ ### Steps
54
+ 1) Build the `train-pgsql` gem
55
+ ```
56
+ rake build
57
+ ```
58
+ 2) Build the docker image.
59
+ Be sure to set the appropriate GEM_VERSION arg based upon the value of the [version.rb](./lib/train-pgsql/version.rb)
60
+ ```
61
+ docker build --build-arg GEM_VERSION=1.0.0 . -t train-pgsql-test
62
+ ```
63
+ 3) Run the test.rb file
64
+ ```
65
+ docker run -it --rm -v $(pwd)/test:/share -e PG_HOST="host.docker.internal" --entrypoint ruby train-pgsql-test test.rb
66
+ ```
67
+ _Note: This test assumes you are running postgres locally on a mac. If you are running postgres in some other location, update the `PG_HOST` environment variable appropriately. You may have to set the username/password in the `pgsql` train instantiation._
68
+
69
+ You should see output resembling the following:
70
+ ```
71
+ #<struct Train::Extras::CommandResult stdout="1", stderr="", exit_status=0>
72
+ ```
73
+
74
+ ## Deploy
75
+ To publish a new version to RubyGems:
76
+ 1) Ensure the [version.rb](./lib/train-pgsql/version.rb) has been bumped with the appropriate semver update.
77
+ 2) Run rake release
78
+ ```
79
+ rake release
80
+ ```
81
+ _Note: you may have to authenticate with rubygems to publish. The `deploy@stridehealth.com` group has a rubygems [account](https://rubygems.org/profiles/stridehealth) that is an owner of this gem._
82
+
83
+ # Acknowledgements
84
+ * [train-telnet](https://github.com/tecracer-chef/train-telnet)
85
+ * [train](https://github.com/inspec/train)
@@ -33,16 +33,17 @@ module TrainPlugins
33
33
  exit_status = 0
34
34
 
35
35
  logger.debug format('[Pgsql] Sending command (%s) to %s:%d', query, @options[:host], @options[:port])
36
- connection.exec(query) do |result|
37
- result.each_row do |values|
38
- stdout += values.join(', ') + "\n"
36
+ begin
37
+ connection.exec(query) do |result|
38
+ result.each_row do |values|
39
+ stdout += values.join(', ') + "\n"
40
+ end
41
+ stdout = stdout.strip
39
42
  end
40
- stdout = stdout.strip
43
+ rescue PG::Error => e
44
+ stderr = e.message
41
45
  end
42
-
43
46
  CommandResult.new(stdout, stderr, exit_status)
44
- rescue PG::Error => e
45
- raise Train::TransportError, "Pgsql exec failed (#{e.message})"
46
47
  end
47
48
 
48
49
  def connection
@@ -1,5 +1,5 @@
1
1
  module TrainPlugins
2
2
  module Pgsql
3
- VERSION = '1.0.0'.freeze
3
+ VERSION = '1.0.1'.freeze
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: train-pgsql
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Cris Barbero
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-08 00:00:00.000000000 Z
11
+ date: 2020-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: train