has_scope 0.6.0.rc → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: eb5c20d9ff1cb1bbd626b15574b9159fd50dfa47
4
- data.tar.gz: 783dd0bc45a0bf8d97a16c77bdee0f24a52c926a
3
+ metadata.gz: 48513d85f54847d588aec0efc61f818a2ffebefe
4
+ data.tar.gz: 8c85796fc391a814bbb821f006934ded14bd820f
5
5
  SHA512:
6
- metadata.gz: 56bc3e1fc2043a227dd8bf18e34896e6b5c6d5693a61be1ef45b49f13cf035157a572efffdde6b3e95ef1f230cd498a8d044a004689635eb0367d7cdbf607efc
7
- data.tar.gz: 9cd682408a65660d72646f32a9447ceca58d498af77fdc502ea7ad0f9c39ff2aaa3f5a3fcb0f907c75ec99f6c62e7af3837c762b70e5dd1836c0b902b3a5b643
6
+ metadata.gz: 9648a802b913abb6873ec394d14c3fe22404e788f1a984901439a3c5883351dc9b3223bdb67c4f443351db16e56b9502b3923c8e0c0770448893e5f4eb1c7350
7
+ data.tar.gz: 49c94cbb4ef1d0376078deb8ac6c81cbc61b1092e0440b36f53dc362240799bf503a8a91338c8b9a5a52425fa4cced774f9965e7c65d03c280eb37546ddc592e
@@ -1,4 +1,4 @@
1
- Copyright 2009-2013 Plataforma Tecnologia. http://blog.plataformatec.com.br
1
+ Copyright 2009-2015 Plataforma Tecnologia. http://blog.plataformatec.com.br
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md CHANGED
@@ -11,6 +11,7 @@ Imagine the following model called graduations:
11
11
  class Graduation < ActiveRecord::Base
12
12
  scope :featured, -> { where(:featured => true) }
13
13
  scope :by_degree, -> degree { where(:degree => degree) }
14
+ scope :by_period, -> started_at, ended_at { where("started_at = ? AND ended_at = ?", started_at, ended_at) }
14
15
  end
15
16
  ```
16
17
 
@@ -29,7 +30,7 @@ Now, if you want to apply them to an specific resource, you just need to call `a
29
30
  class GraduationsController < ApplicationController
30
31
  has_scope :featured, :type => :boolean
31
32
  has_scope :by_degree
32
- has_scope :by_period, :using => [:started_at, :ended_at]
33
+ has_scope :by_period, :using => [:started_at, :ended_at], :type => :hash
33
34
 
34
35
  def index
35
36
  @graduations = apply_scopes(Graduation).all
@@ -46,7 +47,7 @@ Then for each request:
46
47
  /graduations?featured=true
47
48
  #=> calls the named scope and bring featured graduations
48
49
 
49
- /graduations?params[by_period][started_at]=20100701&params[by_period][ended_at]=20101013
50
+ /graduations?by_period[started_at]=20100701&by_period[ended_at]=20101013
50
51
  #=> brings graduations in the given period
51
52
 
52
53
  /graduations?featured=true&by_degree=phd
@@ -68,7 +69,11 @@ gem 'has_scope'
68
69
 
69
70
  HasScope supports several options:
70
71
 
71
- * `:type` - Checks the type of the parameter sent. If set to :boolean it just calls the named scope, without any argument. By default, it does not allow hashes or arrays to be given, except if type :hash or :array are set.
72
+ * `:type` - Checks the type of the parameter sent.
73
+ By default, it does not allow hashes or arrays to be given,
74
+ except if type `:hash` or `:array` are set.
75
+ Symbols are never permitted to prevent memory leaks, so ensure any routing
76
+ constraints you have that add parameters use string values.
72
77
 
73
78
  * `:only` - In which actions the scope is applied.
74
79
 
@@ -86,6 +91,25 @@ HasScope supports several options:
86
91
 
87
92
  * `:allow_blank` - Blank values are not sent to scopes by default. Set to true to overwrite.
88
93
 
94
+ * `:in` - A shortcut for combining the `:using` option with nested hashes.
95
+
96
+ ## Boolean usage
97
+
98
+ If `type: :boolean` is set it just calls the named scope, without any arguments, when parameter
99
+ is set to a "true" value. `'true'` and `'1'` are parsed as `true`, everything else as `false`.
100
+
101
+ When boolean scope is set up with `allow_blank: true`, it will call the scope
102
+ with the value as usual scope.
103
+
104
+ ```ruby
105
+ has_scope :visible, type: :boolean
106
+ has_scope :active, type: :boolean, allow_blank: true
107
+
108
+ # and models with
109
+ scope :visible, -> { where(visible: true) }
110
+ scope :active, ->(value = true) { where(active: value) }
111
+ ```
112
+
89
113
  ## Block usage
90
114
 
91
115
  `has_scope` also accepts a block. The controller, current scope and value are yielded
@@ -98,7 +122,8 @@ has_scope :category do |controller, scope, value|
98
122
  end
99
123
  ```
100
124
 
101
- When used with booleans, it just receives two arguments and is just invoked if true is given:
125
+ When used with booleans without `:allow_blank`, it just receives two arguments
126
+ and is just invoked if true is given:
102
127
 
103
128
  ```ruby
104
129
  has_scope :not_voted_by_me, :type => :boolean do |controller, scope|
@@ -106,10 +131,24 @@ has_scope :not_voted_by_me, :type => :boolean do |controller, scope|
106
131
  end
107
132
  ```
108
133
 
134
+ ## Apply scope on every request
135
+
136
+ To apply scope on every request set default value and `allow_blank: true`:
137
+
138
+ ```ruby
139
+ has_scope :available, default: nil, allow_blank: true, only: :show, unless: :admin?
140
+
141
+ # model:
142
+ scope :available, ->(*) { where(blocked: false) }
143
+ ```
144
+
145
+ This will allow usual users to get only available items, but admins will
146
+ be able to access blocked items too.
147
+
109
148
  ## Bugs and Feedback
110
149
 
111
150
  If you discover any bugs or want to drop a line, feel free to create an issue on GitHub.
112
151
 
113
152
  http://github.com/plataformatec/has_scope/issues
114
153
 
115
- MIT License. Copyright 2009-2013 Plataformatec. http://blog.plataformatec.com.br
154
+ MIT License. Copyright 2009-2015 Plataformatec. http://blog.plataformatec.com.br
@@ -2,16 +2,17 @@ module HasScope
2
2
  TRUE_VALUES = ["true", true, "1", 1]
3
3
 
4
4
  ALLOWED_TYPES = {
5
- :array => [ Array ],
6
- :hash => [ Hash ],
7
- :boolean => [ Object ],
8
- :default => [ String, Numeric ]
5
+ :array => [[ Array ]],
6
+ :hash => [[ Hash ]],
7
+ :boolean => [[ Object ], -> v { TRUE_VALUES.include?(v) }],
8
+ :default => [[ String, Numeric ]],
9
9
  }
10
10
 
11
11
  def self.included(base)
12
12
  base.class_eval do
13
13
  extend ClassMethods
14
14
  class_attribute :scopes_configuration, :instance_writer => false
15
+ self.scopes_configuration = {}
15
16
  end
16
17
  end
17
18
 
@@ -63,7 +64,12 @@ module HasScope
63
64
  def has_scope(*scopes, &block)
64
65
  options = scopes.extract_options!
65
66
  options.symbolize_keys!
66
- options.assert_valid_keys(:type, :only, :except, :if, :unless, :default, :as, :using, :allow_blank)
67
+ options.assert_valid_keys(:type, :only, :except, :if, :unless, :default, :as, :using, :allow_blank, :in)
68
+
69
+ if options.key?(:in)
70
+ options[:as] = options[:in]
71
+ options[:using] = scopes
72
+ end
67
73
 
68
74
  if options.key?(:using)
69
75
  if options.key?(:type) && options[:type] != :hash
@@ -78,11 +84,11 @@ module HasScope
78
84
  options[:only] = Array(options[:only])
79
85
  options[:except] = Array(options[:except])
80
86
 
81
- self.scopes_configuration = (self.scopes_configuration || {}).dup
87
+ self.scopes_configuration = scopes_configuration.dup
82
88
 
83
89
  scopes.each do |scope|
84
- self.scopes_configuration[scope] ||= { :as => scope, :type => :default, :block => block }
85
- self.scopes_configuration[scope] = self.scopes_configuration[scope].merge(options)
90
+ scopes_configuration[scope] ||= { :as => scope, :type => :default, :block => block }
91
+ scopes_configuration[scope] = self.scopes_configuration[scope].merge(options)
86
92
  end
87
93
  end
88
94
  end
@@ -101,9 +107,7 @@ module HasScope
101
107
  # end
102
108
  #
103
109
  def apply_scopes(target, hash=params)
104
- return target unless scopes_configuration
105
-
106
- self.scopes_configuration.each do |scope, options|
110
+ scopes_configuration.each do |scope, options|
107
111
  next unless apply_scope_to_action?(options)
108
112
  key = options[:as]
109
113
 
@@ -111,7 +115,9 @@ module HasScope
111
115
  value, call_scope = hash[key], true
112
116
  elsif options.key?(:default)
113
117
  value, call_scope = options[:default], true
114
- value = value.call(self) if value.is_a?(Proc)
118
+ if value.is_a?(Proc)
119
+ value = value.arity == 0 ? value.call : value.call(self)
120
+ end
115
121
  end
116
122
 
117
123
  value = parse_value(options[:type], key, value)
@@ -128,19 +134,18 @@ module HasScope
128
134
 
129
135
  # Set the real value for the current scope if type check.
130
136
  def parse_value(type, key, value) #:nodoc:
131
- if type == :boolean
132
- TRUE_VALUES.include?(value)
133
- elsif value && ALLOWED_TYPES[type].any?{ |klass| value.is_a?(klass) }
134
- value
137
+ klasses, parser = ALLOWED_TYPES[type]
138
+ if klasses.any? { |klass| value.is_a?(klass) }
139
+ parser ? parser.call(value) : value
135
140
  end
136
141
  end
137
142
 
138
143
  # Screens pseudo-blank params.
139
144
  def normalize_blanks(value) #:nodoc:
140
- return value if value.nil?
141
- if value.is_a?(Array)
145
+ case value
146
+ when Array
142
147
  value.select { |v| v.present? }
143
- elsif value.is_a?(Hash)
148
+ when Hash
144
149
  value.select { |k, v| normalize_blanks(v).present? }.with_indifferent_access
145
150
  else
146
151
  value
@@ -151,7 +156,7 @@ module HasScope
151
156
  def call_scope_by_type(type, scope, target, value, options) #:nodoc:
152
157
  block = options[:block]
153
158
 
154
- if type == :boolean
159
+ if type == :boolean && !options[:allow_blank]
155
160
  block ? block.call(self, target) : target.send(scope)
156
161
  elsif value && options.key?(:using)
157
162
  value = value.values_at(*options[:using])
@@ -177,14 +182,14 @@ module HasScope
177
182
  # method, or string evals to the expected value.
178
183
  def applicable?(string_proc_or_symbol, expected) #:nodoc:
179
184
  case string_proc_or_symbol
180
- when String
181
- eval(string_proc_or_symbol) == expected
182
- when Proc
183
- string_proc_or_symbol.call(self) == expected
184
- when Symbol
185
- send(string_proc_or_symbol) == expected
186
- else
187
- true
185
+ when String
186
+ eval(string_proc_or_symbol) == expected
187
+ when Proc
188
+ string_proc_or_symbol.call(self) == expected
189
+ when Symbol
190
+ send(string_proc_or_symbol) == expected
191
+ else
192
+ true
188
193
  end
189
194
  end
190
195
 
@@ -1,3 +1,3 @@
1
1
  module HasScope
2
- VERSION = "0.6.0.rc"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -1,17 +1,23 @@
1
1
  require 'test_helper'
2
2
 
3
- class Tree
4
- end
3
+ HasScope::ALLOWED_TYPES[:date] = [[String], -> v { Date.parse(v) rescue nil }]
4
+
5
+ class Tree; end
5
6
 
6
7
  class TreesController < ApplicationController
7
8
  has_scope :color, :unless => :show_all_colors?
8
9
  has_scope :only_tall, :type => :boolean, :only => :index, :if => :restrict_to_only_tall_trees?
9
10
  has_scope :shadown_range, :default => 10, :except => [ :index, :show, :new ]
10
11
  has_scope :root_type, :as => :root, :allow_blank => true
12
+ has_scope :planted_before, :default => proc { Date.today }
13
+ has_scope :planted_after, :type => :date
11
14
  has_scope :calculate_height, :default => proc {|c| c.session[:height] || 20 }, :only => :new
12
15
  has_scope :paginate, :type => :hash
13
16
  has_scope :args_paginate, :type => :hash, :using => [:page, :per_page]
14
17
  has_scope :categories, :type => :array
18
+ has_scope :title, :in => :q
19
+ has_scope :content, :in => :q
20
+ has_scope :conifer, type: :boolean, :allow_blank => true
15
21
 
16
22
  has_scope :only_short, :type => :boolean do |controller, scope|
17
23
  scope.only_really_short!(controller.object_id)
@@ -73,7 +79,31 @@ class HasScopeTest < ActionController::TestCase
73
79
  Tree.expects(:all).returns([mock_tree])
74
80
  get :index, :only_tall => 'false'
75
81
  assert_equal([mock_tree], assigns(:trees))
76
- assert_equal({}, current_scopes)
82
+ assert_equal({ }, current_scopes)
83
+ end
84
+
85
+ def test_boolean_scope_with_allow_blank_is_called_when_boolean_param_is_true
86
+ Tree.expects(:conifer).with(true).returns(Tree).in_sequence
87
+ Tree.expects(:all).returns([mock_tree]).in_sequence
88
+ get :index, :conifer => 'true'
89
+ assert_equal([mock_tree], assigns(:trees))
90
+ assert_equal({ :conifer => true }, current_scopes)
91
+ end
92
+
93
+ def test_boolean_scope_with_allow_blank_is_called_when_boolean_param_is_false
94
+ Tree.expects(:conifer).with(false).returns(Tree).in_sequence
95
+ Tree.expects(:all).returns([mock_tree]).in_sequence
96
+ get :index, :conifer => 'not_true'
97
+ assert_equal([mock_tree], assigns(:trees))
98
+ assert_equal({ :conifer => false }, current_scopes)
99
+ end
100
+
101
+ def test_boolean_scope_with_allow_blank_is_not_called_when_boolean_param_is_not_present
102
+ Tree.expects(:conifer).never
103
+ Tree.expects(:all).returns([mock_tree])
104
+ get :index
105
+ assert_equal([mock_tree], assigns(:trees))
106
+ assert_equal({ }, current_scopes)
77
107
  end
78
108
 
79
109
  def test_scope_is_called_only_on_index
@@ -103,7 +133,7 @@ class HasScopeTest < ActionController::TestCase
103
133
  end
104
134
 
105
135
  def test_scope_is_called_except_on_index
106
- Tree.expects(:shadown_range).with().never
136
+ Tree.expects(:shadown_range).never
107
137
  Tree.expects(:all).returns([mock_tree])
108
138
  get :index, :shadown_range => 20
109
139
  assert_equal([mock_tree], assigns(:trees))
@@ -209,7 +239,7 @@ class HasScopeTest < ActionController::TestCase
209
239
  Tree.expects(:all).returns([mock_tree])
210
240
  get :index, :paginate => "1"
211
241
  assert_equal([mock_tree], assigns(:trees))
212
- assert_equal({}, current_scopes)
242
+ assert_equal({ }, current_scopes)
213
243
  end
214
244
 
215
245
  def test_scope_is_called_with_default_value
@@ -236,35 +266,63 @@ class HasScopeTest < ActionController::TestCase
236
266
  assert_equal({ :root => 'outside' }, current_scopes)
237
267
  end
238
268
 
239
- def test_scope_with_default_value_as_proc
269
+ def test_scope_with_default_value_as_a_proc_without_argument
270
+ Date.expects(:today).returns("today")
271
+ Tree.expects(:planted_before).with("today").returns(Tree)
272
+ Tree.expects(:all).returns([mock_tree])
273
+ get :index
274
+ assert_equal([mock_tree], assigns(:trees))
275
+ assert_equal({ :planted_before => "today" }, current_scopes)
276
+ end
277
+
278
+ def test_scope_with_default_value_as_proc_with_argument
240
279
  session[:height] = 100
241
280
  Tree.expects(:calculate_height).with(100).returns(Tree).in_sequence
242
281
  Tree.expects(:new).returns(mock_tree).in_sequence
243
282
  get :new
244
283
  assert_equal(mock_tree, assigns(:tree))
245
284
  assert_equal({ :calculate_height => 100 }, current_scopes)
246
- end
247
-
248
- def test_scope_with_boolean_block
249
- Tree.expects(:only_really_short!).with(@controller.object_id).returns(Tree)
250
- Tree.expects(:all).returns([mock_tree])
251
- get :index, :only_short => 'true'
252
- assert_equal([mock_tree], assigns(:trees))
253
- assert_equal({ :only_short => true }, current_scopes)
254
- end
255
-
256
- def test_scope_with_other_block_types
257
- Tree.expects(:by_given_category).with(@controller.object_id, 'for_id').returns(Tree)
258
- Tree.expects(:all).returns([mock_tree])
259
- get :index, :by_category => 'for'
260
- assert_equal([mock_tree], assigns(:trees))
261
- assert_equal({ :by_category => 'for' }, current_scopes)
262
- end
263
-
264
- def test_overwritten_scope
265
- assert_nil(TreesController.scopes_configuration[:categories][:if])
266
- assert_equal(:categories?, BonsaisController.scopes_configuration[:categories][:if])
267
- end
285
+ end
286
+
287
+ def test_scope_with_custom_type
288
+ parsed = Date.civil(2014,11,11)
289
+ Tree.expects(:planted_after).with(parsed).returns(Tree)
290
+ Tree.expects(:all).returns([mock_tree])
291
+ get :index, :planted_after => "2014-11-11"
292
+ assert_equal([mock_tree], assigns(:trees))
293
+ assert_equal({ :planted_after => parsed }, current_scopes)
294
+ end
295
+
296
+ def test_scope_with_boolean_block
297
+ Tree.expects(:only_really_short!).with(@controller.object_id).returns(Tree)
298
+ Tree.expects(:all).returns([mock_tree])
299
+ get :index, :only_short => 'true'
300
+ assert_equal([mock_tree], assigns(:trees))
301
+ assert_equal({ :only_short => true }, current_scopes)
302
+ end
303
+
304
+ def test_scope_with_other_block_types
305
+ Tree.expects(:by_given_category).with(@controller.object_id, 'for_id').returns(Tree)
306
+ Tree.expects(:all).returns([mock_tree])
307
+ get :index, :by_category => 'for'
308
+ assert_equal([mock_tree], assigns(:trees))
309
+ assert_equal({ :by_category => 'for' }, current_scopes)
310
+ end
311
+
312
+ def test_scope_with_nested_hash_and_in_option
313
+ hash = { 'title' => 'the-title', 'content' => 'the-content' }
314
+ Tree.expects(:title).with('the-title').returns(Tree)
315
+ Tree.expects(:content).with('the-content').returns(Tree)
316
+ Tree.expects(:all).returns([mock_tree])
317
+ get :index, :q => hash
318
+ assert_equal([mock_tree], assigns(:trees))
319
+ assert_equal({ :q => hash }, current_scopes)
320
+ end
321
+
322
+ def test_overwritten_scope
323
+ assert_nil(TreesController.scopes_configuration[:categories][:if])
324
+ assert_equal(:categories?, BonsaisController.scopes_configuration[:categories][:if])
325
+ end
268
326
 
269
327
  protected
270
328
 
@@ -1,11 +1,11 @@
1
- require 'bundler'
1
+ require 'bundler/setup'
2
2
 
3
- Bundler.setup
4
- require 'test/unit'
5
- require 'mocha/setup'
3
+ require 'minitest/autorun'
4
+ require 'mocha'
5
+ require 'mocha/mini_test'
6
6
 
7
7
  # Configure Rails
8
- ENV["RAILS_ENV"] = "test"
8
+ ENV['RAILS_ENV'] = 'test'
9
9
 
10
10
  require 'active_support'
11
11
  require 'action_controller'
@@ -24,6 +24,8 @@ class ApplicationController < ActionController::Base
24
24
  end
25
25
 
26
26
  class ActiveSupport::TestCase
27
+ self.test_order = :random if respond_to?(:test_order=)
28
+
27
29
  setup do
28
30
  @routes = HasScope::Routes
29
31
  end
metadata CHANGED
@@ -1,71 +1,64 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: has_scope
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.0.rc
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - José Valim
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2013-05-09 00:00:00.000000000 Z
11
+ date: 2015-02-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: actionpack
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - '>='
17
+ - - ">="
18
18
  - !ruby/object:Gem::Version
19
19
  version: '3.2'
20
- - - <
20
+ - - "<"
21
21
  - !ruby/object:Gem::Version
22
22
  version: '5'
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - '>='
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: '3.2'
30
- - - <
30
+ - - "<"
31
31
  - !ruby/object:Gem::Version
32
32
  version: '5'
33
33
  - !ruby/object:Gem::Dependency
34
34
  name: activesupport
35
35
  requirement: !ruby/object:Gem::Requirement
36
36
  requirements:
37
- - - '>='
37
+ - - ">="
38
38
  - !ruby/object:Gem::Version
39
39
  version: '3.2'
40
- - - <
40
+ - - "<"
41
41
  - !ruby/object:Gem::Version
42
42
  version: '5'
43
43
  type: :runtime
44
44
  prerelease: false
45
45
  version_requirements: !ruby/object:Gem::Requirement
46
46
  requirements:
47
- - - '>='
47
+ - - ">="
48
48
  - !ruby/object:Gem::Version
49
49
  version: '3.2'
50
- - - <
50
+ - - "<"
51
51
  - !ruby/object:Gem::Version
52
52
  version: '5'
53
53
  description: Maps controller filters to your resource scopes
54
- email: developers@plataformatec.com.br
54
+ email: opensource@plataformatec.com.br
55
55
  executables: []
56
56
  extensions: []
57
57
  extra_rdoc_files:
58
58
  - README.md
59
59
  files:
60
- - .gitignore
61
- - .travis.yml
62
- - Gemfile
63
- - Gemfile.lock
64
60
  - MIT-LICENSE
65
61
  - README.md
66
- - Rakefile
67
- - gemfiles/Gemfile-rails.3.2.x
68
- - has_scope.gemspec
69
62
  - lib/has_scope.rb
70
63
  - lib/has_scope/version.rb
71
64
  - test/has_scope_test.rb
@@ -76,25 +69,26 @@ licenses:
76
69
  metadata: {}
77
70
  post_install_message:
78
71
  rdoc_options:
79
- - --charset=UTF-8
72
+ - "--charset=UTF-8"
80
73
  require_paths:
81
74
  - lib
82
75
  required_ruby_version: !ruby/object:Gem::Requirement
83
76
  requirements:
84
- - - '>='
77
+ - - ">="
85
78
  - !ruby/object:Gem::Version
86
79
  version: '0'
87
80
  required_rubygems_version: !ruby/object:Gem::Requirement
88
81
  requirements:
89
- - - '>'
82
+ - - ">="
90
83
  - !ruby/object:Gem::Version
91
- version: 1.3.1
84
+ version: '0'
92
85
  requirements: []
93
- rubyforge_project: has_scope
94
- rubygems_version: 2.0.3
86
+ rubyforge_project:
87
+ rubygems_version: 2.4.5
95
88
  signing_key:
96
89
  specification_version: 4
97
90
  summary: Maps controller filters to your resource scopes.
98
91
  test_files:
99
92
  - test/has_scope_test.rb
100
93
  - test/test_helper.rb
94
+ has_rdoc:
data/.gitignore DELETED
@@ -1,2 +0,0 @@
1
- .bundle
2
- gemfiles/*.lock
@@ -1,14 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 1.9.3
4
- - 2.0.0
5
- gemfile:
6
- - Gemfile
7
- - gemfiles/Gemfile-rails.3.2.x
8
- notifications:
9
- email: false
10
- campfire:
11
- on_success: change
12
- on_failure: always
13
- rooms:
14
- - secure: "kysymH2KAtGgNLcWPaNLVENtghORHJC6yUxGzJ5y+JrzUwkr4gTOv0nMyw5k\nsHCN1F1mJtbiXxFOZpxDaWMSGVhP7ThRy0esovkfzkAHihbyPClX241eJcyD\nI3f7/BZN4gfiR+Mbml2frLKHOtEtrm2h0gIEsXJ/YL+Ysf0nxHw="
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gemspec
4
-
5
- gem 'actionpack', '~> 4.0.0.rc1'
6
- gem 'activesupport', '~> 4.0.0.rc1'
7
- gem 'mocha', '~> 0.13.2', require: false
8
- gem 'rake'
@@ -1,48 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- has_scope (0.6.0.rc)
5
- actionpack (>= 3.2, < 5)
6
- activesupport (>= 3.2, < 5)
7
-
8
- GEM
9
- remote: https://rubygems.org/
10
- specs:
11
- actionpack (4.0.0.rc1)
12
- activesupport (= 4.0.0.rc1)
13
- builder (~> 3.1.0)
14
- erubis (~> 2.7.0)
15
- rack (~> 1.5.2)
16
- rack-test (~> 0.6.2)
17
- activesupport (4.0.0.rc1)
18
- i18n (~> 0.6, >= 0.6.4)
19
- minitest (~> 4.2)
20
- multi_json (~> 1.3)
21
- thread_safe (~> 0.1)
22
- tzinfo (~> 0.3.37)
23
- atomic (1.1.9)
24
- builder (3.1.4)
25
- erubis (2.7.0)
26
- i18n (0.6.4)
27
- metaclass (0.0.1)
28
- minitest (4.7.4)
29
- mocha (0.13.3)
30
- metaclass (~> 0.0.1)
31
- multi_json (1.7.3)
32
- rack (1.5.2)
33
- rack-test (0.6.2)
34
- rack (>= 1.0)
35
- rake (10.0.4)
36
- thread_safe (0.1.0)
37
- atomic
38
- tzinfo (0.3.37)
39
-
40
- PLATFORMS
41
- ruby
42
-
43
- DEPENDENCIES
44
- actionpack (~> 4.0.0.rc1)
45
- activesupport (~> 4.0.0.rc1)
46
- has_scope!
47
- mocha (~> 0.13.2)
48
- rake
data/Rakefile DELETED
@@ -1,26 +0,0 @@
1
- # encoding: UTF-8
2
-
3
- require 'bundler/gem_tasks'
4
-
5
- require 'rake/testtask'
6
- require 'rdoc/task'
7
-
8
- desc 'Default: run unit tests.'
9
- task :default => :test
10
-
11
- desc 'Test HasScope'
12
- Rake::TestTask.new(:test) do |t|
13
- t.libs << 'lib'
14
- t.libs << 'test'
15
- t.pattern = 'test/**/*_test.rb'
16
- t.verbose = true
17
- end
18
-
19
- desc 'Generate documentation for HasScope'
20
- Rake::RDocTask.new(:rdoc) do |rdoc|
21
- rdoc.rdoc_dir = 'rdoc'
22
- rdoc.title = 'HasScope'
23
- rdoc.options << '--line-numbers' << '--inline-source'
24
- rdoc.rdoc_files.include('README.md')
25
- rdoc.rdoc_files.include('lib/**/*.rb')
26
- end
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- gem 'has_scope', path: '..'
4
-
5
- gem 'actionpack', '~> 3.2.0'
6
- gem 'activesupport', '~> 3.2.0'
7
- gem 'mocha', '~> 0.13.2', require: false
8
- gem 'rake'
@@ -1,30 +0,0 @@
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
- s.license = 'MIT'
15
-
16
- s.rubyforge_project = "has_scope"
17
-
18
- s.files = `git ls-files`.split("\n")
19
- s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
20
- s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
- s.require_paths = ["lib"]
22
-
23
- s.rdoc_options = ["--charset=UTF-8"]
24
- s.extra_rdoc_files = [
25
- "README.md"
26
- ]
27
-
28
- s.add_runtime_dependency "actionpack", ">= 3.2", "< 5"
29
- s.add_runtime_dependency "activesupport", ">= 3.2", "< 5"
30
- end