crypt_keeper_with_ransack 0.0.2 → 0.0.3
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 +4 -4
- data/.gitignore +1 -0
- data/crypt_keeper_with_ransack.gemspec +5 -2
- data/lib/crypt_keeper_with_ransack/version.rb +1 -1
- data/lib/crypt_keeper_with_ransack.rb +32 -1
- data/spec/crypt_keeper_with_ransack_spec.rb +13 -2
- data/spec/fake_app.rb +44 -0
- data/spec/spec_helper.rb +26 -0
- metadata +53 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70530402b5010ed3ff8b58585a68802e3eb55c36
|
4
|
+
data.tar.gz: cf3f4314fca5474ecf53e1c99fc7372269524167
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4c791165388fdb48f322e4b8199195912e9b420c2cb00d096ed22996c1f7384d8d78a6555cb9ee20887f3634722317fb0b42eb6d9fe1542e2edf7e3a1558f83
|
7
|
+
data.tar.gz: b96e1af60127d4c2cac12bf45cb79f195074427e5fd63d04601f09edcdbe44fc59cf36968647af563ed0137843e95dd05a065b2e8c6cda63323f815a3f573ebe
|
data/.gitignore
CHANGED
@@ -19,8 +19,11 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib"]
|
20
20
|
|
21
21
|
spec.add_dependency "crypt_keeper", "~> 0.18.4"
|
22
|
-
spec.add_dependency "ransack", "~> 1.6
|
22
|
+
spec.add_dependency "ransack", "~> 1.6"
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.7"
|
24
24
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
|
-
spec.add_development_dependency "
|
25
|
+
spec.add_development_dependency "rails", "~> 4.1.9"
|
26
|
+
spec.add_development_dependency "pg", "~> 0.18.1"
|
27
|
+
spec.add_development_dependency "rspec-rails", "~> 3.1.0"
|
28
|
+
spec.add_development_dependency "database_cleaner", "~> 1.4.0"
|
26
29
|
end
|
@@ -1,5 +1,36 @@
|
|
1
1
|
require "crypt_keeper_with_ransack/version"
|
2
|
+
require "crypt_keeper"
|
3
|
+
require "ransack"
|
2
4
|
|
3
5
|
module CryptKeeperWithRansack
|
4
|
-
|
6
|
+
module CryptKeeper
|
7
|
+
extend ActiveSupport::Concern
|
8
|
+
|
9
|
+
included do
|
10
|
+
alias_method_chain :crypt_keeper, :ransack
|
11
|
+
end
|
12
|
+
|
13
|
+
def crypt_keeper_with_ransack(*args)
|
14
|
+
crypt_keeper_without_ransack(*args)
|
15
|
+
|
16
|
+
crypt_keeper_fields.each do |field|
|
17
|
+
add_crypt_ransacker field, key: crypt_keeper_options[:key]
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module Ransack
|
23
|
+
extend ActiveSupport::Concern
|
24
|
+
|
25
|
+
module ClassMethods
|
26
|
+
def add_crypt_ransacker(field, key: nil)
|
27
|
+
ransacker field do |parent|
|
28
|
+
Arel.sql "pgp_sym_decrypt(cast(#{field} AS bytea), '#{key}')"
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
5
33
|
end
|
34
|
+
|
35
|
+
CryptKeeper::Model::ClassMethods.include CryptKeeperWithRansack::CryptKeeper
|
36
|
+
ActiveRecord::Base.include CryptKeeperWithRansack::Ransack
|
@@ -5,7 +5,18 @@ describe CryptKeeperWithRansack do
|
|
5
5
|
expect(CryptKeeperWithRansack::VERSION).not_to be nil
|
6
6
|
end
|
7
7
|
|
8
|
-
|
9
|
-
|
8
|
+
describe "#search" do
|
9
|
+
before :each do
|
10
|
+
User.create(name: 'MyText')
|
11
|
+
end
|
12
|
+
|
13
|
+
it { expect(User.find_by(name: 'MyText')).to be_nil }
|
14
|
+
it { expect(User.search_by_plaintext(:name, 'MyText').count).to eq 1 }
|
15
|
+
|
16
|
+
it { expect(User.where(name: 'MyText').count).to eq 0 }
|
17
|
+
it { expect(User.search(name_eq: 'MyText').result.count).to eq 1 }
|
18
|
+
|
19
|
+
it { expect(User.search(name_cont: 'My').result.count).to eq 1 }
|
20
|
+
it { expect(User.search(name_cont: 'Your').result.count).to eq 0 }
|
10
21
|
end
|
11
22
|
end
|
data/spec/fake_app.rb
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'active_record'
|
2
|
+
require 'pg'
|
3
|
+
|
4
|
+
PG_SPEC = {
|
5
|
+
:adapter => 'postgresql',
|
6
|
+
:database => 'crypt_keeper_with_ransack_test',
|
7
|
+
:encoding => 'utf8'
|
8
|
+
}
|
9
|
+
|
10
|
+
# config
|
11
|
+
ActiveRecord::Base.establish_connection(PG_SPEC.merge(database: 'postgres', schema_search_path: 'public'))
|
12
|
+
ActiveRecord::Base.connection.drop_database PG_SPEC[:database] rescue nil
|
13
|
+
ActiveRecord::Base.connection.create_database(PG_SPEC[:database])
|
14
|
+
ActiveRecord::Base.establish_connection(PG_SPEC)
|
15
|
+
|
16
|
+
module CryptKeeperWithRansackTestApp
|
17
|
+
class Application < Rails::Application
|
18
|
+
config.secret_token = [*'A'..'z'].join
|
19
|
+
config.session_store :cookie_store, :key => '_myapp_session'
|
20
|
+
config.active_support.deprecation = :log
|
21
|
+
config.eager_load = false
|
22
|
+
end
|
23
|
+
end
|
24
|
+
CryptKeeperWithRansackTestApp::Application.initialize!
|
25
|
+
|
26
|
+
# models
|
27
|
+
class User < ActiveRecord::Base
|
28
|
+
crypt_keeper :name, encryptor: :postgres_pgp, key: 'super_good_password', ransacker: true
|
29
|
+
end
|
30
|
+
|
31
|
+
# migrations
|
32
|
+
class CreateAllTables < ActiveRecord::Migration
|
33
|
+
def self.up
|
34
|
+
enable_extension :pgcrypto
|
35
|
+
create_table(:users) do |t|
|
36
|
+
t.text :name
|
37
|
+
t.timestamps
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.down
|
42
|
+
drop_table :users
|
43
|
+
end
|
44
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,2 +1,28 @@
|
|
1
1
|
$LOAD_PATH.unshift File.expand_path('../../lib', __FILE__)
|
2
|
+
require 'rails'
|
3
|
+
require 'active_record'
|
2
4
|
require 'crypt_keeper_with_ransack'
|
5
|
+
require 'fake_app'
|
6
|
+
require 'rspec/rails'
|
7
|
+
require 'database_cleaner'
|
8
|
+
|
9
|
+
RSpec.configure do |config|
|
10
|
+
config.before :all do
|
11
|
+
CreateAllTables.up unless ActiveRecord::Base.connection.table_exists? 'users'
|
12
|
+
end
|
13
|
+
|
14
|
+
config.before :suite do
|
15
|
+
DatabaseCleaner.strategy = :transaction
|
16
|
+
DatabaseCleaner.clean_with :truncation
|
17
|
+
end
|
18
|
+
|
19
|
+
config.around :each do |example|
|
20
|
+
DatabaseCleaner.cleaning do
|
21
|
+
example.run
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
config.after :each do
|
26
|
+
DatabaseCleaner.clean
|
27
|
+
end
|
28
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: crypt_keeper_with_ransack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- maimai77
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-01-
|
11
|
+
date: 2015-01-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: crypt_keeper
|
@@ -30,14 +30,14 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 1.6
|
33
|
+
version: '1.6'
|
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: 1.6
|
40
|
+
version: '1.6'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -67,19 +67,61 @@ dependencies:
|
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: '10.0'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: rails
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 4.1.9
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 4.1.9
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: pg
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
74
88
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
89
|
+
version: 0.18.1
|
76
90
|
type: :development
|
77
91
|
prerelease: false
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
79
93
|
requirements:
|
80
|
-
- - "
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 0.18.1
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec-rails
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.1.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 3.1.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: database_cleaner
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - "~>"
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 1.4.0
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - "~>"
|
81
123
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
124
|
+
version: 1.4.0
|
83
125
|
description: ''
|
84
126
|
email:
|
85
127
|
- kohta0707@gmail.com
|
@@ -98,6 +140,7 @@ files:
|
|
98
140
|
- lib/crypt_keeper_with_ransack.rb
|
99
141
|
- lib/crypt_keeper_with_ransack/version.rb
|
100
142
|
- spec/crypt_keeper_with_ransack_spec.rb
|
143
|
+
- spec/fake_app.rb
|
101
144
|
- spec/spec_helper.rb
|
102
145
|
homepage: ''
|
103
146
|
licenses:
|
@@ -125,4 +168,5 @@ specification_version: 4
|
|
125
168
|
summary: add ransacker for crypted attributes
|
126
169
|
test_files:
|
127
170
|
- spec/crypt_keeper_with_ransack_spec.rb
|
171
|
+
- spec/fake_app.rb
|
128
172
|
- spec/spec_helper.rb
|