sequel-search-path 0.0.4 → 0.1.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: 4e5ab0d2b8f290a188bd0adea4a7a00b2b0bf69c
4
- data.tar.gz: b6def29a652d1403f958dbe8ca69181e0f39bcd6
3
+ metadata.gz: 085c3c7649911aa5244ccd0600b6e0a66cc4e992
4
+ data.tar.gz: 7f90504ae2b1660dabab063e35d78e44c8662e40
5
5
  SHA512:
6
- metadata.gz: 3cd07a78b812eae2c51c7a9affd174d768a42604edb4b8aadd908e9a5dd1b7fbbe3f3fad57a49b247ce2ff5a114bbd15c78c715d8ff3fa35ca087c2ff9347748
7
- data.tar.gz: 50ad6bea6a7d819988d2504bb8111c3f9336331d984f2f7a2a672de3ea99a9c7520b871dd1a17da1cc64ca077ae3f6144061155681d42301f478c937c88e2d89
6
+ metadata.gz: ea1cfbbb79cf053cf739640e2c0fa3b9a96950045acd8e2743712a50e66b859031e6aef8611bc2db4ac245724eb8404e9123c425344caed590a8f15a83ea9aa5
7
+ data.tar.gz: 721703c73bf2560fa49fdc4e4cd30801cd8cfdf4e5a72a11c3200fa1fe0b6cd8f524599be20c5ec20e7d00d24d5d3648253d7e01d1cf567b00263d41c1b5bc8e
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Sequel
4
4
  module SearchPath
5
- VERSION = '0.0.4'
5
+ VERSION = '0.1.0'
6
6
  end
7
7
  end
@@ -10,25 +10,13 @@ module Sequel
10
10
 
11
11
  def override_schema(*new_schemas, &block)
12
12
  synchronize do
13
- previous_schemas = schemas.dup
13
+ previous_schemas = schemas
14
14
 
15
15
  begin
16
- schemas.replace new_schemas.map(&:to_sym).uniq
17
- set_search_path
16
+ self.schemas = new_schemas
18
17
  yield
19
18
  ensure
20
- schemas.replace previous_schemas
21
-
22
- begin
23
- set_search_path
24
- rescue Sequel::DatabaseError
25
- # This command will fail if we're in a transaction that the DB
26
- # is rolling back due to an error, but in that case, there's no
27
- # need to run it anyway (Postgres will reset the search_path for
28
- # us). Since there's no way to know whether it will fail until
29
- # we try it, and there's nothing to be done with the error it
30
- # throws, just ignore it.
31
- end
19
+ self.schemas = previous_schemas
32
20
  end
33
21
  end
34
22
  end
@@ -38,7 +26,9 @@ module Sequel
38
26
  end
39
27
 
40
28
  def schemas=(schemas)
29
+ schemas = schemas.map(&:to_sym).uniq
41
30
  Thread.current[schemas_key] = schemas
31
+ set_search_path(schemas)
42
32
  end
43
33
 
44
34
  # The schema that new objects will be created in.
@@ -46,19 +36,29 @@ module Sequel
46
36
  schemas.first
47
37
  end
48
38
 
49
- def get_search_path
39
+ def search_path
50
40
  self["SHOW search_path"].get
51
41
  end
52
- alias :show_search_path :get_search_path
42
+ alias :show_search_path :search_path
43
+
44
+ private
53
45
 
54
- def set_search_path
46
+ def set_search_path(schemas)
55
47
  placeholders = schemas.map{'?'}.join(', ')
56
48
  placeholders = "''" if placeholders.empty?
57
49
  self["SET search_path TO #{placeholders}", *schemas].get
50
+ rescue Sequel::DatabaseError => e
51
+ if e.wrapped_exception.is_a?(PG::InFailedSqlTransaction)
52
+ # This command will fail if we're in a transaction that the DB is
53
+ # rolling back due to an error, but in that case, there's no need to run
54
+ # it anyway (Postgres will reset the search_path for us). Since there's
55
+ # no way to know whether it will fail until we try it, and there's
56
+ # nothing to be done with the error it throws, just ignore it.
57
+ else
58
+ raise
59
+ end
58
60
  end
59
61
 
60
- private
61
-
62
62
  def schemas_key
63
63
  @schemas_key ||= "sequel-search-path-#{object_id}".to_sym
64
64
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-search-path
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Chris Hanks
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2016-01-28 00:00:00.000000000 Z
11
+ date: 2016-02-18 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler