routing-filter 0.3.1 → 0.4.0.pre
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
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: dae448fa20d77a3acbcc23bb63e5cb829b2cc3f8
|
4
|
+
data.tar.gz: e067c24c3c3644b82b5d62f1a373224ae3ef2276
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a02a85cad0a7030297ac0db2c857d29718612b1ae8b86f055a40c98bc84e49c2006f0e6d20ce1fd09f4bbe698b391a6f70e1e5689bc1d50e0705b5d07c26cbba
|
7
|
+
data.tar.gz: 5ea13645e8d27fcc89b600f2fe76c8ba2eeb08f5bb55b43bb88f5cf9b9e7cc1c8ea7007a949d17f16a6b5a2d6eca8282905b0a0e7a5b7b6c5de0ebc6417099d5
|
data/README.markdown
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
# Routing Filter
|
2
2
|
|
3
|
+
[](http://travis-ci.org/svenfuchs/routing-filter)
|
4
|
+
|
3
5
|
Routing filters wrap around the complex beast that the Rails routing system is
|
4
6
|
to allow for unseen flexibility and power in Rails URL recognition and
|
5
7
|
generation.
|
@@ -60,6 +62,17 @@ Filters can also accept options:
|
|
60
62
|
filter :locale, :exclude => /^\/admin/
|
61
63
|
end
|
62
64
|
|
65
|
+
### Testing
|
66
|
+
|
67
|
+
RoutingFilter should not be enabled in functional tests by default since the Rails router gets
|
68
|
+
bypassed for most testcases. Having RoutingFilter enabled in this setup can cause missing parameters
|
69
|
+
in the test environment. Routing tests can/should re-enable RoutingFilter since the whole routing stack
|
70
|
+
gets executed for these testcases.
|
71
|
+
|
72
|
+
To disable RoutingFilter in your test suite add the following to your test_helper.rb / spec_helper.rb:
|
73
|
+
|
74
|
+
RoutingFilter.active = false
|
75
|
+
|
63
76
|
## Running the tests
|
64
77
|
|
65
78
|
To run the tests against different dependencies [appraisal](https://github.com/thoughtbot/appraisal) is used.
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'action_dispatch'
|
2
|
+
require 'active_support/core_ext/module/aliasing'
|
3
|
+
require 'active_support/core_ext/hash/reverse_merge'
|
4
|
+
|
5
|
+
mappers = [ActionDispatch::Routing::Mapper]
|
6
|
+
mappers << ActionDispatch::Routing::DeprecatedMapper if defined?(ActionDispatch::Routing::DeprecatedMapper)
|
7
|
+
mappers.each do |mapper|
|
8
|
+
mapper.class_eval do
|
9
|
+
def filter(*args)
|
10
|
+
@set.add_filters(*args)
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
ActionDispatch::Routing::RouteSet.class_eval do
|
16
|
+
def filters
|
17
|
+
@set.filters if @set
|
18
|
+
end
|
19
|
+
|
20
|
+
def add_filters(*names)
|
21
|
+
options = names.extract_options!
|
22
|
+
names.each { |name| filters.unshift(RoutingFilter.build(name, options)) }
|
23
|
+
end
|
24
|
+
|
25
|
+
def generate_with_filtering(options, recall = {})
|
26
|
+
# `around_generate` is destructive method and it breaks url. To avoid this, `dup` is required.
|
27
|
+
filters.run(:around_generate, options, &lambda{ generate_without_filtering(options, recall).map(&:dup) })
|
28
|
+
end
|
29
|
+
alias_method_chain :generate, :filtering
|
30
|
+
|
31
|
+
def clear_with_filtering!
|
32
|
+
filters.clear if filters
|
33
|
+
clear_without_filtering!
|
34
|
+
end
|
35
|
+
alias_method_chain :clear!, :filtering
|
36
|
+
end
|
37
|
+
|
38
|
+
ActionDispatch::Journey::Routes.class_eval do
|
39
|
+
def filters
|
40
|
+
@filters || RoutingFilter::Chain.new.tap { |f| @filters = f unless frozen? }
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
require 'routing_filter/adapters/routers/journey'
|
@@ -1,15 +1,21 @@
|
|
1
|
-
|
2
|
-
|
1
|
+
if defined?(ActionDispatch::Journey) # rails 4
|
2
|
+
journey = ActionDispatch::Journey
|
3
|
+
else # rails 3.2
|
4
|
+
require 'journey/routes'
|
5
|
+
require 'journey/router'
|
6
|
+
journey = Journey
|
7
|
+
end
|
3
8
|
|
4
|
-
|
9
|
+
journey::Routes.class_eval do
|
5
10
|
def filters
|
6
11
|
@filters || RoutingFilter::Chain.new.tap { |f| @filters = f unless frozen? }
|
7
12
|
end
|
8
13
|
end
|
9
14
|
|
10
|
-
|
15
|
+
journey::Router.class_eval do
|
11
16
|
def find_routes_with_filtering env
|
12
17
|
path, filter_parameters = env['PATH_INFO'], {}
|
18
|
+
original_path = path.dup
|
13
19
|
|
14
20
|
@routes.filters.run(:around_recognize, path, env) do
|
15
21
|
filter_parameters
|
@@ -17,6 +23,8 @@ Journey::Router.class_eval do
|
|
17
23
|
|
18
24
|
find_routes_without_filtering(env).map do |match, parameters, route|
|
19
25
|
[ match, parameters.merge(filter_parameters), route ]
|
26
|
+
end.tap do |match, parameters, route|
|
27
|
+
env['PATH_INFO'] = original_path # restore the original path
|
20
28
|
end
|
21
29
|
end
|
22
30
|
alias_method_chain :find_routes, :filtering
|
metadata
CHANGED
@@ -1,60 +1,71 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: routing-filter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
5
|
-
prerelease:
|
4
|
+
version: 0.4.0.pre
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Sven Fuchs
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date:
|
11
|
+
date: 2013-07-20 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: actionpack
|
16
|
-
requirement:
|
17
|
-
none: false
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
18
16
|
requirements:
|
19
|
-
- -
|
17
|
+
- - '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
19
|
version: '0'
|
22
20
|
type: :runtime
|
23
21
|
prerelease: false
|
24
|
-
version_requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
25
27
|
- !ruby/object:Gem::Dependency
|
26
28
|
name: appraisal
|
27
|
-
requirement:
|
28
|
-
none: false
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
29
30
|
requirements:
|
30
|
-
- -
|
31
|
+
- - '>='
|
31
32
|
- !ruby/object:Gem::Version
|
32
33
|
version: '0'
|
33
34
|
type: :development
|
34
35
|
prerelease: false
|
35
|
-
version_requirements:
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
36
41
|
- !ruby/object:Gem::Dependency
|
37
42
|
name: i18n
|
38
|
-
requirement:
|
39
|
-
none: false
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
40
44
|
requirements:
|
41
|
-
- -
|
45
|
+
- - '>='
|
42
46
|
- !ruby/object:Gem::Version
|
43
47
|
version: '0'
|
44
48
|
type: :development
|
45
49
|
prerelease: false
|
46
|
-
version_requirements:
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
47
55
|
- !ruby/object:Gem::Dependency
|
48
56
|
name: test_declarative
|
49
|
-
requirement:
|
50
|
-
none: false
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
51
58
|
requirements:
|
52
|
-
- -
|
59
|
+
- - '>='
|
53
60
|
- !ruby/object:Gem::Version
|
54
61
|
version: '0'
|
55
62
|
type: :development
|
56
63
|
prerelease: false
|
57
|
-
version_requirements:
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '>='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
58
69
|
description: Routing filters wraps around the complex beast that the Rails routing
|
59
70
|
system is, allowing for unseen flexibility and power in Rails URL recognition and
|
60
71
|
generation.
|
@@ -67,42 +78,42 @@ files:
|
|
67
78
|
- README.markdown
|
68
79
|
- MIT-LICENSE
|
69
80
|
- lib/routing/filter.rb
|
70
|
-
- lib/routing-filter.rb
|
71
|
-
- lib/routing_filter/adapters/rails_2.rb
|
72
|
-
- lib/routing_filter/adapters/rails_3.rb
|
73
|
-
- lib/routing_filter/adapters/routers/journey.rb
|
74
|
-
- lib/routing_filter/adapters/routers/rack_mount.rb
|
75
81
|
- lib/routing_filter/chain.rb
|
76
|
-
- lib/routing_filter/filter.rb
|
77
|
-
- lib/routing_filter/filters/extension.rb
|
78
82
|
- lib/routing_filter/filters/locale.rb
|
79
|
-
- lib/routing_filter/filters/pagination.rb
|
80
83
|
- lib/routing_filter/filters/uuid.rb
|
84
|
+
- lib/routing_filter/filters/pagination.rb
|
85
|
+
- lib/routing_filter/filters/extension.rb
|
81
86
|
- lib/routing_filter/version.rb
|
87
|
+
- lib/routing_filter/filter.rb
|
88
|
+
- lib/routing_filter/adapters/rails_3.rb
|
89
|
+
- lib/routing_filter/adapters/rails_4.rb
|
90
|
+
- lib/routing_filter/adapters/routers/journey.rb
|
91
|
+
- lib/routing_filter/adapters/routers/rack_mount.rb
|
92
|
+
- lib/routing_filter/adapters/rails_2.rb
|
82
93
|
- lib/routing_filter.rb
|
94
|
+
- lib/routing-filter.rb
|
83
95
|
homepage: http://github.com/svenfuchs/routing-filter
|
84
96
|
licenses: []
|
97
|
+
metadata: {}
|
85
98
|
post_install_message:
|
86
99
|
rdoc_options: []
|
87
100
|
require_paths:
|
88
101
|
- lib
|
89
102
|
required_ruby_version: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
103
|
requirements:
|
92
|
-
- -
|
104
|
+
- - '>='
|
93
105
|
- !ruby/object:Gem::Version
|
94
106
|
version: '0'
|
95
107
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
96
|
-
none: false
|
97
108
|
requirements:
|
98
|
-
- -
|
109
|
+
- - '>'
|
99
110
|
- !ruby/object:Gem::Version
|
100
|
-
version:
|
111
|
+
version: 1.3.1
|
101
112
|
requirements: []
|
102
|
-
rubyforge_project:
|
103
|
-
rubygems_version:
|
113
|
+
rubyforge_project: '[none]'
|
114
|
+
rubygems_version: 2.0.3
|
104
115
|
signing_key:
|
105
|
-
specification_version:
|
116
|
+
specification_version: 4
|
106
117
|
summary: Routing filters wraps around the complex beast that the Rails routing system
|
107
118
|
is, allowing for unseen flexibility and power in Rails URL recognition and generation
|
108
119
|
test_files: []
|