fish0 0.0.16 → 0.0.17
Sign up to get free protection for your applications and to get access to all the features.
- 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
|