has_scope 0.5.0 → 0.5.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +2 -0
- data/Gemfile +13 -0
- data/README.rdoc +3 -3
- data/Rakefile +2 -20
- data/has_scope.gemspec +26 -0
- data/lib/has_scope.rb +4 -4
- data/lib/has_scope/version.rb +3 -0
- data/test/has_scope_test.rb +16 -2
- data/test/test_helper.rb +12 -20
- metadata +19 -8
data/.gitignore
ADDED
data/Gemfile
ADDED
data/README.rdoc
CHANGED
@@ -35,12 +35,12 @@ Then for each request:
|
|
35
35
|
/graduations?featured=true
|
36
36
|
#=> calls the named scope and bring featured graduations
|
37
37
|
|
38
|
-
/graduations?featured=true&by_degree=phd
|
39
|
-
#=> brings featured graduations with phd degree
|
40
|
-
|
41
38
|
/graduations?params[by_period][started_at]=20100701¶ms[by_period][ended_at]=20101013
|
42
39
|
#=> brings graduations in the given period
|
43
40
|
|
41
|
+
/graduations?featured=true&by_degree=phd
|
42
|
+
#=> brings featured graduations with phd degree
|
43
|
+
|
44
44
|
You can retrieve all the scopes applied in one action with <tt>current_scopes</tt> method.
|
45
45
|
In the last case, it would return: { :featured => true, :by_degree => "phd" }.
|
46
46
|
|
data/Rakefile
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# encoding: UTF-8
|
2
2
|
require 'rake'
|
3
3
|
require 'rake/testtask'
|
4
|
-
require '
|
4
|
+
require 'rdoc/task'
|
5
5
|
|
6
6
|
desc 'Default: run unit tests.'
|
7
7
|
task :default => :test
|
@@ -21,22 +21,4 @@ Rake::RDocTask.new(:rdoc) do |rdoc|
|
|
21
21
|
rdoc.options << '--line-numbers' << '--inline-source'
|
22
22
|
rdoc.rdoc_files.include('README.rdoc')
|
23
23
|
rdoc.rdoc_files.include('lib/**/*.rb')
|
24
|
-
end
|
25
|
-
|
26
|
-
begin
|
27
|
-
require 'jeweler'
|
28
|
-
Jeweler::Tasks.new do |s|
|
29
|
-
s.name = "has_scope"
|
30
|
-
s.version = "0.5.0"
|
31
|
-
s.summary = "Maps controller filters to your resource scopes"
|
32
|
-
s.email = "contact@plataformatec.com.br"
|
33
|
-
s.homepage = "http://github.com/plataformatec/has_scope"
|
34
|
-
s.description = "Maps controller filters to your resource scopes"
|
35
|
-
s.authors = ['José Valim']
|
36
|
-
s.files = FileList["[A-Z]*", "lib/**/*", "init.rb"]
|
37
|
-
end
|
38
|
-
|
39
|
-
Jeweler::GemcutterTasks.new
|
40
|
-
rescue LoadError
|
41
|
-
puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
|
42
|
-
end
|
24
|
+
end
|
data/has_scope.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
2
|
+
$:.push File.expand_path("../lib", __FILE__)
|
3
|
+
require "has_scope/version"
|
4
|
+
|
5
|
+
Gem::Specification.new do |s|
|
6
|
+
s.name = "has_scope"
|
7
|
+
s.version = HasScope::VERSION.dup
|
8
|
+
s.platform = Gem::Platform::RUBY
|
9
|
+
s.summary = "Maps controller filters to your resource scopes."
|
10
|
+
s.email = "developers@plataformatec.com.br"
|
11
|
+
s.homepage = "http://github.com/plataformatec/has_scope"
|
12
|
+
s.description = "Maps controller filters to your resource scopes"
|
13
|
+
s.authors = ['José Valim']
|
14
|
+
|
15
|
+
s.rubyforge_project = "has_scope"
|
16
|
+
|
17
|
+
s.files = `git ls-files`.split("\n")
|
18
|
+
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
|
+
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
|
+
s.require_paths = ["lib"]
|
21
|
+
|
22
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
23
|
+
s.extra_rdoc_files = [
|
24
|
+
"README.rdoc"
|
25
|
+
]
|
26
|
+
end
|
data/lib/has_scope.rb
CHANGED
@@ -12,7 +12,7 @@ module HasScope
|
|
12
12
|
base.class_eval do
|
13
13
|
extend ClassMethods
|
14
14
|
helper_method :current_scopes
|
15
|
-
|
15
|
+
class_attribute :scopes_configuration, :instance_writer => false
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
@@ -58,7 +58,7 @@ module HasScope
|
|
58
58
|
# end
|
59
59
|
#
|
60
60
|
# has_scope :not_voted_by_me, :type => :boolean do |controller, scope|
|
61
|
-
# scope.not_voted_by(controller.current_user.id)
|
61
|
+
# scope.not_voted_by(controller.current_user.id)
|
62
62
|
# end
|
63
63
|
#
|
64
64
|
def has_scope(*scopes, &block)
|
@@ -79,11 +79,11 @@ module HasScope
|
|
79
79
|
options[:only] = Array(options[:only])
|
80
80
|
options[:except] = Array(options[:except])
|
81
81
|
|
82
|
-
self.scopes_configuration
|
82
|
+
self.scopes_configuration = (self.scopes_configuration || {}).dup
|
83
83
|
|
84
84
|
scopes.each do |scope|
|
85
85
|
self.scopes_configuration[scope] ||= { :as => scope, :type => :default, :block => block }
|
86
|
-
self.scopes_configuration[scope].merge
|
86
|
+
self.scopes_configuration[scope] = self.scopes_configuration[scope].merge(options)
|
87
87
|
end
|
88
88
|
end
|
89
89
|
end
|
data/test/has_scope_test.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require 'test_helper'
|
2
2
|
|
3
3
|
class Tree
|
4
4
|
end
|
@@ -42,12 +42,21 @@ class TreesController < ApplicationController
|
|
42
42
|
def show_all_colors?
|
43
43
|
false
|
44
44
|
end
|
45
|
-
|
45
|
+
|
46
46
|
def default_render
|
47
47
|
render :text => action_name
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
+
class BonsaisController < TreesController
|
52
|
+
has_scope :categories, :if => :categories?
|
53
|
+
|
54
|
+
protected
|
55
|
+
def categories?
|
56
|
+
false
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
51
60
|
class HasScopeTest < ActionController::TestCase
|
52
61
|
tests TreesController
|
53
62
|
|
@@ -222,6 +231,11 @@ class HasScopeTest < ActionController::TestCase
|
|
222
231
|
assert_equal({ :by_category => 'for' }, current_scopes)
|
223
232
|
end
|
224
233
|
|
234
|
+
def test_overwritten_scope
|
235
|
+
assert_nil(TreesController.scopes_configuration[:categories][:if])
|
236
|
+
assert_equal(:categories?, BonsaisController.scopes_configuration[:categories][:if])
|
237
|
+
end
|
238
|
+
|
225
239
|
protected
|
226
240
|
|
227
241
|
def mock_tree(stubs={})
|
data/test/test_helper.rb
CHANGED
@@ -1,39 +1,31 @@
|
|
1
1
|
require 'rubygems'
|
2
|
+
require 'bundler'
|
2
3
|
|
3
|
-
|
4
|
-
gem "test-unit"
|
5
|
-
rescue LoadError
|
6
|
-
end
|
7
|
-
|
8
|
-
begin
|
9
|
-
gem "ruby-debug"
|
10
|
-
require 'ruby-debug'
|
11
|
-
rescue LoadError
|
12
|
-
end
|
13
|
-
|
4
|
+
Bundler.setup
|
14
5
|
require 'test/unit'
|
15
6
|
require 'mocha'
|
16
7
|
|
8
|
+
# Configure Rails
|
17
9
|
ENV["RAILS_ENV"] = "test"
|
18
|
-
RAILS_ROOT = "anywhere"
|
19
10
|
|
20
11
|
require 'active_support'
|
21
12
|
require 'action_controller'
|
22
13
|
require 'action_dispatch/middleware/flash'
|
23
14
|
|
24
|
-
|
25
|
-
|
26
|
-
$:.unshift File.expand_path(File.dirname(__FILE__) + '/../lib')
|
15
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
27
16
|
require 'has_scope'
|
28
17
|
|
29
|
-
HasScope::
|
30
|
-
HasScope::
|
31
|
-
|
32
|
-
|
18
|
+
HasScope::Routes = ActionDispatch::Routing::RouteSet.new
|
19
|
+
HasScope::Routes.draw do
|
20
|
+
match '/:controller(/:action(/:id))'
|
21
|
+
end
|
22
|
+
|
23
|
+
class ApplicationController < ActionController::Base
|
24
|
+
include HasScope::Routes.url_helpers
|
33
25
|
end
|
34
26
|
|
35
27
|
class ActiveSupport::TestCase
|
36
28
|
setup do
|
37
|
-
@
|
29
|
+
@routes = HasScope::Routes
|
38
30
|
end
|
39
31
|
end
|
metadata
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: has_scope
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
hash: 9
|
5
|
+
prerelease:
|
5
6
|
segments:
|
6
7
|
- 0
|
7
8
|
- 5
|
8
|
-
-
|
9
|
-
version: 0.5.
|
9
|
+
- 1
|
10
|
+
version: 0.5.1
|
10
11
|
platform: ruby
|
11
12
|
authors:
|
12
13
|
- "Jos\xC3\xA9 Valim"
|
@@ -14,12 +15,12 @@ autorequire:
|
|
14
15
|
bindir: bin
|
15
16
|
cert_chain: []
|
16
17
|
|
17
|
-
date:
|
18
|
+
date: 2011-08-02 00:00:00 +02:00
|
18
19
|
default_executable:
|
19
20
|
dependencies: []
|
20
21
|
|
21
22
|
description: Maps controller filters to your resource scopes
|
22
|
-
email:
|
23
|
+
email: developers@plataformatec.com.br
|
23
24
|
executables: []
|
24
25
|
|
25
26
|
extensions: []
|
@@ -27,11 +28,17 @@ extensions: []
|
|
27
28
|
extra_rdoc_files:
|
28
29
|
- README.rdoc
|
29
30
|
files:
|
31
|
+
- .gitignore
|
32
|
+
- Gemfile
|
30
33
|
- MIT-LICENSE
|
31
34
|
- README.rdoc
|
32
35
|
- Rakefile
|
36
|
+
- has_scope.gemspec
|
33
37
|
- init.rb
|
34
38
|
- lib/has_scope.rb
|
39
|
+
- lib/has_scope/version.rb
|
40
|
+
- test/has_scope_test.rb
|
41
|
+
- test/test_helper.rb
|
35
42
|
has_rdoc: true
|
36
43
|
homepage: http://github.com/plataformatec/has_scope
|
37
44
|
licenses: []
|
@@ -42,26 +49,30 @@ rdoc_options:
|
|
42
49
|
require_paths:
|
43
50
|
- lib
|
44
51
|
required_ruby_version: !ruby/object:Gem::Requirement
|
52
|
+
none: false
|
45
53
|
requirements:
|
46
54
|
- - ">="
|
47
55
|
- !ruby/object:Gem::Version
|
56
|
+
hash: 3
|
48
57
|
segments:
|
49
58
|
- 0
|
50
59
|
version: "0"
|
51
60
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
61
|
+
none: false
|
52
62
|
requirements:
|
53
63
|
- - ">="
|
54
64
|
- !ruby/object:Gem::Version
|
65
|
+
hash: 3
|
55
66
|
segments:
|
56
67
|
- 0
|
57
68
|
version: "0"
|
58
69
|
requirements: []
|
59
70
|
|
60
|
-
rubyforge_project:
|
61
|
-
rubygems_version: 1.
|
71
|
+
rubyforge_project: has_scope
|
72
|
+
rubygems_version: 1.6.2
|
62
73
|
signing_key:
|
63
74
|
specification_version: 3
|
64
|
-
summary: Maps controller filters to your resource scopes
|
75
|
+
summary: Maps controller filters to your resource scopes.
|
65
76
|
test_files:
|
66
77
|
- test/has_scope_test.rb
|
67
78
|
- test/test_helper.rb
|