umbrellio-sequel-plugins 0.4.0.121 → 0.5.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
  SHA256:
3
- metadata.gz: 441b4a06a00be08f3b8019dbed3af3f3f804540af51ceb33b72322428047cfb1
4
- data.tar.gz: cf3aa331e6f80510afe733b7f3fcf9b43f76ad253dd6653049d388f6116cd524
3
+ metadata.gz: a56d6ec4ec8867a8f8f2d6721f240519d298e0fbcf0574b6f99eebc73bf5edad
4
+ data.tar.gz: d47dd520afe94e7cf2fcb7314305d48399499054d6bc7da4cd1ddb7ed525f1c4
5
5
  SHA512:
6
- metadata.gz: 4d80895de1d2d82dd3af8f42f7496b900ae4ca21350d686dd28df78e5676e0b1d5935e118ea6d771ba2950021ef77e21277cff2f76e25631e228f78f009bd711
7
- data.tar.gz: 9ee64942f741c7dc96bf33a6f360cf9542d2fe2208ffe08f4ca43a2a4a8dadc77a8edb025918f885ce148ac98a91e9b738c9d392245f98b55203949a7f37d857
6
+ metadata.gz: 5b5ee860f246e355526d33a852b11273e23caae0e03a02ae298ab4af33e21a3cfb72a231ae93b5a80e76232222041ed9e7e256a17401294887613ca7e3377f1b
7
+ data.tar.gz: 4ae1b3566ab9471fa4b1962fece7fd9bf3c8f6b34a7af3946dbbe9d2060f6da8c8b2d04f838e126fbbe353c0ad33b86b0d357b08b4e2cdc04322b4b232af84f3
@@ -0,0 +1,65 @@
1
+ name: CI
2
+
3
+ on: [push, pull_request]
4
+
5
+ jobs:
6
+ test:
7
+ runs-on: ubuntu-latest
8
+
9
+ # We want to run on external PRs, but not on our own internal PRs as they'll be run on push event
10
+ if: github.event_name == 'push' || github.event.pull_request.head.repo.full_name != 'umbrellio/umbrellio-sequel-plugins'
11
+
12
+ services:
13
+ postgres:
14
+ image: postgres:12
15
+ env:
16
+ POSTGRES_USER: root
17
+ POSTGRES_HOST_AUTH_METHOD: trust
18
+ options: >-
19
+ --health-cmd pg_isready
20
+ --health-interval 10s
21
+ --health-timeout 5s
22
+ --health-retries 5
23
+ ports:
24
+ - 5432:5432
25
+
26
+ env:
27
+ PGHOST: localhost
28
+ PGUSER: root
29
+
30
+ strategy:
31
+ fail-fast: false
32
+ matrix:
33
+ ruby: ["2.5", "2.6", "2.7", "3.0"]
34
+
35
+ name: ${{ matrix.ruby }}
36
+
37
+ steps:
38
+ - uses: actions/checkout@v2
39
+
40
+ - uses: ruby/setup-ruby@v1
41
+ with:
42
+ ruby-version: ${{ matrix.ruby }}
43
+ bundler-cache: true
44
+
45
+ - run: psql -c 'CREATE DATABASE sequel_plugins'
46
+ - run: bundle exec rake
47
+
48
+ - uses: coverallsapp/github-action@v1.1.2
49
+ with:
50
+ github-token: ${{ secrets.GITHUB_TOKEN }}
51
+
52
+ deploy:
53
+ runs-on: ubuntu-latest
54
+
55
+ environment: Deploy
56
+
57
+ # Run on push to master branch
58
+ if: github.event_name == 'push' && github.ref == 'refs/heads/master'
59
+
60
+ steps:
61
+ - uses: actions/checkout@v1
62
+
63
+ - uses: umbrellio/publish-ruby-gem-action@v1
64
+ with:
65
+ api-key: ${{secrets.RUBYGEMS_API_KEY}}
data/.travis.yml CHANGED
@@ -1,6 +1,7 @@
1
1
  language: ruby
2
2
 
3
3
  os: linux
4
+
4
5
  dist: xenial
5
6
 
6
7
  jobs:
@@ -43,10 +44,6 @@ install: bundle install --jobs=3 --retry=3 --path=${BUNDLE_PATH:-vendor/bundle}
43
44
  before_script:
44
45
  - psql -c 'create database sequel_plugins;' -U postgres
45
46
 
46
- script:
47
- - bundle exec rspec
48
- - bundle exec rubocop
49
-
50
47
  deploy:
51
48
  provider: rubygems
52
49
  api_key:
data/Gemfile.lock CHANGED
@@ -1,109 +1,107 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- umbrellio-sequel-plugins (0.4.0)
4
+ umbrellio-sequel-plugins (0.5.0)
5
5
  sequel
6
- symbiont-ruby (>= 0.6)
6
+ symbiont-ruby
7
7
 
8
8
  GEM
9
9
  remote: https://rubygems.org/
10
10
  specs:
11
- activesupport (6.0.2.2)
11
+ activesupport (6.1.3)
12
12
  concurrent-ruby (~> 1.0, >= 1.0.2)
13
- i18n (>= 0.7, < 2)
14
- minitest (~> 5.1)
15
- tzinfo (~> 1.1)
16
- zeitwerk (~> 2.2)
17
- ast (2.4.0)
18
- coderay (1.1.2)
19
- concurrent-ruby (1.1.6)
20
- coveralls (0.8.23)
21
- json (>= 1.8, < 3)
22
- simplecov (~> 0.16.1)
23
- term-ansicolor (~> 1.3)
24
- thor (>= 0.19.4, < 2.0)
25
- tins (~> 1.6)
26
- diff-lcs (1.3)
27
- docile (1.3.2)
28
- i18n (1.8.2)
13
+ i18n (>= 1.6, < 2)
14
+ minitest (>= 5.1)
15
+ tzinfo (~> 2.0)
16
+ zeitwerk (~> 2.3)
17
+ ast (2.4.2)
18
+ coderay (1.1.3)
19
+ concurrent-ruby (1.1.8)
20
+ diff-lcs (1.4.4)
21
+ docile (1.3.5)
22
+ i18n (1.8.9)
29
23
  concurrent-ruby (~> 1.0)
30
- jaro_winkler (1.5.4)
31
- json (2.3.0)
32
24
  method_source (1.0.0)
33
- minitest (5.14.0)
34
- money (6.13.7)
25
+ minitest (5.14.4)
26
+ money (6.14.1)
35
27
  i18n (>= 0.6.4, <= 2)
36
- parallel (1.19.1)
37
- parser (2.7.1.0)
38
- ast (~> 2.4.0)
28
+ parallel (1.20.1)
29
+ parser (3.0.0.0)
30
+ ast (~> 2.4.1)
39
31
  pg (1.2.3)
40
- pry (0.13.0)
32
+ pry (0.14.0)
41
33
  coderay (~> 1.1)
42
34
  method_source (~> 1.0)
43
- rack (2.2.2)
35
+ rack (2.2.3)
44
36
  rainbow (3.0.0)
45
- rake (13.0.1)
37
+ rake (13.0.3)
38
+ regexp_parser (2.1.1)
46
39
  rexml (3.2.4)
47
- rspec (3.9.0)
48
- rspec-core (~> 3.9.0)
49
- rspec-expectations (~> 3.9.0)
50
- rspec-mocks (~> 3.9.0)
51
- rspec-core (3.9.1)
52
- rspec-support (~> 3.9.1)
53
- rspec-expectations (3.9.1)
40
+ rspec (3.10.0)
41
+ rspec-core (~> 3.10.0)
42
+ rspec-expectations (~> 3.10.0)
43
+ rspec-mocks (~> 3.10.0)
44
+ rspec-core (3.10.1)
45
+ rspec-support (~> 3.10.0)
46
+ rspec-expectations (3.10.1)
54
47
  diff-lcs (>= 1.2.0, < 2.0)
55
- rspec-support (~> 3.9.0)
56
- rspec-mocks (3.9.1)
48
+ rspec-support (~> 3.10.0)
49
+ rspec-mocks (3.10.2)
57
50
  diff-lcs (>= 1.2.0, < 2.0)
58
- rspec-support (~> 3.9.0)
59
- rspec-support (3.9.2)
60
- rubocop (0.81.0)
61
- jaro_winkler (~> 1.5.1)
51
+ rspec-support (~> 3.10.0)
52
+ rspec-support (3.10.2)
53
+ rubocop (1.11.0)
62
54
  parallel (~> 1.10)
63
- parser (>= 2.7.0.1)
55
+ parser (>= 3.0.0.0)
64
56
  rainbow (>= 2.2.2, < 4.0)
57
+ regexp_parser (>= 1.8, < 3.0)
65
58
  rexml
59
+ rubocop-ast (>= 1.2.0, < 2.0)
66
60
  ruby-progressbar (~> 1.7)
67
- unicode-display_width (>= 1.4.0, < 2.0)
68
- rubocop-config-umbrellio (0.81.0.78)
69
- rubocop (= 0.81.0)
70
- rubocop-performance (= 1.5.2)
71
- rubocop-rails (= 2.5.0)
72
- rubocop-rspec (= 1.38.1)
73
- rubocop-performance (1.5.2)
74
- rubocop (>= 0.71.0)
75
- rubocop-rails (2.5.0)
76
- activesupport
61
+ unicode-display_width (>= 1.4.0, < 3.0)
62
+ rubocop-ast (1.4.1)
63
+ parser (>= 2.7.1.5)
64
+ rubocop-config-umbrellio (1.11.0.40)
65
+ rubocop (= 1.11.0)
66
+ rubocop-performance (= 1.10.0)
67
+ rubocop-rails (= 2.9.1)
68
+ rubocop-rake (= 0.5.1)
69
+ rubocop-rspec (= 2.2.0)
70
+ rubocop-sequel (= 0.2.0)
71
+ rubocop-performance (1.10.0)
72
+ rubocop (>= 0.90.0, < 2.0)
73
+ rubocop-ast (>= 0.4.0)
74
+ rubocop-rails (2.9.1)
75
+ activesupport (>= 4.2.0)
77
76
  rack (>= 1.1)
78
- rubocop (>= 0.72.0)
79
- rubocop-rspec (1.38.1)
80
- rubocop (>= 0.68.1)
81
- ruby-progressbar (1.10.1)
82
- sequel (5.31.0)
83
- simplecov (0.16.1)
77
+ rubocop (>= 0.90.0, < 2.0)
78
+ rubocop-rake (0.5.1)
79
+ rubocop
80
+ rubocop-rspec (2.2.0)
81
+ rubocop (~> 1.0)
82
+ rubocop-ast (>= 1.1.0)
83
+ rubocop-sequel (0.2.0)
84
+ rubocop (~> 1.0)
85
+ ruby-progressbar (1.11.0)
86
+ sequel (5.42.0)
87
+ simplecov (0.21.2)
84
88
  docile (~> 1.1)
85
- json (>= 1.8, < 3)
86
- simplecov-html (~> 0.10.0)
87
- simplecov-html (0.10.2)
89
+ simplecov-html (~> 0.11)
90
+ simplecov_json_formatter (~> 0.1)
91
+ simplecov-html (0.12.3)
92
+ simplecov-lcov (0.8.0)
93
+ simplecov_json_formatter (0.1.2)
88
94
  symbiont-ruby (0.6.0)
89
- sync (0.5.0)
90
- term-ansicolor (1.7.1)
91
- tins (~> 1.0)
92
- thor (1.0.1)
93
- thread_safe (0.3.6)
94
- tins (1.24.1)
95
- sync
96
- tzinfo (1.2.7)
97
- thread_safe (~> 0.1)
98
- unicode-display_width (1.7.0)
99
- zeitwerk (2.3.0)
95
+ tzinfo (2.0.4)
96
+ concurrent-ruby (~> 1.0)
97
+ unicode-display_width (2.0.0)
98
+ zeitwerk (2.4.2)
100
99
 
101
100
  PLATFORMS
102
101
  ruby
103
102
 
104
103
  DEPENDENCIES
105
104
  bundler
106
- coveralls (>= 0.8)
107
105
  money
108
106
  pg
109
107
  pry
@@ -111,7 +109,8 @@ DEPENDENCIES
111
109
  rspec
112
110
  rubocop-config-umbrellio
113
111
  simplecov
112
+ simplecov-lcov
114
113
  umbrellio-sequel-plugins!
115
114
 
116
115
  BUNDLED WITH
117
- 2.1.4
116
+ 2.2.11
data/README.md CHANGED
@@ -13,29 +13,30 @@ gem 'umbrellio-sequel-plugins'
13
13
 
14
14
  And then execute:
15
15
 
16
- $ bundle
16
+ $ bundle
17
17
 
18
18
  # Extensions
19
19
 
20
- - `CurrencyRates`
21
- - `PGTools`
22
- - `Slave`
23
- - `Synchronize`
24
- - `methods_in_migrations`
25
- - `deferrable_foreign_keys`
20
+ - [`CurrencyRates`](#CurrencyRates)
21
+ - [`PGTools`](#PGTools)
22
+ - [`Slave`](#Slave)
23
+ - [`Synchronize`](#Synchronize)
24
+ - [`Methods in Migrations`](#Methods-in-Migrations)
25
+ - [`Deferrable Foreign Keys`](#Deferrable-Foreign-Keys)
26
26
 
27
27
  # Plugins
28
28
 
29
- - `Duplicate`
30
- - `GetColumnValue`
31
- - `MoneyAccessors`
32
- - `StoreAccessors`
33
- - `Synchronize`
34
- - `Upsert`
35
- - `WithLock`
29
+ - [`AttrEncrypted`](#AttrEncrypted)
30
+ - [`Duplicate`](#Duplicate)
31
+ - [`GetColumnValue`](#GetColumnValue)
32
+ - [`MoneyAccessors`](#MoneyAccessors)
33
+ - [`StoreAccessors`](#StoreAccessors)
34
+ - [`Synchronize`](#Synchronize)
35
+ - [`Upsert`](#Upsert)
36
+ - [`WithLock`](#WithLock)
36
37
 
37
38
  # Tools
38
- - `TimestampMigratorUndoExtension`
39
+ - [`TimestampMigratorUndoExtension`](#TimestampMigratorUndoExtension)
39
40
 
40
41
  ## CurrencyRates
41
42
 
@@ -203,6 +204,39 @@ end
203
204
  # => <Husband @attributes={id:1, wife_id: 1}>
204
205
  ```
205
206
 
207
+ ## AttrEncrypted
208
+
209
+ Enable: `Sequel::Model.plugin :attr_encrypted`
210
+
211
+ Plugin for storing encrypted model attributes.
212
+
213
+ Example:
214
+
215
+ ```ruby
216
+ Sequel.migration do
217
+ change do
218
+ alter_table :orders do
219
+ add_column :encrypted_first_name, :text
220
+ add_column :encrypted_last_name, :text
221
+ add_column :encrypted_secret_data, :text
222
+ end
223
+ end
224
+ end
225
+
226
+ class Order < Sequel::Model
227
+ attr_encrypted :first_name, :last_name, key: Settings.private_key
228
+ attr_encrypted :secret_data, key: Settings.another_private_key
229
+ end
230
+
231
+ Order.create(first_name: "Ivan")
232
+ # => INSERT INTO "orders" ("encrypted_first_name") VALUES ('/sTi9Q==$OTpuMRq5k8R3JayQ$WjSManQGP9UaZ3C40yDjKg==')
233
+
234
+ order = Order.create(first_name: "Ivan", last_name: "Smith",
235
+ secret_data: { "some_key" => "Some Value" })
236
+ order.first_name # => "Ivan"
237
+ order.secret_data # => { "some_key" => "Some Value" }
238
+ ```
239
+
206
240
  ## Duplicate
207
241
 
208
242
  Enable: `Sequel::Model.plugin :duplicate`
data/Rakefile CHANGED
@@ -2,7 +2,9 @@
2
2
 
3
3
  require "bundler/gem_tasks"
4
4
  require "rspec/core/rake_task"
5
+ require "rubocop/rake_task"
5
6
 
6
7
  RSpec::Core::RakeTask.new(:spec)
8
+ RuboCop::RakeTask.new(:lint)
7
9
 
8
- task default: :spec
10
+ task default: %i[lint spec]
@@ -0,0 +1,98 @@
1
+ # frozen_string_literal: true
2
+
3
+ # Creates encrypted attribute storing
4
+ module Sequel::Plugins::AttrEncrypted
5
+ SEPARATOR = "$"
6
+ require "sequel/plugins/attr_encrypted/simple_crypt"
7
+
8
+ module ClassMethods
9
+ # Setup attr encrypted
10
+ #
11
+ # @param attrs [Array<Symbol>] column names
12
+ # @param key [String] 32 bytes key
13
+ # @example
14
+ # Sequel.migration do
15
+ # change do
16
+ # alter_table :orders do
17
+ # add_column :encrypted_first_name, :text
18
+ # add_column :encrypted_last_name, :text
19
+ # add_column :encrypted_secret_data, :text
20
+ # end
21
+ # end
22
+ # end
23
+ #
24
+ # class Order < Sequel::Model
25
+ # attr_encrypted :first_name, :last_name, key: Settings.private_key
26
+ # attr_encrypted :secret_data, key: Settings.another_private_key
27
+ # end
28
+
29
+ # Order.create(first_name: "Ivan")
30
+ # # => INSERT INTO "orders" ("encrypted_first_name")
31
+ # VALUES ('/sTi9Q==$OTpuMRq5k8R3JayQ$WjSManQGP9UaZ3C40yDjKg==')
32
+ #
33
+ # order = Order.create(first_name: "Ivan", last_name: "Smith",
34
+ # secret_data: { "some_key" => "Some Value" })
35
+ # order.first_name # => "Ivan"
36
+ # order.last_name # => "Smith"
37
+ # order.secret_data # => { "some_key" => "Some Value" }
38
+ def attr_encrypted(*attrs, key:)
39
+ include_encrypted_module!
40
+ attrs.each do |attr|
41
+ define_encrypted_setter(attr, key)
42
+ define_encrypted_getter(attr, key)
43
+ @_encrypted_attributes << attr
44
+ end
45
+ end
46
+
47
+ private
48
+
49
+ def define_encrypted_setter(attr, key)
50
+ @_attr_encrypted_module.module_eval do
51
+ define_method("#{attr}=") do |value|
52
+ instance_variable_set("@#{attr}", value)
53
+
54
+ send("encrypted_#{attr}=", SimpleCrypt.encrypt(value.to_json, key))
55
+ end
56
+ end
57
+ end
58
+
59
+ def define_encrypted_getter(attr, key)
60
+ @_attr_encrypted_module.module_eval do
61
+ define_method(attr.to_s) do
62
+ instance_variable_get("@#{attr}") || begin
63
+ decrypted = SimpleCrypt.decrypt(send("encrypted_#{attr}"), key)
64
+
65
+ result = decrypted.nil? ? decrypted : JSON.parse(decrypted)
66
+ instance_variable_set("@#{attr}", result)
67
+ end
68
+ end
69
+ end
70
+ end
71
+
72
+ def include_encrypted_module!
73
+ return if defined?(@_attr_encrypted_module)
74
+
75
+ @_encrypted_attributes ||= []
76
+ @_attr_encrypted_module = Module.new
77
+ prepend @_attr_encrypted_module
78
+ end
79
+ end
80
+
81
+ module InstanceMethods
82
+ def save(*)
83
+ super.tap { _reset_encrypted_attrs_ivars }
84
+ end
85
+
86
+ def refresh(*)
87
+ super.tap { _reset_encrypted_attrs_ivars }
88
+ end
89
+
90
+ private
91
+
92
+ def _reset_encrypted_attrs_ivars
93
+ self.class.instance_variable_get(:@_encrypted_attributes)&.each do |attr|
94
+ instance_variable_set("@#{attr}", nil)
95
+ end
96
+ end
97
+ end
98
+ end
@@ -0,0 +1,46 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Sequel::Plugins::AttrEncrypted::SimpleCrypt
4
+ extend self
5
+ require "base64"
6
+
7
+ SEPARATOR = "$"
8
+
9
+ def encrypt(string, key)
10
+ return unless string.is_a?(String) && !string.empty?
11
+
12
+ encryptor = new_cipher(key, &:encrypt)
13
+ iv = encryptor.random_iv
14
+
15
+ encrypted = encryptor.update(string) + encryptor.final
16
+ dump(encrypted, iv, encryptor.auth_tag)
17
+ end
18
+
19
+ def decrypt(string, key)
20
+ encrypted, iv, auth_tag = parse(string) if string.is_a?(String)
21
+ return if [encrypted, iv, auth_tag].any?(&:nil?)
22
+
23
+ decryptor = new_cipher(key, &:decrypt)
24
+ decryptor.iv = iv
25
+ decryptor.auth_tag = auth_tag
26
+
27
+ decryptor.update(encrypted) + decryptor.final
28
+ end
29
+
30
+ private
31
+
32
+ def new_cipher(key)
33
+ result = OpenSSL::Cipher.new("aes-256-gcm")
34
+ yield(result)
35
+ result.key = key
36
+ result
37
+ end
38
+
39
+ def parse(string)
40
+ string.split(SEPARATOR).map { |x| Base64.strict_decode64(x) }
41
+ end
42
+
43
+ def dump(*values)
44
+ Array(values).map { |x| Base64.strict_encode64(x) }.join(SEPARATOR)
45
+ end
46
+ end
@@ -8,10 +8,10 @@ module Sequel
8
8
  # Rollback a migration
9
9
  def undo(version)
10
10
  path = files.find { |file| migration_version_from_file(get_filename(file)) == version }
11
- raise "Migration #{version} does not exist in the filesystem" unless path
11
+ error!("Migration #{version} does not exist in the filesystem") unless path
12
12
 
13
13
  filename = get_filename(path)
14
- raise "Migration #{version} is not applied" unless applied_migrations.include?(filename)
14
+ error!("Migration #{version} is not applied") unless applied_migrations.include?(filename)
15
15
 
16
16
  migration = get_migration(path)
17
17
 
@@ -41,7 +41,7 @@ module Sequel
41
41
  end
42
42
  end
43
43
 
44
- Sequel::TimestampMigrator.prepend TimestampMigratorLogger
44
+ Sequel::TimestampMigrator.prepend(TimestampMigratorLogger)
45
45
 
46
46
  private
47
47
 
@@ -57,6 +57,10 @@ module Sequel
57
57
  def get_filename(path)
58
58
  File.basename(path).downcase
59
59
  end
60
+
61
+ def error!(message)
62
+ raise Sequel::Migrator::Error, message
63
+ end
60
64
  end
61
65
  end
62
66
  # rubocop:enable Layout/ClassStructure
@@ -1,3 +1,3 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require_relative "umbrellio_sequel_plugins.rb"
3
+ require_relative "umbrellio_sequel_plugins"
@@ -4,11 +4,11 @@ lib = File.expand_path("lib", __dir__)
4
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- gem_version = "0.4.0"
8
- release_version = ENV["TRAVIS"] ? "#{gem_version}.#{ENV["TRAVIS_BUILD_NUMBER"]}" : gem_version
7
+ gem_version = "0.5.0"
8
+ release_version = "#{gem_version}.#{ENV["GITHUB_RUN_NUMBER"]}" if ENV["GITHUB_ACTIONS"]
9
9
 
10
10
  spec.name = "umbrellio-sequel-plugins"
11
- spec.version = release_version
11
+ spec.version = gem_version || release_version
12
12
  spec.required_ruby_version = ">= 2.4"
13
13
 
14
14
  spec.authors = ["nulldef"]
@@ -16,16 +16,15 @@ Gem::Specification.new do |spec|
16
16
  spec.homepage = "https://github.com/umbrellio/umbrellio-sequel-plugins"
17
17
  spec.licenses = ["MIT"]
18
18
  spec.summary = "Sequel plugins"
19
- spec.description = "Sequel plugins"
19
+ spec.description = "A colletion of sequel plugins by Umbrellio"
20
20
 
21
21
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_runtime_dependency "sequel"
25
- spec.add_runtime_dependency "symbiont-ruby", ">= 0.6"
25
+ spec.add_runtime_dependency "symbiont-ruby"
26
26
 
27
27
  spec.add_development_dependency "bundler"
28
- spec.add_development_dependency "coveralls", ">= 0.8"
29
28
  spec.add_development_dependency "money"
30
29
  spec.add_development_dependency "pg"
31
30
  spec.add_development_dependency "pry"
@@ -33,4 +32,5 @@ Gem::Specification.new do |spec|
33
32
  spec.add_development_dependency "rspec"
34
33
  spec.add_development_dependency "rubocop-config-umbrellio"
35
34
  spec.add_development_dependency "simplecov"
35
+ spec.add_development_dependency "simplecov-lcov"
36
36
  end
data/utils/database.rb CHANGED
@@ -22,6 +22,7 @@ Sequel.extension :pg_array_ops
22
22
  Sequel.extension :pg_json_ops
23
23
  Sequel.extension :pg_range_ops
24
24
 
25
+ Sequel::Model.plugin :attr_encrypted
25
26
  Sequel::Model.plugin :duplicate
26
27
  Sequel::Model.plugin :get_column_value
27
28
  Sequel::Model.plugin :money_accessors
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: umbrellio-sequel-plugins
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.0.121
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - nulldef
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-05-22 00:00:00.000000000 Z
11
+ date: 2021-05-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sequel
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: '0.6'
33
+ version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '0.6'
40
+ version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -53,21 +53,21 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: coveralls
56
+ name: money
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: '0.8'
61
+ version: '0'
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
- version: '0.8'
68
+ version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: money
70
+ name: pg
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: pg
84
+ name: pry
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,7 +95,7 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: pry
98
+ name: rake
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
@@ -109,7 +109,7 @@ dependencies:
109
109
  - !ruby/object:Gem::Version
110
110
  version: '0'
111
111
  - !ruby/object:Gem::Dependency
112
- name: rake
112
+ name: rspec
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: rspec
126
+ name: rubocop-config-umbrellio
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: rubocop-config-umbrellio
140
+ name: simplecov
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: simplecov
154
+ name: simplecov-lcov
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -164,7 +164,7 @@ dependencies:
164
164
  - - ">="
165
165
  - !ruby/object:Gem::Version
166
166
  version: '0'
167
- description: Sequel plugins
167
+ description: A colletion of sequel plugins by Umbrellio
168
168
  email:
169
169
  - nulldefiner@gmail.com
170
170
  - oss@umbrellio.biz
@@ -172,6 +172,7 @@ executables: []
172
172
  extensions: []
173
173
  extra_rdoc_files: []
174
174
  files:
175
+ - ".github/workflows/ci.yml"
175
176
  - ".gitignore"
176
177
  - ".rspec"
177
178
  - ".rubocop.yml"
@@ -190,6 +191,8 @@ files:
190
191
  - lib/sequel/extensions/pg_tools.rb
191
192
  - lib/sequel/extensions/slave.rb
192
193
  - lib/sequel/extensions/synchronize.rb
194
+ - lib/sequel/plugins/attr_encrypted.rb
195
+ - lib/sequel/plugins/attr_encrypted/simple_crypt.rb
193
196
  - lib/sequel/plugins/duplicate.rb
194
197
  - lib/sequel/plugins/get_column_value.rb
195
198
  - lib/sequel/plugins/money_accessors.rb
@@ -209,7 +212,7 @@ homepage: https://github.com/umbrellio/umbrellio-sequel-plugins
209
212
  licenses:
210
213
  - MIT
211
214
  metadata: {}
212
- post_install_message:
215
+ post_install_message:
213
216
  rdoc_options: []
214
217
  require_paths:
215
218
  - lib
@@ -224,9 +227,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
224
227
  - !ruby/object:Gem::Version
225
228
  version: '0'
226
229
  requirements: []
227
- rubyforge_project:
228
- rubygems_version: 2.7.7
229
- signing_key:
230
+ rubygems_version: 3.1.2
231
+ signing_key:
230
232
  specification_version: 4
231
233
  summary: Sequel plugins
232
234
  test_files: []