fish0 0.0.16 → 0.0.17
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/lib/fish0/concerns/base.rb +13 -4
- data/lib/fish0/repository.rb +13 -0
- data/lib/fish0/version.rb +1 -1
- data/spec/dummy/config/environments/test.rb +2 -2
- data/spec/dummy/log/test.log +82 -0
- data/spec/lib/repository_spec.rb +24 -0
- metadata +6 -5
- data/spec/base_spec.rb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d69c6b541aef5106bcbde90fe859d69b8de46c47
|
4
|
+
data.tar.gz: 65fd640653d559a41446a4e144eb15a60379b773
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ba6fb5b83e0b5453a80490d94b5dc1d3fece02daec600187cfd03227b4291d6c3c51d1f8b898ccf376cdead9d9e4cfcd04a6c25fc6d6776fc2991d67881aa2cd
|
7
|
+
data.tar.gz: 1a3801d5342555f6992d184a94272420bb377741473b8d9c955adf4c4f02b1913214ec437027e4070b62f93fe117dcd4285274163d4c0d66ff30525c9ca78b26
|
data/lib/fish0/concerns/base.rb
CHANGED
@@ -27,6 +27,11 @@ module Fish0
|
|
27
27
|
include Virtus.model(coerce: false)
|
28
28
|
end
|
29
29
|
|
30
|
+
def scope(name, body)
|
31
|
+
@scopes ||= []
|
32
|
+
@scopes << [name, body]
|
33
|
+
end
|
34
|
+
|
30
35
|
def method_missing(method_name, *arguments, &block)
|
31
36
|
if repository.respond_to?(method_name)
|
32
37
|
repository.send(method_name, *arguments, &block)
|
@@ -54,10 +59,14 @@ module Fish0
|
|
54
59
|
end
|
55
60
|
|
56
61
|
def repository
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
62
|
+
rep = repository_class.new(collection, entity)
|
63
|
+
@scopes.each { |s| rep.scope(*s) }
|
64
|
+
rep
|
65
|
+
end
|
66
|
+
|
67
|
+
def repository_class
|
68
|
+
return "#{entity}Repository".constantize if "#{entity}Repository".safe_constantize
|
69
|
+
Fish0::Repository
|
61
70
|
end
|
62
71
|
end
|
63
72
|
end
|
data/lib/fish0/repository.rb
CHANGED
@@ -87,6 +87,19 @@ module Fish0
|
|
87
87
|
self
|
88
88
|
end
|
89
89
|
|
90
|
+
def scope(name, body)
|
91
|
+
return if respond_to?(name)
|
92
|
+
|
93
|
+
unless body.respond_to?(:call)
|
94
|
+
raise ArgumentError, 'The scope body needs to be callable.'
|
95
|
+
end
|
96
|
+
|
97
|
+
define_singleton_method(name) do |*args|
|
98
|
+
instance_exec(*args, &body)
|
99
|
+
self
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
90
103
|
def fetch
|
91
104
|
scoped = find(conditions, sort: order)
|
92
105
|
scoped = scoped.projection(@projection) if @projection
|
data/lib/fish0/version.rb
CHANGED
@@ -13,8 +13,8 @@ Rails.application.configure do
|
|
13
13
|
config.eager_load = false
|
14
14
|
|
15
15
|
# Configure static file server for tests with Cache-Control for performance.
|
16
|
-
config.public_file_server.enabled = true
|
17
|
-
config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
|
16
|
+
# config.public_file_server.enabled = true
|
17
|
+
# config.public_file_server.headers = { 'Cache-Control' => 'public, max-age=3600' }
|
18
18
|
|
19
19
|
# Show full error reports and disable caching.
|
20
20
|
config.consider_all_requests_local = true
|
@@ -0,0 +1,82 @@
|
|
1
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
2
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
3
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000544s
|
4
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
5
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000201s
|
6
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
7
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00021700000000000002s
|
8
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
9
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000167s
|
10
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
11
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000174s
|
12
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
13
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000152s
|
14
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
15
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000172s
|
16
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
17
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
18
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00061s
|
19
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
20
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
21
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.0005390000000000001s
|
22
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
23
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
24
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.0005549999999999999s
|
25
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
26
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
27
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000577s
|
28
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
29
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
30
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000513s
|
31
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
32
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
33
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00053s
|
34
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
35
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
36
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000583s
|
37
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
38
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000264s
|
39
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
40
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000195s
|
41
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
42
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
43
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00065s
|
44
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
45
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000228s
|
46
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
47
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000262s
|
48
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
49
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00039799999999999997s
|
50
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
51
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
52
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000533s
|
53
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
54
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000216s
|
55
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
56
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000209s
|
57
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
58
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000212s
|
59
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
60
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000246s
|
61
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
62
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
63
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00062s
|
64
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
65
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000192s
|
66
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
67
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000209s
|
68
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
69
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000219s
|
70
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
71
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00023600000000000002s
|
72
|
+
MONGODB | Adding localhost:27017 to the cluster.
|
73
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
74
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000676s
|
75
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
76
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000238s
|
77
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
78
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.000201s
|
79
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
80
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00019600000000000002s
|
81
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | STARTED | {"dropDatabase"=>1}
|
82
|
+
MONGODB | localhost:27017 | fish0_development.dropDatabase | SUCCEEDED | 0.00021700000000000002s
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
RSpec.describe Fish0::Repository do
|
4
|
+
let(:repository) { Fish0::Repository.new('articles') }
|
5
|
+
let(:scoped_repository) { Fish0::Repository.new('articles') }
|
6
|
+
|
7
|
+
describe '#scope' do
|
8
|
+
before do
|
9
|
+
scoped_repository.scope :by_slug, -> (slug) { where(slug: slug) }
|
10
|
+
end
|
11
|
+
|
12
|
+
it 'has no scoped method :by_slug for new repository' do
|
13
|
+
expect(repository).not_to respond_to(:by_slug)
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'has scoped method :by_slug for scoped repository' do
|
17
|
+
expect(scoped_repository).to respond_to(:by_slug)
|
18
|
+
end
|
19
|
+
|
20
|
+
it 'returns self and therefore supports chaining' do
|
21
|
+
expect(scoped_repository.by_slug('news')).to be_an(Fish0::Repository)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fish0
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.17
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Zuev
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-11-30 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -176,7 +176,6 @@ files:
|
|
176
176
|
- lib/fish0/paginator.rb
|
177
177
|
- lib/fish0/repository.rb
|
178
178
|
- lib/fish0/version.rb
|
179
|
-
- spec/base_spec.rb
|
180
179
|
- spec/dummy/README.rdoc
|
181
180
|
- spec/dummy/Rakefile
|
182
181
|
- spec/dummy/app/assets/javascripts/application.js
|
@@ -209,11 +208,13 @@ files:
|
|
209
208
|
- spec/dummy/config/routes.rb
|
210
209
|
- spec/dummy/config/secrets.yml
|
211
210
|
- spec/dummy/log/development.log
|
211
|
+
- spec/dummy/log/test.log
|
212
212
|
- spec/dummy/public/404.html
|
213
213
|
- spec/dummy/public/422.html
|
214
214
|
- spec/dummy/public/500.html
|
215
215
|
- spec/dummy/public/favicon.ico
|
216
216
|
- spec/factories/article.rb
|
217
|
+
- spec/lib/repository_spec.rb
|
217
218
|
- spec/models/model_spec.rb
|
218
219
|
- spec/spec_helper.rb
|
219
220
|
- spec/support/factory_girl.rb
|
@@ -246,7 +247,6 @@ signing_key:
|
|
246
247
|
specification_version: 4
|
247
248
|
summary: Plugin for read-only content websites
|
248
249
|
test_files:
|
249
|
-
- spec/base_spec.rb
|
250
250
|
- spec/dummy/app/assets/javascripts/application.js
|
251
251
|
- spec/dummy/app/assets/stylesheets/application.css
|
252
252
|
- spec/dummy/app/controllers/application_controller.rb
|
@@ -277,6 +277,7 @@ test_files:
|
|
277
277
|
- spec/dummy/config/secrets.yml
|
278
278
|
- spec/dummy/config.ru
|
279
279
|
- spec/dummy/log/development.log
|
280
|
+
- spec/dummy/log/test.log
|
280
281
|
- spec/dummy/public/404.html
|
281
282
|
- spec/dummy/public/422.html
|
282
283
|
- spec/dummy/public/500.html
|
@@ -284,9 +285,9 @@ test_files:
|
|
284
285
|
- spec/dummy/Rakefile
|
285
286
|
- spec/dummy/README.rdoc
|
286
287
|
- spec/factories/article.rb
|
288
|
+
- spec/lib/repository_spec.rb
|
287
289
|
- spec/models/model_spec.rb
|
288
290
|
- spec/spec_helper.rb
|
289
291
|
- spec/support/factory_girl.rb
|
290
292
|
- spec/support/mongo_cleaner.rb
|
291
293
|
- spec/support/update_behaviour.rb
|
292
|
-
has_rdoc:
|
data/spec/base_spec.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
RSpec.describe 'Fish0::Base' do
|
4
|
-
let!(:headline) { FFaker::Lorem.sentence }
|
5
|
-
let!(:article) { create(:article, headline: headline) }
|
6
|
-
let!(:other_article) { create(:article) }
|
7
|
-
|
8
|
-
describe '.find_one' do
|
9
|
-
subject { Article.find_one(query) }
|
10
|
-
|
11
|
-
context 'when article with such headline exists in the database' do
|
12
|
-
let(:query) { { headline: headline } }
|
13
|
-
it { is_expected.to eq(article) }
|
14
|
-
end
|
15
|
-
|
16
|
-
context 'when there is no such article in database' do
|
17
|
-
let(:query) { { headline: 'кирриллица' } }
|
18
|
-
it { is_expected.to be_nil }
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe '.find_one!' do
|
23
|
-
subject { Article.find_one!(query) }
|
24
|
-
|
25
|
-
context 'when article with such headline exists in the database' do
|
26
|
-
let(:query) { { headline: headline } }
|
27
|
-
it { is_expected.to eq(article) }
|
28
|
-
end
|
29
|
-
|
30
|
-
context 'when there is no such article in database' do
|
31
|
-
let(:query) { { headline: 'кирриллица' } }
|
32
|
-
it 'raises exception' do
|
33
|
-
expect { subject }.to raise_error(Fish0::RecordNotFound)
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|