mobile-enhancements 0.0.1 → 0.0.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/Rakefile +12 -0
- data/lib/mobile_enhancements/configuration.rb +15 -2
- data/lib/mobile_enhancements/railtie.rb +6 -0
- data/lib/mobile_enhancements/request_helper.rb +7 -2
- data/lib/mobile_enhancements/version.rb +1 -1
- data/mobile-enhancements.gemspec +1 -0
- data/spec/controllers/test_controller_spec.rb +23 -0
- data/spec/internal/app/controllers/test_controller.rb +2 -1
- data/spec/internal/config/initializers/mobile_enhancements.rb +1 -1
- data/spec/internal/config/routes.rb +1 -0
- data/spec/mobile_enhancements/configuration_spec.rb +9 -0
- data/spec/routing/routes_spec.rb +13 -5
- metadata +20 -8
data/Rakefile
CHANGED
@@ -1 +1,13 @@
|
|
1
|
+
#!/usr/bin/env rake
|
1
2
|
require "bundler/gem_tasks"
|
3
|
+
|
4
|
+
require "rspec/core/rake_task"
|
5
|
+
|
6
|
+
desc "Runs all the specs"
|
7
|
+
task default: %w(spec)
|
8
|
+
|
9
|
+
desc "Run specs"
|
10
|
+
RSpec::Core::RakeTask.new do |t|
|
11
|
+
t.pattern = "./spec/**/*_spec.rb" # don't need this, it's default.
|
12
|
+
# Put spec opts in a file named .rspec in root
|
13
|
+
end
|
@@ -47,12 +47,25 @@ module MobileEnhancements
|
|
47
47
|
end
|
48
48
|
|
49
49
|
class Options
|
50
|
+
# force format to pass through
|
51
|
+
def format(*args)
|
52
|
+
method_missing("format", *args)
|
53
|
+
end
|
54
|
+
|
55
|
+
def read_attribute(name)
|
56
|
+
(@properties ||= {})[name]
|
57
|
+
end
|
58
|
+
|
59
|
+
def write_attribute(name, value)
|
60
|
+
(@properties ||= {})[name] = value
|
61
|
+
end
|
62
|
+
|
50
63
|
def method_missing(name, *args, &block)
|
51
64
|
case args.size
|
52
65
|
when 0
|
53
|
-
(
|
66
|
+
read_attribute(name)
|
54
67
|
when 1
|
55
|
-
(
|
68
|
+
write_attribute(name, args.first)
|
56
69
|
else
|
57
70
|
super
|
58
71
|
end
|
@@ -16,6 +16,12 @@ module MobileEnhancements
|
|
16
16
|
if format = MobileEnhancements.configuration.mobile_format
|
17
17
|
# register it as an alias to the HTML mime-type
|
18
18
|
Mime::Type.register_alias "text/html", format
|
19
|
+
# setup the format calculation
|
20
|
+
ActionController::Base.class_eval do
|
21
|
+
before_filter do |controller|
|
22
|
+
controller.request.format = controller.determine_format
|
23
|
+
end
|
24
|
+
end
|
19
25
|
end
|
20
26
|
end
|
21
27
|
|
@@ -7,10 +7,10 @@ module MobileEnhancements
|
|
7
7
|
def self.delegated_methods
|
8
8
|
instance_methods.select do |name|
|
9
9
|
name =~ /^(desktop|mobile)\_/
|
10
|
-
end
|
10
|
+
end + [:determine_layout, :determine_format]
|
11
11
|
end
|
12
12
|
|
13
|
-
def_delegators :configuration, :mobile_path_prefix, :mobile_layout, :desktop_layout
|
13
|
+
def_delegators :configuration, :mobile_path_prefix, :mobile_layout, :desktop_layout, :mobile_format
|
14
14
|
|
15
15
|
attr_reader :request, :configuration
|
16
16
|
|
@@ -24,6 +24,11 @@ module MobileEnhancements
|
|
24
24
|
mobile_request? ? mobile_layout : desktop_layout
|
25
25
|
end
|
26
26
|
|
27
|
+
# returns what format should be used by the request
|
28
|
+
def determine_format
|
29
|
+
mobile_request? ? mobile_format.to_sym : request.format.to_sym
|
30
|
+
end
|
31
|
+
|
27
32
|
# strips any mobile prefix from the url
|
28
33
|
def desktop_url(url = request.url)
|
29
34
|
desktop_path(url)
|
data/mobile-enhancements.gemspec
CHANGED
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
|
|
18
18
|
s.require_paths = ["lib"]
|
19
19
|
|
20
20
|
s.add_development_dependency "rake"
|
21
|
+
s.add_development_dependency "rails"
|
21
22
|
s.add_development_dependency "rb-fsevent"
|
22
23
|
s.add_development_dependency "guard-rspec"
|
23
24
|
s.add_development_dependency "rspec-rails"
|
@@ -0,0 +1,23 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe TestController do
|
4
|
+
context "via the mobile UI" do
|
5
|
+
describe "GET /#{MobileEnhancements.configuration.mobile_path_prefix}/two" do
|
6
|
+
before { get :two, mobile: MobileEnhancements.configuration.mobile_path_prefix }
|
7
|
+
|
8
|
+
it "should render 'two, #{MobileEnhancements.configuration.mobile_format}'" do
|
9
|
+
expect(@response.body).to eq "two, #{MobileEnhancements.configuration.mobile_format}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
context "via the desktop UI" do
|
15
|
+
describe "GET /two" do
|
16
|
+
before { get :two }
|
17
|
+
|
18
|
+
it "should render 'two, html'" do
|
19
|
+
expect(@response.body).to eq "two, html"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -18,15 +18,23 @@ describe MobileEnhancements::Configuration do
|
|
18
18
|
subject.mobile do
|
19
19
|
prefix "m"
|
20
20
|
layout "mob"
|
21
|
+
format "mbl"
|
21
22
|
end
|
22
23
|
end
|
23
24
|
|
24
25
|
it "should store the prefix" do
|
25
26
|
expect(subject.mobile.prefix).to eq "m"
|
27
|
+
expect(subject.mobile_path_prefix).to eq "m"
|
26
28
|
end
|
27
29
|
|
28
30
|
it "should store the layout" do
|
29
31
|
expect(subject.mobile.layout).to eq "mob"
|
32
|
+
expect(subject.mobile_layout).to eq "mob"
|
33
|
+
end
|
34
|
+
|
35
|
+
it "should store the format" do
|
36
|
+
expect(subject.mobile.format).to eq "mbl"
|
37
|
+
expect(subject.mobile_format).to eq :mbl
|
30
38
|
end
|
31
39
|
|
32
40
|
it "should raise method missing for undefined options" do
|
@@ -43,6 +51,7 @@ describe MobileEnhancements::Configuration do
|
|
43
51
|
|
44
52
|
it "should store the layout" do
|
45
53
|
expect(subject.desktop.layout).to eq "desktop"
|
54
|
+
expect(subject.desktop_layout).to eq "desktop"
|
46
55
|
end
|
47
56
|
end
|
48
57
|
end
|
data/spec/routing/routes_spec.rb
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
3
|
describe "standard routing" do
|
4
|
-
it "routes /
|
4
|
+
it "routes /one to test#one" do
|
5
5
|
expect(get: "/one").to route_to("test#one")
|
6
6
|
end
|
7
7
|
end
|
8
8
|
|
9
9
|
describe "mobile-optional routing" do
|
10
|
-
it "routes /
|
10
|
+
it "routes /two to test#two" do
|
11
11
|
expect(get: "/two").to route_to({
|
12
12
|
controller: "test",
|
13
13
|
action: "two",
|
@@ -15,7 +15,7 @@ describe "mobile-optional routing" do
|
|
15
15
|
})
|
16
16
|
end
|
17
17
|
|
18
|
-
it "routes /
|
18
|
+
it "routes /#{MobileEnhancements.configuration.mobile_path_prefix}/two to test#two" do
|
19
19
|
expect(get: "/#{MobileEnhancements.configuration.mobile_path_prefix}/two").to route_to({
|
20
20
|
controller: "test",
|
21
21
|
action: "two",
|
@@ -25,15 +25,23 @@ describe "mobile-optional routing" do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
describe "mobile-only routing" do
|
28
|
-
it "does not route /
|
28
|
+
it "does not route /three" do
|
29
29
|
expect(get: "/three").not_to be_routable
|
30
30
|
end
|
31
31
|
|
32
|
-
it "routes /
|
32
|
+
it "routes /#{MobileEnhancements.configuration.mobile_path_prefix}/three to test#three" do
|
33
33
|
expect(get: "/#{MobileEnhancements.configuration.mobile_path_prefix}/three").to route_to({
|
34
34
|
controller: "test",
|
35
35
|
action: "three",
|
36
36
|
mobile: MobileEnhancements.configuration.mobile_path_prefix
|
37
37
|
})
|
38
38
|
end
|
39
|
+
|
40
|
+
it "routes /#{MobileEnhancements.configuration.mobile_path_prefix} to test#four" do
|
41
|
+
expect(get: "/#{MobileEnhancements.configuration.mobile_path_prefix}").to route_to({
|
42
|
+
controller: "test",
|
43
|
+
action: "four",
|
44
|
+
mobile: MobileEnhancements.configuration.mobile_path_prefix
|
45
|
+
})
|
46
|
+
end
|
39
47
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mobile-enhancements
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-12-
|
12
|
+
date: 2012-12-20 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rails
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: rb-fsevent
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -131,6 +147,7 @@ files:
|
|
131
147
|
- lib/mobile_enhancements/route_helpers.rb
|
132
148
|
- lib/mobile_enhancements/version.rb
|
133
149
|
- mobile-enhancements.gemspec
|
150
|
+
- spec/controllers/test_controller_spec.rb
|
134
151
|
- spec/internal/app/controllers/test_controller.rb
|
135
152
|
- spec/internal/config/initializers/mobile_enhancements.rb
|
136
153
|
- spec/internal/config/routes.rb
|
@@ -153,18 +170,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
153
170
|
- - ! '>='
|
154
171
|
- !ruby/object:Gem::Version
|
155
172
|
version: '0'
|
156
|
-
segments:
|
157
|
-
- 0
|
158
|
-
hash: -4122015549436335768
|
159
173
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
160
174
|
none: false
|
161
175
|
requirements:
|
162
176
|
- - ! '>='
|
163
177
|
- !ruby/object:Gem::Version
|
164
178
|
version: '0'
|
165
|
-
segments:
|
166
|
-
- 0
|
167
|
-
hash: -4122015549436335768
|
168
179
|
requirements: []
|
169
180
|
rubyforge_project:
|
170
181
|
rubygems_version: 1.8.24
|
@@ -172,6 +183,7 @@ signing_key:
|
|
172
183
|
specification_version: 3
|
173
184
|
summary: A few features to aid Rails apps with separate mobile-targeted UIs.
|
174
185
|
test_files:
|
186
|
+
- spec/controllers/test_controller_spec.rb
|
175
187
|
- spec/internal/app/controllers/test_controller.rb
|
176
188
|
- spec/internal/config/initializers/mobile_enhancements.rb
|
177
189
|
- spec/internal/config/routes.rb
|