mobylette 3.1 → 3.2
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.
- data/README.rdoc +3 -0
- data/lib/mobylette/resolvers/chained_fallback_resolver.rb +26 -5
- data/lib/mobylette/respond_to_mobile_requests.rb +2 -4
- data/lib/mobylette/version.rb +1 -1
- data/spec/dummy/log/test.log +28 -0
- data/spec/lib/resolvers/chained_fallback_resolver_spec.rb +14 -3
- metadata +33 -15
- data/spec/dummy/log/development.log +0 -0
data/README.rdoc
CHANGED
@@ -10,6 +10,9 @@ http://tscolari.github.com/mobylette/mobylette_images/mobylette.jpg
|
|
10
10
|
|
11
11
|
= Mobylette
|
12
12
|
{<img src="https://secure.travis-ci.org/tscolari/mobylette.png" />}[http://travis-ci.org/tscolari/mobylette]
|
13
|
+
{<img src="https://gemnasium.com/tscolari/mobylette.png" />}[https://gemnasium.com/tscolari/mobylette]
|
14
|
+
{<img src="https://codeclimate.com/badge.png" />}[https://codeclimate.com/github/tscolari/mobylette]
|
15
|
+
|
13
16
|
|
14
17
|
This gem works by adding the 'mobile' format to your rails application. Whenever a request come from a mobile device, if you have your controller mobile enabled, it shall render the view.mobile.erb instead of the view.html.erb (or haml, or whatever).
|
15
18
|
|
@@ -1,13 +1,15 @@
|
|
1
1
|
module Mobylette
|
2
2
|
module Resolvers
|
3
3
|
class ChainedFallbackResolver < ::ActionView::FileSystemResolver
|
4
|
+
DEFAULT_PATTERN = "{:path}/:prefix/:action{.:locale,}{.:formats,}{.:handlers,}"
|
4
5
|
|
5
6
|
# Initializes the fallback resolver with a default
|
6
7
|
# mobile format.
|
7
8
|
#
|
8
|
-
def initialize(formats = {})
|
9
|
-
@fallback_formats = formats
|
10
|
-
|
9
|
+
def initialize(formats = {}, view_paths = ['app/views'])
|
10
|
+
@fallback_formats = formats
|
11
|
+
@paths = view_paths.map { |view_path| File.expand_path(view_path)}
|
12
|
+
super(@paths.first, DEFAULT_PATTERN)
|
11
13
|
end
|
12
14
|
|
13
15
|
# Updates the fallback resolver replacing the
|
@@ -29,10 +31,12 @@ module Mobylette
|
|
29
31
|
# it will behave as a normal FileSystemResovler.
|
30
32
|
#
|
31
33
|
def replace_fallback_formats_chain(formats)
|
32
|
-
@fallback_formats = formats
|
34
|
+
@fallback_formats = formats
|
33
35
|
end
|
34
36
|
|
35
|
-
|
37
|
+
private
|
38
|
+
|
39
|
+
# Private: finds the right template on the filesystem,
|
36
40
|
# using fallback if needed
|
37
41
|
#
|
38
42
|
def find_templates(name, prefix, partial, details)
|
@@ -43,6 +47,23 @@ module Mobylette
|
|
43
47
|
end
|
44
48
|
super(name, prefix, partial, details)
|
45
49
|
end
|
50
|
+
|
51
|
+
# Helper for building query glob string based on resolver's pattern.
|
52
|
+
def build_query(path, details)
|
53
|
+
query = @pattern.dup
|
54
|
+
|
55
|
+
prefix = path.prefix.empty? ? "" : "#{escape_entry(path.prefix)}\\1"
|
56
|
+
query.gsub!(/\:prefix(\/)?/, prefix)
|
57
|
+
|
58
|
+
partial = escape_entry(path.partial? ? "_#{path.name}" : path.name)
|
59
|
+
query.gsub!(/\:action/, partial)
|
60
|
+
|
61
|
+
details.each do |ext, variants|
|
62
|
+
query.gsub!(/\:#{ext}/, "{#{variants.compact.uniq.join(',')}}")
|
63
|
+
end
|
64
|
+
|
65
|
+
query.gsub!(/\:path/, "#{@paths.compact.uniq.join(',')}")
|
66
|
+
end
|
46
67
|
end
|
47
68
|
end
|
48
69
|
end
|
@@ -43,13 +43,11 @@ module Mobylette
|
|
43
43
|
@@mobylette_options[:devices] = Hash.new
|
44
44
|
|
45
45
|
cattr_accessor :mobylette_resolver
|
46
|
-
self.mobylette_resolver = Mobylette::Resolvers::ChainedFallbackResolver.new()
|
46
|
+
self.mobylette_resolver = Mobylette::Resolvers::ChainedFallbackResolver.new({}, self.view_paths)
|
47
47
|
self.mobylette_resolver.replace_fallback_formats_chain(@@mobylette_options[:fallback_chains])
|
48
48
|
append_view_path self.mobylette_resolver
|
49
49
|
end
|
50
50
|
|
51
|
-
|
52
|
-
|
53
51
|
module ClassMethods
|
54
52
|
# This method enables the controller do handle mobile requests
|
55
53
|
#
|
@@ -120,7 +118,7 @@ module Mobylette
|
|
120
118
|
self.mobylette_resolver.replace_fallback_formats_chain({ mobile: [:mobile, options[:fall_back]] })
|
121
119
|
else
|
122
120
|
if options[:fallback_chains]
|
123
|
-
self.mobylette_resolver.replace_fallback_formats_chain(options[:fallback_chains])
|
121
|
+
self.mobylette_resolver.replace_fallback_formats_chain((options[:fallback_chains] || {}).reverse_merge({ mobile: [:mobile, :html] }))
|
124
122
|
end
|
125
123
|
end
|
126
124
|
end
|
data/lib/mobylette/version.rb
CHANGED
data/spec/dummy/log/test.log
CHANGED
@@ -1 +1,29 @@
|
|
1
1
|
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
2
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
3
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
4
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
5
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
6
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
7
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
8
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
9
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
10
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
11
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
12
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
13
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
14
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
15
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
16
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
17
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
18
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
19
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
20
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
21
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
22
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
23
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
24
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
25
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
26
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
27
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
28
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
29
|
+
DEPRECATED > Mobylette: Please don't user :fall_back to configure fall backs any more. See the README for :fallback_chains instead.
|
@@ -5,7 +5,6 @@ module Mobylette
|
|
5
5
|
describe ChainedFallbackResolver do
|
6
6
|
|
7
7
|
describe "#find_templates" do
|
8
|
-
|
9
8
|
context "single fallback chain" do
|
10
9
|
[
|
11
10
|
{ mobile: [:mobile, :html]},
|
@@ -17,7 +16,7 @@ module Mobylette
|
|
17
16
|
it "should change details[:formats] to the fallback array" do
|
18
17
|
details = { formats: [fallback_chain.keys.first] }
|
19
18
|
details.stub(:dup).and_return(details)
|
20
|
-
subject.find_templates
|
19
|
+
subject.send(:find_templates, "", "", "", details)
|
21
20
|
details[:formats].should == fallback_chain.values.first
|
22
21
|
end
|
23
22
|
|
@@ -34,14 +33,26 @@ module Mobylette
|
|
34
33
|
it "should change details[:formats] to the fallback array" do
|
35
34
|
details = { formats: [format] }
|
36
35
|
details.stub(:dup).and_return(details)
|
37
|
-
subject.find_templates
|
36
|
+
subject.send(:find_templates, "", "", "", details)
|
38
37
|
details[:formats].should == fallback_array
|
39
38
|
end
|
40
39
|
end
|
41
40
|
end
|
42
41
|
end
|
42
|
+
end
|
43
43
|
|
44
|
+
describe "#build_query" do
|
45
|
+
it "should merge paths, formats, and handlers" do
|
46
|
+
details = {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}
|
47
|
+
paths = ['/app1/home', '/app2/home']
|
48
|
+
path = ActionView::Resolver::Path.build('index', 'tests', nil)
|
49
|
+
|
50
|
+
resolver = Mobylette::Resolvers::ChainedFallbackResolver.new({}, paths)
|
51
|
+
query = resolver.send :build_query, path, details
|
52
|
+
query.should == "{/app1/home,/app2/home}/tests/index{.{en},}{.{html},}{.{erb,builder,coffee},}"
|
53
|
+
end
|
44
54
|
end
|
55
|
+
|
45
56
|
end
|
46
57
|
end
|
47
58
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobylette
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: '3.
|
4
|
+
version: '3.2'
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-09-22 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: actionpack
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '3.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '3.0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: rspec
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: rspec-rails
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: debugger
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,7 +69,12 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
description: Adds the mobile format for rendering views for mobile device.
|
59
79
|
email:
|
60
80
|
- tscolari@gmail.com
|
@@ -129,7 +149,6 @@ files:
|
|
129
149
|
- spec/dummy/config/routes.rb
|
130
150
|
- spec/dummy/config.ru
|
131
151
|
- spec/dummy/db/schema.rb
|
132
|
-
- spec/dummy/log/development.log
|
133
152
|
- spec/dummy/log/test.log
|
134
153
|
- spec/dummy/public/404.html
|
135
154
|
- spec/dummy/public/422.html
|
@@ -158,7 +177,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
158
177
|
version: '0'
|
159
178
|
segments:
|
160
179
|
- 0
|
161
|
-
hash:
|
180
|
+
hash: -3729222328630037007
|
162
181
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
163
182
|
none: false
|
164
183
|
requirements:
|
@@ -167,10 +186,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
167
186
|
version: '0'
|
168
187
|
segments:
|
169
188
|
- 0
|
170
|
-
hash:
|
189
|
+
hash: -3729222328630037007
|
171
190
|
requirements: []
|
172
191
|
rubyforge_project:
|
173
|
-
rubygems_version: 1.8.
|
192
|
+
rubygems_version: 1.8.24
|
174
193
|
signing_key:
|
175
194
|
specification_version: 3
|
176
195
|
summary: Mobile request handling for your Rails app.
|
@@ -229,7 +248,6 @@ test_files:
|
|
229
248
|
- spec/dummy/config/routes.rb
|
230
249
|
- spec/dummy/config.ru
|
231
250
|
- spec/dummy/db/schema.rb
|
232
|
-
- spec/dummy/log/development.log
|
233
251
|
- spec/dummy/log/test.log
|
234
252
|
- spec/dummy/public/404.html
|
235
253
|
- spec/dummy/public/422.html
|
File without changes
|