mobylette 1.6.0 → 2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. data/README.rdoc +35 -22
  2. data/Rakefile +0 -19
  3. data/lib/mobylette.rb +1 -4
  4. data/lib/mobylette/helmet.rb +0 -2
  5. data/lib/mobylette/railtie.rb +0 -6
  6. data/lib/mobylette/respond_to_mobile_requests.rb +135 -0
  7. data/lib/mobylette/version.rb +1 -1
  8. data/spec/controllers/application_controller_spec.rb +37 -0
  9. data/spec/dummy/app/controllers/application_controller.rb +0 -1
  10. data/spec/dummy/log/development.log +116 -0
  11. data/spec/dummy/log/test.log +21 -585
  12. data/spec/dummy/tmp/cache/assets/C82/3E0/sprockets%2F48eb4ac616538f8f36870451073315da +14 -0
  13. data/spec/dummy/tmp/cache/assets/CE4/1C0/sprockets%2F18d93e1533d585b2f64ec90b33176ac9 +0 -0
  14. data/spec/dummy/tmp/cache/assets/CED/A70/sprockets%2F621683d8791730a9cc7ce45e17a7e46d +0 -0
  15. data/spec/dummy/tmp/cache/assets/CFC/200/sprockets%2F716f89d85d4855706b8a9abec1969c62 +16 -0
  16. data/spec/dummy/tmp/cache/assets/D32/A10/sprockets%2F13fe41fee1fe35b49d145bcc06610705 +0 -0
  17. data/spec/dummy/tmp/cache/assets/D54/ED0/sprockets%2F71c9fa01091d432b131da3bb73faf3d4 +16 -0
  18. data/spec/dummy/tmp/cache/assets/D84/210/sprockets%2Fabd0103ccec2b428ac62c94e4c40b384 +14 -0
  19. data/spec/dummy/tmp/cache/assets/E04/890/sprockets%2F2f5173deea6c795b8fdde723bb4b63af +0 -0
  20. data/spec/lib/respond_to_mobile_requests_spec.rb +253 -0
  21. data/spec/spec_helper.rb +3 -0
  22. metadata +45 -107
  23. data/lib/mobylette/controllers/helpers.rb +0 -53
  24. data/lib/mobylette/controllers/respond_to_mobile_requests.rb +0 -125
  25. data/lib/mobylette/helmet/faker.rb +0 -19
  26. data/lib/mobylette/helmet/helpers.rb +0 -36
  27. data/spec/controllers/actioncontroller_base_spec.rb +0 -24
  28. data/spec/controllers/default_fallback_controller_spec.rb +0 -37
  29. data/spec/controllers/desktop_only_controller_spec.rb +0 -18
  30. data/spec/controllers/force_fallback_controller_spec.rb +0 -46
  31. data/spec/controllers/home_controller_spec.rb +0 -145
  32. data/spec/controllers/no_fallback_controller_spec.rb +0 -58
  33. data/spec/controllers/skip_xhr_request_controller_spec.rb +0 -19
  34. data/spec/dummy/app/controllers/default_fallback_controller.rb +0 -13
  35. data/spec/dummy/app/controllers/desktop_only_controller.rb +0 -2
  36. data/spec/dummy/app/controllers/fallbacks_controller.rb +0 -7
  37. data/spec/dummy/app/controllers/force_fallback_controller.rb +0 -13
  38. data/spec/dummy/app/controllers/home_controller.rb +0 -20
  39. data/spec/dummy/app/controllers/no_fallback_controller.rb +0 -13
  40. data/spec/dummy/app/controllers/skip_xhr_request_controller.rb +0 -7
  41. data/spec/dummy/app/controllers/testing_controller.rb +0 -9
  42. data/spec/dummy/app/views/default_fallback/index.html.erb +0 -1
  43. data/spec/dummy/app/views/default_fallback/index.js.erb +0 -1
  44. data/spec/dummy/app/views/default_fallback/index.mobile.erb +0 -1
  45. data/spec/dummy/app/views/default_fallback/test.html.erb +0 -1
  46. data/spec/dummy/app/views/default_fallback/test.js.erb +0 -1
  47. data/spec/dummy/app/views/fallbacks/index.html.erb +0 -2
  48. data/spec/dummy/app/views/fallbacks/index.js.erb +0 -1
  49. data/spec/dummy/app/views/fallbacks/index.mobile.erb +0 -0
  50. data/spec/dummy/app/views/fallbacks/index.xml.erb +0 -0
  51. data/spec/dummy/app/views/fallbacks/no_mobile.html.erb +0 -0
  52. data/spec/dummy/app/views/force_fallback/index.html.erb +0 -1
  53. data/spec/dummy/app/views/force_fallback/index.js.erb +0 -1
  54. data/spec/dummy/app/views/force_fallback/index.mobile.erb +0 -1
  55. data/spec/dummy/app/views/force_fallback/test.html.erb +0 -1
  56. data/spec/dummy/app/views/force_fallback/test.js.erb +0 -1
  57. data/spec/dummy/app/views/home/desktop.html.erb +0 -3
  58. data/spec/dummy/app/views/home/index.html.erb +0 -9
  59. data/spec/dummy/app/views/home/index.js.erb +0 -1
  60. data/spec/dummy/app/views/home/index.mobile.erb +0 -9
  61. data/spec/dummy/app/views/home/mobile.mobile.erb +0 -3
  62. data/spec/dummy/app/views/home/no_mobile_view.html.erb +0 -3
  63. data/spec/dummy/app/views/ignore_mobile_path/index.mobile.erb +0 -1
  64. data/spec/dummy/app/views/no_fallback/index.html.erb +0 -1
  65. data/spec/dummy/app/views/no_fallback/index.js.erb +0 -1
  66. data/spec/dummy/app/views/no_fallback/index.mobile.erb +0 -1
  67. data/spec/dummy/app/views/no_fallback/test.html.erb +0 -1
  68. data/spec/dummy/app/views/no_fallback/test.js.erb +0 -1
  69. data/spec/dummy/app/views/skip_xhr_request/index.html.erb +0 -9
  70. data/spec/dummy/app/views/skip_xhr_request/index.js.erb +0 -1
  71. data/spec/dummy/app/views/skip_xhr_request/index.mobile.erb +0 -9
  72. data/spec/dummy/app/views/view_path/index.mobile.erb +0 -1
  73. data/spec/helpers/mobylette_helpers_spec.rb +0 -59
@@ -1,7 +1,12 @@
1
1
  http://tscolari.github.com/mobylette/mobylette_images/mobylette.jpg
2
2
 
3
+ Mobylette 2.0+ deprecated the respond_to_mobile_requests method.
4
+ Now you must use `include Mobylette::RespondToMobileRequests` instead.
5
+ to configure it, see the configuration.
6
+ Also stylesheet and javascript helpers were removed.
7
+
3
8
  Mobylette 1.6+ only supports Ruby 1.9.2+
4
- For Ruby 1.8.7 support, please use version > 1.6
9
+ For Ruby 1.8.7 support, please use version < 1.6
5
10
 
6
11
  = Mobylette http://travis-ci.org/tscolari/mobylette.png
7
12
 
@@ -24,7 +29,7 @@ Add the gem to your gemfile:
24
29
 
25
30
  And add to your ApplicationController.rb (for enabling it to all your controllers) or to the controllers you want this functionality on:
26
31
 
27
- respond_to_mobile_requests
32
+ include Mobyllete::RespondToMobileRequests
28
33
 
29
34
  After that, you may start adding your .mobile. views.
30
35
 
@@ -42,30 +47,36 @@ There is a difference between is_mobile_view? and is_mobile_request?. You may ha
42
47
  * is_mobile_request? -> Exclusively checks for the device from where the request were made
43
48
  * is_mobile_view? -> Exclusively checks for the view format been rendered
44
49
 
45
- * ==== mobylette_stylesheet_link_tag(*sources)
46
-
47
- This works like the stylesheet_link_tag helper, but when the request comes from a mobile device, it adds "_mobile" to the stylesheets before calling stylesheet_link_tag
50
+ == Configuration
48
51
 
49
- * ==== mobylette_javascript_include_tag(*soruces)
52
+ You can set the configuration with the mobyllete_config method:
50
53
 
51
- Same as mobylette_stylesheet_link_tag, but for javascript files and javascript_include_tag
54
+ mobylette_config do |config|
55
+ config[:fall_back] = nil
56
+ config[:skip_xhr_requests] = false
57
+ end
52
58
 
53
59
  == Fall Backs
54
60
 
55
- By default, when the mobile format is not found, mobylette will fall back to the request original format. For example, if a cell phone makes a request by html, and there is no mobile view, it will render the html. You may force it always to fall back to a especific format, by passing the :fall_back parameter to the respond_to_mobile_requests method:
61
+ By default, when the mobile format is not found, mobylette will fall back to the request original format. For example, if a mobile device makes a request by html, and there is no mobile view, it will render the html. You may force it always to fall back to a especific format, by setting the :fall_back option on your controller:
56
62
 
57
- respond_to_mobile_requests :fall_back => :html
63
+ mobylette_config do |config|
64
+ config[:fall_back] = :html
65
+ end
58
66
 
59
67
  This would force all views (mobile) to fall back to the html views. You may also disable this behavior, and no fall back will ever occur:
60
68
 
61
- respond_to_mobile_requests :fall_back => false
62
-
69
+ mobylette_config do |config|
70
+ config[:fall_back] = false
71
+ end
63
72
 
64
73
  == XHR Requests
65
74
 
66
- By default the mobile device verification will skip XHR requests, and these will be served as if mobylette wasn't there. You can override this behavior by passing the :skip_xhr_requests => false to the respond_to_mobile_requests call.
75
+ By default the mobile device verification will skip XHR requests, and these will be served as if mobylette wasn't there. You can override this behavior by setting the :skip_xhr_requests option to false on your controller:
67
76
 
68
- respond_to_mobile_requests :skip_xhr_requests => false
77
+ mobylette_config do |config|
78
+ config[:skip_xhr_requests] = false
79
+ end
69
80
 
70
81
  You may need to use this if you are using JQuery mobile or something similar in your application.
71
82
 
@@ -73,7 +84,7 @@ You may need to use this if you are using JQuery mobile or something similar in
73
84
 
74
85
  In the case you need to skip a mobile_request for been treated as mobile, you can pass the `skip_mobile=true` param to the url/request.
75
86
 
76
- For example, you are using jquery_mobile and by that `:skip_xhr_requests => false`, but there is a special case where you need to process an Ajax, then you can use this param.
87
+ For example, you are using jquery_mobile and by that `:skip_xhr_requests = false`, but there is a special case where you need to process an Ajax, then you can use this param.
77
88
 
78
89
  == Forcing/Ignoring Mobile Requests
79
90
 
@@ -104,28 +115,30 @@ For testing, include the Mobylette::Helmet module to your test/test_helpers.rb:
104
115
 
105
116
  For RSpec: add to your spec/spec_helpers.rb or create a spec/support/mobylette.rb with the following:
106
117
 
107
- require 'mobylette/helmet'
118
+ require 'mobylette/helmet'
108
119
  RSpec.configure do |config|
109
120
  config.include Mobylette::Helmet, :type => :controller
110
121
  end
111
122
 
112
- This will add 2 methods to your test scope:
123
+ This will add 3 methods to your test scope:
113
124
 
114
- force_mobile_request_agent
125
+ force_mobile_request_agent(agent = 'Android')
115
126
 
116
- this one will force a mobile user_agent, allowing you to test mobile requests.
127
+ This will force a mobile user_agent, allowing you to test mobile requests.
117
128
 
118
129
  reset_test_request_agent
119
130
 
120
- and this one will reset your user_agent to the test default "Rails Testing". You don't need to call this everytime, all your requests by default are "Rails Testing" in your test env.
131
+ This will reset your user_agent to the test default "Rails Testing". You don't need to call this everytime, all your requests by default are "Rails Testing" in your test env.
132
+
133
+ set_session_override(override_value)
134
+
135
+ This will force the session_override value in the users session. Values possible values are: :ignore_mobile and :force_mobile
121
136
 
122
137
  Friendly note: on your tests, call these functions BEFORE you make the request, otherwise they are useless =p
123
138
 
124
139
  == Contributions and Credits
125
140
 
126
- This gem is based on the mobile_fu plugin (https://github.com/brendanlim/mobile-fu).
127
-
128
- Also, these pages were very usefull when creating the gem:
141
+ these pages were very usefull when creating this gem:
129
142
  * http://stackoverflow.com/questions/5126085/ruby-on-rails-mobile-application
130
143
  * http://www.arctickiwi.com/blog/mobile-enable-your-ruby-on-rails-site-for-small-screens
131
144
  * http://metautonomo.us/2011/01/05/mobile-devices-and-rails-maintaining-your-sanity/
data/Rakefile CHANGED
@@ -20,23 +20,4 @@ RDoc::Task.new(:rdoc) do |rdoc|
20
20
  rdoc.rdoc_files.include('lib/**/*.rb')
21
21
  end
22
22
 
23
-
24
-
25
23
  Bundler::GemHelper.install_tasks
26
-
27
- require 'rake/testtask'
28
-
29
- Rake::TestTask.new(:test) do |t|
30
- t.libs << 'lib'
31
- t.libs << 'test'
32
- t.pattern = 'test/**/*_test.rb'
33
- t.verbose = false
34
- end
35
-
36
- require 'metric_fu'
37
- MetricFu::Configuration.run do |config|
38
- config.rcov[:test_files] = ['spec/**/*_spec.rb']
39
- config.rcov[:rcov_opts] << "-Ispec" # Needed to find spec_helper
40
- end
41
-
42
- task :default => :test
@@ -1,10 +1,7 @@
1
1
  #
2
2
  # Rails automatic mobile request support
3
3
  module Mobylette
4
- module Controllers
5
- require "mobylette/controllers/respond_to_mobile_requests"
6
- require "mobylette/controllers/helpers"
7
- end
4
+ require "mobylette/respond_to_mobile_requests"
8
5
 
9
6
  # TestHelpers
10
7
  # require "mobylette/helmet"
@@ -6,8 +6,6 @@ module Mobylette
6
6
  # documentation about how to make this test wide.
7
7
  module Helmet
8
8
  extend ActiveSupport::Concern
9
- require "mobylette/helmet/helpers"
10
- require "mobylette/helmet/faker"
11
9
 
12
10
  # Force the request for the user_agent
13
11
  #
@@ -4,11 +4,5 @@ module Mobylette
4
4
  # Automatic inlcudes Mobylette::Controllers::RespondToMobileRequests to ActiveController::Base and
5
5
  # load Mobylette::Controllers::Helpers as ActionController::Base helpers
6
6
  class Railtie < ::Rails::Railtie
7
- initializer :mobylette do
8
- ActiveSupport.on_load(:action_controller) do
9
- ::ActionController::Base.send(:include, Mobylette::Controllers::RespondToMobileRequests)
10
- ::ActionController::Base.helper Mobylette::Controllers::Helpers
11
- end
12
- end
13
7
  end
14
8
  end
@@ -0,0 +1,135 @@
1
+ module Mobylette
2
+ # Mobylette::Controllers::RespondToMobileRequests includes the respond_to_mobile_requests
3
+ # to your ActionController::Base.
4
+ #
5
+ # The respond_to_mobile_requests method enables the controller mobile handling
6
+ module RespondToMobileRequests
7
+ extend ActiveSupport::Concern
8
+
9
+ included do
10
+ helper_method :is_mobile_request?
11
+ helper_method :is_mobile_view?
12
+
13
+ before_filter :handle_mobile
14
+
15
+ cattr_accessor :mobylette_options
16
+ @@mobylette_options = Hash.new
17
+ @@mobylette_options[:skip_xhr_requests] = true
18
+ @@mobylette_options[:fall_back] = nil
19
+
20
+ # List of mobile agents, from mobile_fu (https://github.com/brendanlim/mobile-fu)
21
+ #
22
+ MOBILE_USER_AGENTS = 'palm|blackberry|nokia|phone|midp|mobi|symbian|chtml|ericsson|minimo|' +
23
+ 'audiovox|motorola|samsung|telit|upg1|windows ce|ucweb|astel|plucker|' +
24
+ 'x320|x240|j2me|sgh|portable|sprint|docomo|kddi|softbank|android|mmp|' +
25
+ 'pdxgw|netfront|xiino|vodafone|portalmmm|sagem|mot-|sie-|ipod|up\\.b|' +
26
+ 'webos|amoi|novarra|cdm|alcatel|pocket|iphone|mobileexplorer|mobile'
27
+ end
28
+
29
+ module ClassMethods
30
+ # This method enables the controller do handle mobile requests
31
+ #
32
+ # You must add this to every controller you want to respond differently to mobile devices,
33
+ # or make it application wide calling it from the ApplicationController
34
+ #
35
+ # Possible options:
36
+ # * fall_back: :html
37
+ # You may pass a fall_back option to the method, it will force the render
38
+ # to look for that other format, in case there is not a .mobile file for the view.
39
+ # By default, it will fall back to the format of the original request.
40
+ # If you don't want fall back at all, pass fall_back: false
41
+ # * skip_xhr_requests: true/false
42
+ # By default this is set to true. When a xhr request enters in, it will skip the
43
+ # mobile verification. This will let your ajax calls to work as intended.
44
+ # You may disable this (actually you will have to) if you are using JQuery Mobile, or
45
+ # other js framework that uses ajax. To disable, set skip_xhr_requests: false
46
+ #
47
+ # Example Usage:
48
+ #
49
+ # class ApplicationController...
50
+ # include Mobylette::RespondToMobileRequests
51
+ # ...
52
+ # mobylette_config do |config|
53
+ # config[:fall_back] = :html
54
+ # config[:skip_xhr_requests] = false
55
+ # end
56
+ # ...
57
+ # end
58
+ #
59
+ def mobylette_config
60
+ yield(self.mobylette_options)
61
+ end
62
+ end
63
+
64
+ private
65
+
66
+ # :doc:
67
+ # Private: Tells if the request comes from a mobile user_agent or not
68
+ #
69
+ def is_mobile_request?
70
+ request.user_agent.to_s.downcase =~ /#{MOBILE_USER_AGENTS}/
71
+ end
72
+
73
+ # :doc:
74
+ # Private: Helper method that tells if the currently view is mobile or not
75
+ #
76
+ def is_mobile_view?
77
+ true if (params[:format] == "mobile") || (request.format.to_s == "mobile")
78
+ end
79
+
80
+ # Private: This is the method that tells if the request will be threated as mobile
81
+ # or not
82
+ #
83
+ def respond_as_mobile?
84
+ impediments = stop_processing_because_xhr? || stop_processing_because_param?
85
+ (not impediments) && (force_mobile_by_session? || is_mobile_request? || params[:format] == 'mobile')
86
+ end
87
+
88
+ # Private: Returns true if the visitor has the force_mobile set in it's session
89
+ #
90
+ def force_mobile_by_session?
91
+ session[:mobylette_override] == :force_mobile
92
+ end
93
+
94
+ # Private: Tells when mobylette should not interfere in the rendering
95
+ # process because the `skip_mobile` param is set to true
96
+ #
97
+ # Passing :skip_mobile = true to a request will not render it as a mobile
98
+ #
99
+ def stop_processing_because_param?
100
+ return true if params[:skip_mobile] == 'true'
101
+ false
102
+ end
103
+
104
+ # Private: Tells when mobylette should or not interfere in the rendering
105
+ # process because of a xhr request.
106
+ #
107
+ # if the request is not xhr this will aways return false
108
+ # this will only return true for xhr requests, when you explicit want to
109
+ # not skip_xhr_requests.
110
+ #
111
+ def stop_processing_because_xhr?
112
+ if request.xhr? && self.mobylette_options[:skip_xhr_requests]
113
+ true
114
+ else
115
+ false
116
+ end
117
+ end
118
+
119
+ # :doc:
120
+ # Private: Process the request as mobile
121
+ #
122
+ def handle_mobile
123
+ return if session[:mobylette_override] == :ignore_mobile
124
+ if respond_as_mobile?
125
+
126
+ original_format = request.format.to_sym
127
+ request.format = :mobile
128
+ if self.mobylette_options[:fall_back] != false
129
+ request.formats << Mime::Type.new(self.mobylette_options[:fall_back] || original_format)
130
+ end
131
+ end
132
+ end
133
+
134
+ end
135
+ end
@@ -1,3 +1,3 @@
1
1
  module Mobylette
2
- VERSION = "1.6.0"
2
+ VERSION = "2.0"
3
3
  end
@@ -0,0 +1,37 @@
1
+ require 'spec_helper'
2
+
3
+ describe ApplicationController do
4
+
5
+ describe 'Helmet' do
6
+
7
+ describe "#force_mobile_request_agent" do
8
+ it "should set request.user_agent to Android by default" do
9
+ force_mobile_request_agent
10
+ request.user_agent.should == 'Android'
11
+ end
12
+
13
+ it "should set request.user_agent to whatever the argument is" do
14
+ force_mobile_request_agent(:any_value)
15
+ request.user_agent.should == :any_value
16
+ end
17
+ end
18
+
19
+ describe "#reset_test_request_agent" do
20
+ it "should reset request.user_agent to rails default" do
21
+ force_mobile_request_agent(:something_else)
22
+ request.user_agent.should == :something_else
23
+ reset_test_request_agent
24
+ request.user_agent.should == 'Rails Testing'
25
+ end
26
+ end
27
+
28
+ describe "#set_session_override" do
29
+ it "should set the session[mobylette_override] to whatever value the argument is" do
30
+ set_session_override(:super_testing)
31
+ session[:mobylette_override].should == :super_testing
32
+ end
33
+ end
34
+
35
+ end
36
+
37
+ end
@@ -1,4 +1,3 @@
1
1
  class ApplicationController < ActionController::Base
2
- protect_from_forgery
3
2
 
4
3
  end
@@ -0,0 +1,116 @@
1
+
2
+
3
+ Started GET "/" for 127.0.0.1 at 2012-03-25 16:04:55 -0300
4
+ Processing by HomeController#index as HTML
5
+ Rendered home/index.html.erb within layouts/application (2.2ms)
6
+ Compiled application.css (0ms) (pid 45506)
7
+ Compiled application.js (0ms) (pid 45506)
8
+ Completed 200 OK in 25ms (Views: 24.5ms)
9
+
10
+
11
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-03-25 16:04:55 -0300
12
+ Served asset /application.css - 200 OK (5ms)
13
+
14
+
15
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-03-25 16:04:55 -0300
16
+ Served asset /application.js - 200 OK (3ms)
17
+
18
+
19
+ Started GET "/" for 192.168.0.5 at 2012-03-25 16:05:53 -0300
20
+ Processing by HomeController#index as HTML
21
+ Rendered home/index.mobile.erb within layouts/application (0.6ms)
22
+ Compiled application_mobile.css (0ms) (pid 45506)
23
+ Compiled application_mobile.js (0ms) (pid 45506)
24
+ Completed 200 OK in 30ms (Views: 29.3ms)
25
+
26
+
27
+ Started GET "/assets/application_mobile.css?body=1" for 192.168.0.5 at 2012-03-25 16:05:53 -0300
28
+ Served asset /application_mobile.css - 200 OK (5ms)
29
+
30
+
31
+ Started GET "/assets/application_mobile.js?body=1" for 192.168.0.5 at 2012-03-25 16:05:53 -0300
32
+ Served asset /application_mobile.js - 200 OK (2ms)
33
+
34
+
35
+ Started GET "/" for 127.0.0.1 at 2012-03-25 16:11:35 -0300
36
+ Processing by HomeController#index as HTML
37
+ Rendered home/index.html.erb within layouts/application (2.5ms)
38
+ Completed 200 OK in 34ms (Views: 33.9ms)
39
+
40
+
41
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-03-25 16:11:35 -0300
42
+ Served asset /application.css - 304 Not Modified (0ms)
43
+
44
+
45
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-03-25 16:11:35 -0300
46
+ Served asset /application.js - 304 Not Modified (0ms)
47
+
48
+
49
+ Started GET "/" for 192.168.0.5 at 2012-03-25 16:11:43 -0300
50
+ Processing by HomeController#index as HTML
51
+ Rendered home/index.mobile.erb within layouts/application (0.8ms)
52
+ Completed 200 OK in 8ms (Views: 8.1ms)
53
+
54
+
55
+ Started GET "/assets/application_mobile.css?body=1" for 192.168.0.5 at 2012-03-25 16:11:43 -0300
56
+ Served asset /application_mobile.css - 304 Not Modified (0ms)
57
+
58
+
59
+ Started GET "/assets/application_mobile.js?body=1" for 192.168.0.5 at 2012-03-25 16:11:43 -0300
60
+ Served asset /application_mobile.js - 304 Not Modified (0ms)
61
+
62
+
63
+ Started GET "/" for 127.0.0.1 at 2012-03-25 16:12:03 -0300
64
+ Processing by HomeController#index as HTML
65
+ Rendered home/index.html.erb within layouts/application (0.3ms)
66
+ Completed 200 OK in 26ms (Views: 25.6ms)
67
+
68
+
69
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-03-25 16:12:03 -0300
70
+ Served asset /application.css - 304 Not Modified (0ms)
71
+
72
+
73
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-03-25 16:12:03 -0300
74
+ Served asset /application.js - 304 Not Modified (0ms)
75
+
76
+
77
+ Started GET "/" for 127.0.0.1 at 2012-03-25 16:12:05 -0300
78
+ Processing by HomeController#index as HTML
79
+ Rendered home/index.html.erb within layouts/application (0.2ms)
80
+ Completed 200 OK in 4ms (Views: 3.7ms)
81
+
82
+
83
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-03-25 16:12:05 -0300
84
+ Served asset /application.css - 304 Not Modified (0ms)
85
+
86
+
87
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-03-25 16:12:05 -0300
88
+ Served asset /application.js - 304 Not Modified (0ms)
89
+
90
+
91
+ Started GET "/" for 127.0.0.1 at 2012-03-25 16:12:12 -0300
92
+ Processing by HomeController#index as HTML
93
+ Rendered home/index.html.erb within layouts/application (0.2ms)
94
+ Completed 200 OK in 4ms (Views: 3.6ms)
95
+
96
+
97
+ Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-03-25 16:12:12 -0300
98
+ Served asset /application.css - 304 Not Modified (0ms)
99
+
100
+
101
+ Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-03-25 16:12:12 -0300
102
+ Served asset /application.js - 304 Not Modified (0ms)
103
+
104
+
105
+ Started GET "/" for 192.168.0.5 at 2012-03-25 16:12:15 -0300
106
+ Processing by HomeController#index as HTML
107
+ Rendered home/index.mobile.erb within layouts/application (0.5ms)
108
+ Completed 200 OK in 4ms (Views: 3.7ms)
109
+
110
+
111
+ Started GET "/assets/application_mobile.css?body=1" for 192.168.0.5 at 2012-03-25 16:12:15 -0300
112
+ Served asset /application_mobile.css - 200 OK (1ms)
113
+
114
+
115
+ Started GET "/assets/application_mobile.js?body=1" for 192.168.0.5 at 2012-03-25 16:12:15 -0300
116
+ Served asset /application_mobile.js - 200 OK (0ms)