rails-pg-extras 1.2.2 → 1.4.0

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: 5cf36789c8d7210dd1512d3d7ef8de0d0bcf88ca3d339e1ee5e89daf82264c32
4
- data.tar.gz: 5054854e791db2e53408c53fd30d11e907b7caed8549fccaecedd98b10469ce4
3
+ metadata.gz: 3306ddaeabad3f9e9b82a97fe044121a1df8924e092b6087625a606af0c198df
4
+ data.tar.gz: 1ab601c34fbe458a9e0b09de4c15b1405fe5d3aa77f9cafd0dd3c37472f39af2
5
5
  SHA512:
6
- metadata.gz: 3fe6766ddb5896202a408ae95e6a4fc91edf42149d15b348c731bfdda153225ae7949cbc6eab2cb266ffa0ebf4daf1eb3d497cb06807b64fe66c0fad28eb17d1
7
- data.tar.gz: 3c8d26e07807c15df4af9a8fb785bc9cc78fc52f55baae6c46db0911edc2e13a7cdd0b882560ba363c9c89b46a8fb7b48d350ec63bb3b1258fd335fe8816f1ad
6
+ metadata.gz: 298c4fd79dc18eab15c1c9e05e7676f5533d686052e4b189cf5da4f53b524b85d68fa4a4ef0c694d026fdaabe72fa28b1a0bee4507bde510c97b8f6a2bf877df
7
+ data.tar.gz: 543fd9fe51a0f9143a3202639c91405f9669fe721c8946c5598e0e9655ba13ecec1d8ce93b50587f005c3323e050839e85fd30a337ddf3b7106ebc017b263a79
@@ -16,6 +16,7 @@ jobs:
16
16
  - run: gem update --system
17
17
  - run: gem install bundler
18
18
  - run: bundle install --path vendor/bundle
19
+ - run: sudo apt-get update
19
20
  - run: sudo apt install postgresql-client
20
21
  - run: dockerize -wait tcp://localhost:5432 -timeout 1m
21
22
  - run:
data/README.md CHANGED
@@ -16,6 +16,8 @@ Alternative versions:
16
16
 
17
17
  - [Python](https://github.com/pawurb/ecto_psql_extras)
18
18
 
19
+ - [Haskell](https://github.com/pawurb/haskell-pg-extras)
20
+
19
21
  ## Installation
20
22
 
21
23
  In your Gemfile
@@ -76,6 +78,13 @@ RailsPGExtras.cache_hit(in_format: :raw) =>
76
78
  #<PG::Result:0x00007f75777f7328 status=PGRES_TUPLES_OK ntuples=2 nfields=2 cmd_tuples=2>
77
79
  ```
78
80
 
81
+ Some methods accept an optional `args` param allowing you to customize queries:
82
+
83
+ ```ruby
84
+ RailsPGExtras.long_running_queries(args: { threshold: "200 milliseconds" })
85
+
86
+ ```
87
+
79
88
  ## Available methods
80
89
 
81
90
  ### `cache_hit`
@@ -106,7 +115,7 @@ $ rake pg_extras:index_cache_hit
106
115
  (truncated results for brevity)
107
116
  ```
108
117
 
109
- The same as `cache_hit` with each table's indexes cache hit info displayed seperately.
118
+ The same as `cache_hit` with each table's indexes cache hit info displayed separately.
110
119
 
111
120
  ### `table_cache_hit`
112
121
 
@@ -157,7 +166,7 @@ $ rake pg_extras:locks
157
166
  (4 rows)
158
167
  ```
159
168
 
160
- This command displays queries that have taken out an exlusive lock on a relation. Exclusive locks typically prevent other operations on that relation from taking place, and can be a cause of "hung" queries that are waiting for a lock to be granted.
169
+ This command displays queries that have taken out an exclusive lock on a relation. Exclusive locks typically prevent other operations on that relation from taking place, and can be a cause of "hung" queries that are waiting for a lock to be granted.
161
170
 
162
171
  ### `all_locks`
163
172
 
@@ -183,7 +192,7 @@ $ rake pg_extras:outliers
183
192
  (truncated results for brevity)
184
193
  ```
185
194
 
186
- This command displays statements, obtained from `pg_stat_statements`, ordered by the amount of time to execute in aggregate. This includes the statement itself, the total execution time for that statement, the proportion of total execution time for all statements that statement has taken up, the number of times that statement has been called, and the amount of time that statement spent on synchronous I/O (reading/writing from the filesystem).
195
+ This command displays statements, obtained from `pg_stat_statements`, ordered by the amount of time to execute in aggregate. This includes the statement itself, the total execution time for that statement, the proportion of total execution time for all statements that statement has taken up, the number of times that statement has been called, and the amount of time that statement spent on synchronous I/O (reading/writing from the file system).
187
196
 
188
197
  Typically, an efficient query will have an appropriate ratio of calls to total execution time, with as little time spent on I/O as possible. Queries that have a high total execution time but low call count should be investigated to improve their performance. Queries that have a high proportion of execution time being spent on synchronous I/O should also be investigated.
189
198
 
@@ -283,7 +292,7 @@ $ rake pg_extras:table_indexes_size
283
292
  (truncated results for brevity)
284
293
  ```
285
294
 
286
- This command displays the total size of indexes for each table and materialized view, in MB. It is calcualtes by using the system administration function `pg_indexes_size()`.
295
+ This command displays the total size of indexes for each table and materialized view, in MB. It is calculated by using the system administration function `pg_indexes_size()`.
287
296
 
288
297
  ### `total_table_size`
289
298
 
@@ -343,7 +352,7 @@ $ rake pg_extras:seq_scans
343
352
  (truncated results for brevity)
344
353
  ```
345
354
 
346
- This command displays the number of sequential scans recorded against all tables, descending by count of sequential scans. Tables that have very high numbers of sequential scans may be underindexed, and it may be worth investigating queries that read from these tables.
355
+ This command displays the number of sequential scans recorded against all tables, descending by count of sequential scans. Tables that have very high numbers of sequential scans may be under-indexed, and it may be worth investigating queries that read from these tables.
347
356
 
348
357
  ### `long_running_queries`
349
358
 
@@ -409,7 +418,7 @@ $ rake pg_extras:vacuum_stats
409
418
  (truncated results for brevity)
410
419
  ```
411
420
 
412
- This command displays statistics related to vacuum operations for each table, including an estiamtion of dead rows, last autovacuum and the current autovacuum threshold. This command can be useful when determining if current vacuum thresholds require adjustments, and to determine when the table was last vacuumed.
421
+ This command displays statistics related to vacuum operations for each table, including an estimation of dead rows, last autovacuum and the current autovacuum threshold. This command can be useful when determining if current vacuum thresholds require adjustments, and to determine when the table was last vacuumed.
413
422
 
414
423
  ### `kill_all`
415
424
 
@@ -5,20 +5,26 @@ require 'ruby-pg-extras'
5
5
 
6
6
  module RailsPGExtras
7
7
  QUERIES = RubyPGExtras::QUERIES
8
+ DEFAULT_ARGS = RubyPGExtras::DEFAULT_ARGS
8
9
 
9
10
  QUERIES.each do |query_name|
10
- define_singleton_method query_name do |options = { in_format: :display_table }|
11
+ define_singleton_method query_name do |options = {}|
11
12
  run_query(
12
13
  query_name: query_name,
13
- in_format: options.fetch(:in_format)
14
+ in_format: options.fetch(:in_format, :display_table),
15
+ args: options.fetch(:args, {})
14
16
  )
15
17
  end
16
18
  end
17
19
 
18
- def self.run_query(query_name:, in_format:)
19
- result = connection.execute(
20
+ def self.run_query(query_name:, in_format:, args: {})
21
+ sql = if (custom_args = DEFAULT_ARGS[query_name].merge(args)) != {}
22
+ RubyPGExtras.sql_for(query_name: query_name) % custom_args
23
+ else
20
24
  RubyPGExtras.sql_for(query_name: query_name)
21
- )
25
+ end
26
+
27
+ result = connection.execute(sql)
22
28
 
23
29
  RubyPGExtras.display_result(
24
30
  result,
@@ -3,11 +3,14 @@
3
3
  require 'rails-pg-extras'
4
4
 
5
5
  namespace :pg_extras do
6
- desc "Establish connection"
7
6
  task :establish_connection do
8
- db_config_file = File.open('config/database.yml')
9
- db_config = YAML::load(db_config_file)
10
- ActiveRecord::Base.establish_connection(db_config[Rails.env])
7
+ if ENV['DATABASE_URL'].present?
8
+ ActiveRecord::Base.establish_connection(ENV['DATABASE_URL'])
9
+ else
10
+ db_config_file = File.read('config/database.yml')
11
+ db_config = YAML::load(ERB.new(db_config_file).result)
12
+ ActiveRecord::Base.establish_connection(db_config[Rails.env])
13
+ end
11
14
  end
12
15
 
13
16
  RailsPGExtras::QUERIES.each do |query_name|
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RailsPGExtras
4
- VERSION = "1.2.2"
4
+ VERSION = "1.4.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rails-pg-extras
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.2
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - pawurb
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-10-08 00:00:00.000000000 Z
11
+ date: 2021-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-pg-extras
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - '='
18
18
  - !ruby/object:Gem::Version
19
- version: 1.2.2
19
+ version: 1.4.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - '='
25
25
  - !ruby/object:Gem::Version
26
- version: 1.2.2
26
+ version: 1.4.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activerecord
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -108,7 +108,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
108
108
  - !ruby/object:Gem::Version
109
109
  version: '0'
110
110
  requirements: []
111
- rubygems_version: 3.1.2
111
+ rubygems_version: 3.1.4
112
112
  signing_key:
113
113
  specification_version: 4
114
114
  summary: Rails PostgreSQL performance database insights