scopie_rails 1.0.1 → 1.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +10 -4
- data/lib/generators/rspec/scopie_generator.rb +11 -0
- data/lib/generators/rspec/templates/scopie_spec.rb +4 -0
- data/lib/generators/scopie_rails/scopie/USAGE +8 -0
- data/lib/generators/scopie_rails/scopie/scopie_generator.rb +13 -0
- data/lib/generators/scopie_rails/scopie/templates/scopie.rb +4 -0
- data/lib/scopie_rails.rb +2 -1
- data/lib/scopie_rails/controller.rb +18 -4
- data/lib/scopie_rails/version.rb +1 -1
- metadata +7 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c74975fde612d205c6c5e0f74b0c4939d6ba0ac6
|
4
|
+
data.tar.gz: 445d27e9da50cc477811e561fa208ddc991a510b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ac70de4033ed79c3da88cd517264c7e3831e4732cbbe6561370172f66a967954236819cdfe59d9d8fb7a3f109f46ae54c97b2df669e9fb7da1aad7b0d94d50b
|
7
|
+
data.tar.gz: fbeb34488d40978aa21100de898ef086aaa7cad144bbdaa27be2fed41c0eddbdad4d34a181fe5f7e8dedabeff6ad579447b36dbcdf6ecfbf1b17580b826de940
|
data/README.md
CHANGED
@@ -13,8 +13,8 @@ ScopieRails allows you to map incoming controller parameters to named scopes in
|
|
13
13
|
Motivation:
|
14
14
|
|
15
15
|
* Dedicated class for scopes mapping, so that the logic is isolated and your controller is skinny.
|
16
|
-
* Ability to override default mapping behavior by definition of a method
|
17
|
-
* Ability to DRY your custom scopes mapping logic
|
16
|
+
* Ability to override default mapping behavior by definition of a method having the same name as a scope in the scopie class.
|
17
|
+
* Ability to use the object oriented approach to DRY your custom scopes mapping logic and reuse the scopie class.
|
18
18
|
|
19
19
|
Imagine the following model called graduations:
|
20
20
|
|
@@ -121,6 +121,10 @@ Add `scopie_rails` to your Gemfile or install it from Rubygems.
|
|
121
121
|
gem 'scopie_rails'
|
122
122
|
```
|
123
123
|
|
124
|
+
## Mutation testing
|
125
|
+
|
126
|
+
mutant --include lib --require scopie_rails --use rspec ScopieRails*
|
127
|
+
|
124
128
|
## Options
|
125
129
|
|
126
130
|
Scopie supports several options:
|
@@ -137,17 +141,19 @@ Scopie supports several options:
|
|
137
141
|
|
138
142
|
* `:allow_blank` - Blank values are not sent to scopes by default. Set to true to overwrite.
|
139
143
|
|
144
|
+
* `:ignore_blank` - Set to true to not apply the scope if blank value is given.
|
145
|
+
|
140
146
|
* `:default` - Default value for the scope. Whenever supplied the scope is always called.
|
141
147
|
|
142
148
|
## Rails
|
143
149
|
|
144
150
|
ScopieRails provides Rails integration for [Scopie][s].
|
145
151
|
|
146
|
-
Among other things it adds a
|
152
|
+
Among other things it adds a `controller` method to scopies.
|
147
153
|
|
148
154
|
## Thanks
|
149
155
|
|
150
|
-
Scopie was inspired by [has_scope](http://github.com/plataformatec/has_scope) and [pundit](http://github.com/elabs/
|
156
|
+
Scopie was inspired by [has_scope](http://github.com/plataformatec/has_scope) and [pundit](http://github.com/elabs/pundit).
|
151
157
|
|
152
158
|
Thanks to both.
|
153
159
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module Rspec
|
2
|
+
module Generators
|
3
|
+
class ScopieGenerator < ::Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
5
|
+
|
6
|
+
def create_scopie_spec
|
7
|
+
template 'scopie_spec.rb', File.join('spec/scopies', class_path, "#{file_name}_scopie_spec.rb")
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module ScopieRails
|
2
|
+
module Generators
|
3
|
+
class ScopieGenerator < ::Rails::Generators::NamedBase
|
4
|
+
source_root File.expand_path(File.join(File.dirname(__FILE__), 'templates'))
|
5
|
+
|
6
|
+
def create_scopie
|
7
|
+
template 'scopie.rb', File.join('app/scopies', class_path, "#{file_name}_scopie.rb")
|
8
|
+
end
|
9
|
+
|
10
|
+
hook_for :test_framework
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/scopie_rails.rb
CHANGED
@@ -7,8 +7,9 @@ require 'active_support/core_ext/string/inflections'
|
|
7
7
|
|
8
8
|
module ScopieRails
|
9
9
|
|
10
|
-
SCOPIE_SUFFIX = '_scopie'
|
10
|
+
SCOPIE_SUFFIX = '_scopie'.freeze
|
11
11
|
|
12
|
+
require 'scopie_rails/version'
|
12
13
|
require 'scopie_rails/engine' if defined?(Rails)
|
13
14
|
require 'scopie_rails/base'
|
14
15
|
require 'scopie_rails/controller'
|
@@ -10,21 +10,35 @@ module ScopieRails::Controller
|
|
10
10
|
@default_scopie ||= find_scopie_class.new(self)
|
11
11
|
end
|
12
12
|
|
13
|
+
# Receives an object where scopes will be applied to.
|
14
|
+
#
|
15
|
+
# class GraduationsScopie < Scopie::Base
|
16
|
+
# has_scope :featured, type: :boolean
|
17
|
+
# has_scope :by_degree, :by_period
|
18
|
+
# end
|
19
|
+
#
|
20
|
+
# class GraduationsController < ApplicationController
|
21
|
+
# include ScopieRails::Controller
|
22
|
+
#
|
23
|
+
# def index
|
24
|
+
# @graduations = apply_scopes(Graduation).all
|
25
|
+
# end
|
26
|
+
# end
|
27
|
+
#
|
13
28
|
def apply_scopes(target, scopie: default_scopie, hash: params)
|
14
29
|
Scopie.apply_scopes(target, hash, method: hash[:action], scopie: scopie)
|
15
30
|
end
|
16
31
|
|
32
|
+
# Returns the scopes used in this action.
|
17
33
|
def current_scopes(scopie: default_scopie, hash: params)
|
18
34
|
Scopie.current_scopes(hash, method: hash[:action], scopie: scopie)
|
19
35
|
end
|
20
36
|
|
21
37
|
def find_scopie_class
|
22
|
-
return
|
38
|
+
return scopie_class if scopie_class
|
23
39
|
|
24
40
|
scopie_name = params[:controller] + ScopieRails::SCOPIE_SUFFIX
|
25
41
|
|
26
|
-
self.
|
27
|
-
|
28
|
-
self.class.scopie_class
|
42
|
+
self.scopie_class = scopie_name.camelize.constantize
|
29
43
|
end
|
30
44
|
end
|
data/lib/scopie_rails/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scopie_rails
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Yury Kotov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: scopie
|
@@ -73,6 +73,11 @@ extra_rdoc_files: []
|
|
73
73
|
files:
|
74
74
|
- LICENSE
|
75
75
|
- README.md
|
76
|
+
- lib/generators/rspec/scopie_generator.rb
|
77
|
+
- lib/generators/rspec/templates/scopie_spec.rb
|
78
|
+
- lib/generators/scopie_rails/scopie/USAGE
|
79
|
+
- lib/generators/scopie_rails/scopie/scopie_generator.rb
|
80
|
+
- lib/generators/scopie_rails/scopie/templates/scopie.rb
|
76
81
|
- lib/scopie_rails.rb
|
77
82
|
- lib/scopie_rails/base.rb
|
78
83
|
- lib/scopie_rails/controller.rb
|