jpmobile 6.0.0 → 7.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (70) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +8 -3
  3. data/.onkcop-config.yml +4 -31
  4. data/.rubocop.yml +67 -3
  5. data/.ruby-version +1 -1
  6. data/Gemfile +2 -0
  7. data/Gemfile.lock +152 -158
  8. data/README.md +5 -20
  9. data/jpmobile.gemspec +6 -3
  10. data/lib/jpmobile/configuration.rb +7 -3
  11. data/lib/jpmobile/docomo_guid.rb +4 -4
  12. data/lib/jpmobile/email.rb +2 -4
  13. data/lib/jpmobile/emoticon.rb +10 -17
  14. data/lib/jpmobile/filter.rb +2 -2
  15. data/lib/jpmobile/hook_action_view.rb +3 -3
  16. data/lib/jpmobile/hook_template_details_requested.rb +12 -0
  17. data/lib/jpmobile/hook_test_request.rb +1 -1
  18. data/lib/jpmobile/mail.rb +4 -4
  19. data/lib/jpmobile/mailer.rb +2 -2
  20. data/lib/jpmobile/mobile/abstract_mobile.rb +1 -1
  21. data/lib/jpmobile/mobile/android.rb +1 -1
  22. data/lib/jpmobile/mobile/android_tablet.rb +1 -1
  23. data/lib/jpmobile/mobile/au.rb +2 -2
  24. data/lib/jpmobile/mobile/black_berry.rb +1 -1
  25. data/lib/jpmobile/mobile/ddipocket.rb +1 -1
  26. data/lib/jpmobile/mobile/docomo.rb +6 -8
  27. data/lib/jpmobile/mobile/emobile.rb +2 -2
  28. data/lib/jpmobile/mobile/ipad.rb +1 -1
  29. data/lib/jpmobile/mobile/iphone.rb +1 -1
  30. data/lib/jpmobile/mobile/softbank.rb +2 -2
  31. data/lib/jpmobile/mobile/vodafone.rb +2 -2
  32. data/lib/jpmobile/mobile/willcom.rb +2 -2
  33. data/lib/jpmobile/mobile/windows_phone.rb +1 -1
  34. data/lib/jpmobile/path_set.rb +10 -36
  35. data/lib/jpmobile/rack/params_filter.rb +5 -4
  36. data/lib/jpmobile/rails.rb +9 -41
  37. data/lib/jpmobile/resolver.rb +44 -6
  38. data/lib/jpmobile/session/active_record_store.rb +1 -1
  39. data/lib/jpmobile/session/mem_cache_store.rb +1 -1
  40. data/lib/jpmobile/template_details.rb +38 -0
  41. data/lib/jpmobile/trans_sid.rb +2 -2
  42. data/lib/jpmobile/util.rb +3 -4
  43. data/lib/jpmobile/version.rb +1 -1
  44. data/lib/jpmobile/view_selector.rb +25 -0
  45. data/lib/jpmobile.rb +14 -0
  46. data/lib/tasks/jpmobile_tasks.rake +4 -3
  47. data/spec/rack/jpmobile/emoticon_spec.rb +48 -48
  48. data/spec/rack/jpmobile/mobile_by_ua_spec.rb +1 -0
  49. data/spec/rack_helper.rb +1 -5
  50. data/spec/unit/email_spec.rb +1 -1
  51. data/spec/unit/receive_mail_spec.rb +1 -1
  52. data/test/rails/overrides/Gemfile.jpmobile +5 -1
  53. data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
  54. data/test/rails/overrides/app/controllers/template_path_controller.rb +3 -0
  55. data/test/rails/overrides/app/views/mobile_spec/mobile_not_exist.html.erb +3 -0
  56. data/test/rails/overrides/config/routes.rb +1 -1
  57. data/test/rails/overrides/db/migrate/{20190419005447_create_active_storage_tables.active_storage.rb → 20201111033056_create_active_storage_tables.active_storage.rb} +14 -5
  58. data/test/rails/overrides/db/migrate/{20190419005448_create_action_mailbox_tables.action_mailbox.rb → 20201111033057_create_action_mailbox_tables.action_mailbox.rb} +0 -0
  59. data/test/rails/overrides/spec/controllers/docomo_guid_spec.rb +2 -2
  60. data/test/rails/overrides/spec/controllers/mobile_spec_controller_spec.rb +3 -3
  61. data/test/rails/overrides/spec/rails_helper.rb +1 -1
  62. data/test/rails/overrides/spec/requests/filter_spec.rb +106 -0
  63. data/test/rails/overrides/spec/requests/template_path_spec.rb +1 -1
  64. data/test/rails/overrides/spec/requests/trans_sid_spec.rb +9 -9
  65. data/test/rails/overrides/spec/{features → system}/admin/top_spec.rb +2 -2
  66. data/test/rails/overrides/spec/{features → system}/filter_spec.rb +2 -7
  67. data/test/rails/overrides/spec/system/support/cuprite_setup.rb +14 -0
  68. data/test/rails/overrides/spec/system_helper.rb +3 -0
  69. metadata +44 -21
  70. data/test/rails/overrides/app/views/mobile_spec/no_mobile.html.erb +0 -3
@@ -0,0 +1,38 @@
1
+ module Jpmobile
2
+ class TemplateDetails < ActionView::TemplateDetails
3
+ def initialize(locale, handler, format, variant, mobile)
4
+ @mobile = mobile
5
+
6
+ super(locale, handler, format, variant)
7
+ end
8
+
9
+ def matches?(requested)
10
+ requested.formats_idx[@format] &&
11
+ requested.locale_idx[@locale] &&
12
+ requested.variants_idx[@variant] &&
13
+ requested.handlers_idx[@handler] &&
14
+ requested.mobile_idx[@mobile]
15
+ end
16
+
17
+ def sort_key_for(requested)
18
+ [
19
+ requested.formats_idx[@format],
20
+ requested.locale_idx[@locale],
21
+ requested.variants_idx[@variant],
22
+ requested.handlers_idx[@handler],
23
+ requested.mobile_idx[@mobile],
24
+ ]
25
+ end
26
+
27
+ class Requested < ActionView::TemplateDetails::Requested
28
+ attr_reader :mobile, :mobile_idx
29
+
30
+ def initialize(locale:, handlers:, formats:, variants:, mobile:)
31
+ super(locale: locale, handlers: handlers, formats: formats, variants: variants)
32
+
33
+ @mobile = mobile.map(&:to_sym)
34
+ @mobile_idx = build_idx_hash(mobile)
35
+ end
36
+ end
37
+ end
38
+ end
@@ -51,7 +51,7 @@ module Jpmobile
51
51
 
52
52
  # session_idを埋め込むためのhidden fieldを出力する。
53
53
  def sid_hidden_field_tag
54
- "<input type=\"hidden\" name=\"#{CGI.escapeHTML session_key}\" value=\"#{CGI.escapeHTML jpmobile_session_id}\" />"
54
+ "<input type=\"hidden\" name=\"#{CGI.escapeHTML(session_key.to_s)}\" value=\"#{CGI.escapeHTML(jpmobile_session_id.to_s)}\" />"
55
55
  end
56
56
 
57
57
  # formにsession_idを追加する。
@@ -91,7 +91,7 @@ module Jpmobile
91
91
  end
92
92
 
93
93
  module ActionController
94
- class Metal #:nodoc:
94
+ class Metal # :nodoc:
95
95
  class_attribute :trans_sid_mode
96
96
 
97
97
  class << self
data/lib/jpmobile/util.rb CHANGED
@@ -255,9 +255,8 @@ module Jpmobile
255
255
  SJIS
256
256
  when ::Encoding::UTF_8
257
257
  UTF8
258
- when ::Encoding::ASCII_8BIT
259
- BINARY
260
258
  else
259
+ # 上記以外はすべて BINARY 扱い
261
260
  BINARY
262
261
  end
263
262
  end
@@ -292,12 +291,12 @@ module Jpmobile
292
291
  def split_text(str, size = 15)
293
292
  return nil if str.nil? || (str == '')
294
293
 
295
- [str[0..(size - 1)], str[size..-1]]
294
+ [str[0..(size - 1)], str[size..]]
296
295
  end
297
296
 
298
297
  def invert_table(hash)
299
298
  result = {}
300
- hash.keys.each do |key|
299
+ hash.each_key do |key|
301
300
  if result[hash[key]]
302
301
  if !key.is_a?(Array) && !result[hash[key]].is_a?(Array) && result[hash[key]] > key
303
302
  result[hash[key]] = key
@@ -1,3 +1,3 @@
1
1
  module Jpmobile
2
- VERSION = '6.0.0'.freeze
2
+ VERSION = '7.0.0'.freeze
3
3
  end
@@ -0,0 +1,25 @@
1
+ module Jpmobile
2
+ module ViewSelector
3
+ extend ActiveSupport::Concern
4
+
5
+ included do
6
+ before_action :register_mobile
7
+
8
+ self.view_paths = Jpmobile::PathSet.new(self.view_paths.paths.map(&:path))
9
+ end
10
+
11
+ def register_mobile
12
+ if request.mobile
13
+ # register mobile
14
+ self.lookup_context.mobile = request.mobile.variants
15
+ end
16
+ end
17
+
18
+ def disable_mobile_view!
19
+ self.lookup_context.mobile = []
20
+ end
21
+
22
+ private :register_mobile, :disable_mobile_view!
23
+ end
24
+ Rails::Application::Configuration.include Jpmobile::Configuration::RailsConfiguration
25
+ end
data/lib/jpmobile.rb CHANGED
@@ -48,9 +48,19 @@ module Jpmobile
48
48
  end
49
49
 
50
50
  def self.carriers=(ary)
51
+ @all_variants = nil
52
+
51
53
  @carriers = ary
52
54
  end
53
55
 
56
+ def self.all_variants
57
+ return @all_variants if @all_variants
58
+
59
+ @all_variants = carriers.map {|carrier|
60
+ Jpmobile::Mobile.const_get(carrier).new({}, {}).variants
61
+ }.flatten.uniq
62
+ end
63
+
54
64
  require 'jpmobile/mobile/abstract_mobile'
55
65
  end
56
66
 
@@ -63,6 +73,10 @@ module Jpmobile
63
73
  autoload :Mailer, 'jpmobile/mailer'
64
74
  autoload :Resolver, 'jpmobile/resolver'
65
75
 
76
+ autoload :PathSet, 'jpmobile/path_set'
77
+ autoload :TemplateDetails, 'jpmobile/template_details'
78
+
79
+ autoload :ViewSelector, 'jpmobile/view_selector'
66
80
  autoload :FallbackViewSelector, 'jpmobile/fallback_view_selector'
67
81
 
68
82
  autoload :ParamsOverCookie, 'jpmobile/trans_sid'
@@ -33,7 +33,7 @@ namespace :test do
33
33
  # generate rails app
34
34
  FileUtils.rm_rf(rails_root)
35
35
  FileUtils.mkdir_p(rails_root)
36
- `rails new #{rails_root} --skip-bundle`
36
+ `rails new #{rails_root} --skip-bundle --skip-bootsnap --skip-webpack-install --skip-git --skip-spring`
37
37
  end
38
38
 
39
39
  # setup jpmobile
@@ -104,7 +104,7 @@ namespace :test do
104
104
 
105
105
  # run tests in rails
106
106
  Dir.chdir(rails_root) do
107
- Bundler.with_clean_env do
107
+ Bundler.with_unbundled_env do
108
108
  original_env = ENV.to_hash
109
109
 
110
110
  ENV.update('RBENV_VERSION' => nil)
@@ -112,12 +112,13 @@ namespace :test do
112
112
 
113
113
  system 'bundle install'
114
114
  system 'bin/rails db:migrate RAILS_ENV=test' unless skip
115
- system 'bin/rails spec'
115
+ system 'bin/rails spec', exception: true
116
116
 
117
117
  ENV.replace(original_env)
118
118
  end
119
119
  end
120
120
  end
121
+
121
122
  desc 'Run sinatra on jpmobile tests'
122
123
  Rake::TestTask.new(:sinatra) do |t|
123
124
  t.libs << 'lib'
@@ -28,23 +28,23 @@ describe '絵文字が' do
28
28
  end
29
29
 
30
30
  it 'docomo 絵文字が変換されないこと' do
31
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)[2]
31
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
32
32
  expect(response_body(response)).to eq(@docomo_cr)
33
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)[2]
33
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
34
34
  expect(response_body(response)).to eq(@docomo_utf8)
35
35
  end
36
36
 
37
37
  it 'au 絵文字が変換されないこと' do
38
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)[2]
38
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
39
39
  expect(response_body(response)).to eq(@au_cr)
40
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)[2]
40
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
41
41
  expect(response_body(response)).to eq(@au_utf8)
42
42
  end
43
43
 
44
44
  it 'softbank 絵文字が変換されないこと' do
45
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)[2]
45
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
46
46
  expect(response_body(response)).to eq(@softbank_cr)
47
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)[2]
47
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
48
48
  expect(response_body(response)).to eq(@softbank_utf8)
49
49
  end
50
50
  end
@@ -72,38 +72,38 @@ describe '絵文字が' do
72
72
  end
73
73
 
74
74
  it 'docomo 絵文字が画像に変換されること' do
75
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)[2]
75
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
76
76
  expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
77
77
  end
78
78
 
79
79
  it 'docomo 絵文字コードが画像に変換されること' do
80
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)[2]
80
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
81
81
  expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
82
82
  end
83
83
 
84
84
  it 'au 絵文字が画像に変換されること' do
85
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)[2]
85
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
86
86
  expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
87
87
  end
88
88
 
89
89
  it 'au 絵文字コードが画像に変換されること' do
90
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)[2]
90
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
91
91
  expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
92
92
  end
93
93
 
94
94
  it 'softbank 絵文字が画像に変換されること' do
95
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)[2]
95
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
96
96
  expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
97
97
  end
98
98
 
99
99
  it 'softbank 絵文字コードが画像に変換されること' do
100
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)[2]
100
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
101
101
  expect(response_body(response)).to eq("<img src=\"#{@path}/sun.gif\" alt=\"sun\" />")
102
102
  end
103
103
 
104
104
  it 'Content-Type が変換できないものである場合には変換しないこと' do
105
105
  @res = Rack::MockRequest.env_for('/', 'Content-Type' => 'image/jpeg')
106
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)[2]
106
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
107
107
  expect(response_body(response)).to eq(@softbank_utf8)
108
108
  end
109
109
  end
@@ -118,26 +118,26 @@ describe '絵文字が' do
118
118
  end
119
119
 
120
120
  it 'docomo 絵文字が変換されること' do
121
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)[2]
121
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
122
122
  expect(response_body(response)).to eq(sjis("\xf8\x9f"))
123
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)[2]
123
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
124
124
  expect(response_body(response)).to eq(sjis("\xf8\x9f"))
125
125
 
126
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)[2]
126
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
127
127
  expect(response_body(response)).to eq(sjis("\xf9\x79"))
128
128
  end
129
129
 
130
130
  it 'au 絵文字が変換されること' do
131
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)[2]
131
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
132
132
  expect(response_body(response)).to eq(sjis("\xf8\x9f"))
133
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)[2]
133
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
134
134
  expect(response_body(response)).to eq(sjis("\xf8\x9f"))
135
135
  end
136
136
 
137
137
  it 'softbank 絵文字が変換されること' do
138
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)[2]
138
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
139
139
  expect(response_body(response)).to eq(sjis("\xf8\x9f"))
140
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)[2]
140
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
141
141
  expect(response_body(response)).to eq(sjis("\xf8\x9f"))
142
142
  end
143
143
 
@@ -167,26 +167,26 @@ describe '絵文字が' do
167
167
  end
168
168
 
169
169
  it 'docomo 絵文字が変換されること' do
170
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)[2]
170
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
171
171
  expect(response_body(response)).to eq(sjis("\xf6\x60"))
172
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)[2]
172
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
173
173
  expect(response_body(response)).to eq(sjis("\xf6\x60"))
174
174
 
175
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)[2]
175
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
176
176
  expect(response_body(response)).to eq(utf8_to_sjis('[ドコモポイント]'))
177
177
  end
178
178
 
179
179
  it 'au 絵文字が変換されること' do
180
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)[2]
180
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
181
181
  expect(response_body(response)).to eq(sjis("\xf6\x60"))
182
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)[2]
182
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
183
183
  expect(response_body(response)).to eq(sjis("\xf6\x60"))
184
184
  end
185
185
 
186
186
  it 'softbank 絵文字が変換されること' do
187
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)[2]
187
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
188
188
  expect(response_body(response)).to eq(sjis("\xf6\x60"))
189
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)[2]
189
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
190
190
  expect(response_body(response)).to eq(sjis("\xf6\x60"))
191
191
  end
192
192
 
@@ -216,26 +216,26 @@ describe '絵文字が' do
216
216
  end
217
217
 
218
218
  it 'docomo 絵文字が変換されること' do
219
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)[2]
219
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_cr))).call(@res)
220
220
  expect(response_body(response)).to eq([0xe04a].pack('U'))
221
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)[2]
221
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_utf8))).call(@res)
222
222
  expect(response_body(response)).to eq([0xe04a].pack('U'))
223
223
 
224
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)[2]
224
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@docomo_docomopoint))).call(@res)
225
225
  expect(response_body(response)).to eq('[ドコモポイント]')
226
226
  end
227
227
 
228
228
  it 'au 絵文字が変換されること' do
229
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)[2]
229
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_cr))).call(@res)
230
230
  expect(response_body(response)).to eq([0xe04a].pack('U'))
231
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)[2]
231
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@au_utf8))).call(@res)
232
232
  expect(response_body(response)).to eq([0xe04a].pack('U'))
233
233
  end
234
234
 
235
235
  it 'softbank 絵文字が変換されること' do
236
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)[2]
236
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
237
237
  expect(response_body(response)).to eq([0xe04a].pack('U'))
238
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)[2]
238
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
239
239
  expect(response_body(response)).to eq([0xe04a].pack('U'))
240
240
  end
241
241
 
@@ -265,9 +265,9 @@ describe '絵文字が' do
265
265
  end
266
266
 
267
267
  it 'softbank 絵文字が変換されること' do
268
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)[2]
268
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
269
269
  expect(response_body(response)).to eq([0xe04a].pack('U'))
270
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)[2]
270
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
271
271
  expect(response_body(response)).to eq([0xe04a].pack('U'))
272
272
  end
273
273
 
@@ -298,9 +298,9 @@ describe '絵文字が' do
298
298
  end
299
299
 
300
300
  it 'should convert Softbank emoticon' do
301
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)[2]
301
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_cr))).call(@res)
302
302
  expect(response_body(response)).to eq([0xe04a].pack('U'))
303
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)[2]
303
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@softbank_utf8))).call(@res)
304
304
  expect(response_body(response)).to eq([0xe04a].pack('U'))
305
305
  end
306
306
 
@@ -320,7 +320,7 @@ describe '絵文字が' do
320
320
  end
321
321
 
322
322
  it 'should not convert 〓' do
323
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)[2]
323
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
324
324
  expect(response_body(response)).to eq('〓')
325
325
  end
326
326
  end
@@ -337,9 +337,9 @@ describe '絵文字が' do
337
337
  end
338
338
 
339
339
  it 'should convert Unicode emoticon' do
340
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@unicode_single))).call(@res)[2]
340
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@unicode_single))).call(@res)
341
341
  expect(response_body(response)).to eq([0x2600].pack('U*'))
342
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@unicode_multi))).call(@res)[2]
342
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@unicode_multi))).call(@res)
343
343
  expect(response_body(response)).to eq([0x26C5].pack('U*'))
344
344
  end
345
345
 
@@ -359,7 +359,7 @@ describe '絵文字が' do
359
359
  end
360
360
 
361
361
  it 'should not convert 〓' do
362
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)[2]
362
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
363
363
  expect(response_body(response)).to eq('〓')
364
364
  end
365
365
  end
@@ -381,9 +381,9 @@ describe '絵文字が' do
381
381
  end
382
382
 
383
383
  it 'should convert Google emoticon' do
384
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_single))).call(@res)[2]
384
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_single))).call(@res)
385
385
  expect(response_body(response)).to eq([0xFE000].pack('U*'))
386
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_multi))).call(@res)[2]
386
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_multi))).call(@res)
387
387
  expect(response_body(response)).to eq([0xFE00F].pack('U*'))
388
388
  end
389
389
 
@@ -403,7 +403,7 @@ describe '絵文字が' do
403
403
  end
404
404
 
405
405
  it 'should not convert 〓' do
406
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)[2]
406
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
407
407
  expect(response_body(response)).to eq('〓')
408
408
  end
409
409
  end
@@ -418,9 +418,9 @@ describe '絵文字が' do
418
418
  end
419
419
 
420
420
  it 'should convert Google emoticon' do
421
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_single))).call(@res)[2]
421
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_single))).call(@res)
422
422
  expect(response_body(response)).to eq([0xFE000].pack('U*'))
423
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_multi))).call(@res)[2]
423
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new(@google_multi))).call(@res)
424
424
  expect(response_body(response)).to eq([0xFE00F].pack('U*'))
425
425
  end
426
426
 
@@ -440,7 +440,7 @@ describe '絵文字が' do
440
440
  end
441
441
 
442
442
  it 'should not convert 〓' do
443
- response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)[2]
443
+ response = Jpmobile::MobileCarrier.new(Jpmobile::Filter.new(UnitApplication.new('〓'))).call(@res)
444
444
  expect(response_body(response)).to eq('〓')
445
445
  end
446
446
 
@@ -17,6 +17,7 @@ describe Jpmobile::MobileCarrier do
17
17
  [Jpmobile::Mobile::Emobile, 'emobile/1.0.0 (H11T; like Gecko; Wireless) NetFront/3.4'],
18
18
  [Jpmobile::Mobile::Iphone, 'Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_0 like Mac OS X; ja-jp) AppleWebKit/528.18 (KHTML, like Gecko) Version/4.0 Mobile/7A341 Safari/528.16'],
19
19
  [Jpmobile::Mobile::Android, 'Mozilla/5.0 (Linux; U; Android 1.6; ja-jp; SonyEriccsonSO-01B Build/R1EA018) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1'],
20
+ [Jpmobile::Mobile::Android, 'Mozilla/5.0 (Linux; Android 9; ANE-LX2J Build/HUAWEIANE-LX2J; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/88.0.4324.93 Mobile Safari/537.36 Instagram 172.0.0.21.123 Android (28/9; 480dpi; 1080x2060; HUAWEI; ANE-LX2J; HWANE; hi6250; ja_JP; 269790805)'],
20
21
  [Jpmobile::Mobile::WindowsPhone, 'Mozilla/4.0 (Compatible; MSIE 6.0; Windows NT 5.1 T-01A_6.5; Windows Phone 6.5)'],
21
22
  [Jpmobile::Mobile::BlackBerry, 'BlackBerry9000/4.6.0.224 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/220'],
22
23
  [Jpmobile::Mobile::Ipad, 'Mozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; ja-jp) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F191 Safari/6533.18.5'],
data/spec/rack_helper.rb CHANGED
@@ -74,9 +74,7 @@ module Jpmobile::RackHelper
74
74
  def response_body(res)
75
75
  body = case res
76
76
  when Array
77
- res[2].body
78
- when String
79
- res.body
77
+ res[2]
80
78
  else
81
79
  res.body
82
80
  end
@@ -84,8 +82,6 @@ module Jpmobile::RackHelper
84
82
  case body
85
83
  when Array
86
84
  body.first
87
- when String
88
- body
89
85
  else
90
86
  body
91
87
  end
@@ -56,7 +56,7 @@ describe 'Jpmobile::Email' do
56
56
 
57
57
  describe 'japanese_mail_address_regexp' do
58
58
  before do
59
- Jpmobile::Email.japanese_mail_address_regexp = Regexp.new(/\.jp(?:[^a-zA-Z\.\-]|$)/)
59
+ Jpmobile::Email.japanese_mail_address_regexp = Regexp.new(/\.jp(?:[^a-zA-Z.\-]|$)/)
60
60
  end
61
61
 
62
62
  it '#detect_from_mail_header should return Jpmobile::Mobile::AbstractMobile when the header contains .jp address' do
@@ -7,7 +7,7 @@ describe 'Jpmobile::Mail#receive' do
7
7
 
8
8
  before(:each) do
9
9
  @to = 'info@jpmobile-rails.org'
10
- Jpmobile::Email.japanese_mail_address_regexp = Regexp.new(/\.jp[^a-zA-Z\.\-]/)
10
+ Jpmobile::Email.japanese_mail_address_regexp = Regexp.new(/\.jp[^a-zA-Z.\-]/)
11
11
  end
12
12
 
13
13
  describe 'PC mail' do
@@ -4,7 +4,7 @@ gem 'jpmobile', path: './vendor/jpmobile'
4
4
  gem 'jpmobile-terminfo', path: './vendor/jpmobile-terminfo'
5
5
  gem 'jpmobile-ipaddresses', path: './vendor/jpmobile-ipaddresses'
6
6
 
7
- gem 'activerecord-session_store', '~> 1.1.1'
7
+ gem 'activerecord-session_store', git: 'https://github.com/rails/activerecord-session_store.git', ref: 'f188efbc49a522123cc8acc805143824176d01c1'
8
8
 
9
9
  gem 'pry'
10
10
  gem 'pry-byebug'
@@ -14,3 +14,7 @@ group :development, :test do
14
14
  gem "rspec-rails"
15
15
  gem 'rails-controller-testing'
16
16
  end
17
+
18
+ group :test do
19
+ gem 'cuprite'
20
+ end
@@ -8,6 +8,6 @@ class MobileSpecController < ApplicationController
8
8
  render file: File.join(Rails.public_path, '422.html')
9
9
  end
10
10
 
11
- def no_mobile
11
+ def mobile_not_exist
12
12
  end
13
13
  end
@@ -10,6 +10,9 @@ class TemplatePathController < ApplicationController
10
10
  def show
11
11
  end
12
12
 
13
+ def partial
14
+ end
15
+
13
16
  def optioned_index
14
17
  render action: 'index'
15
18
  end
@@ -0,0 +1,3 @@
1
+ PC mobile_not_exist
2
+
3
+ <%= render 'partial_view_sample' -%>
@@ -61,7 +61,7 @@ RailsRoot::Application.routes.draw do
61
61
  %w[
62
62
  index
63
63
  file_render
64
- no_mobile
64
+ mobile_not_exist
65
65
  ].each do |a|
66
66
  get "mobile_spec/#{a}", to: "mobile_spec##{a}"
67
67
  end
@@ -2,13 +2,14 @@
2
2
  class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
3
3
  def change
4
4
  create_table :active_storage_blobs do |t|
5
- t.string :key, null: false
6
- t.string :filename, null: false
5
+ t.string :key, null: false
6
+ t.string :filename, null: false
7
7
  t.string :content_type
8
8
  t.text :metadata
9
- t.bigint :byte_size, null: false
10
- t.string :checksum, null: false
11
- t.datetime :created_at, null: false
9
+ t.string :service_name, null: false
10
+ t.bigint :byte_size, null: false
11
+ t.string :checksum, null: false
12
+ t.datetime :created_at, null: false
12
13
 
13
14
  t.index [:key], unique: true
14
15
  end
@@ -23,5 +24,13 @@ class CreateActiveStorageTables < ActiveRecord::Migration[5.2]
23
24
  t.index [:record_type, :record_id, :name, :blob_id], name: 'index_active_storage_attachments_uniqueness', unique: true
24
25
  t.foreign_key :active_storage_blobs, column: :blob_id
25
26
  end
27
+
28
+ create_table :active_storage_variant_records do |t|
29
+ t.belongs_to :blob, null: false, index: false
30
+ t.string :variation_digest, null: false
31
+
32
+ t.index %i[blob_id variation_digest], name: 'index_active_storage_variant_records_uniqueness', unique: true
33
+ t.foreign_key :active_storage_blobs, column: :blob_id
34
+ end
26
35
  end
27
36
  end
@@ -6,7 +6,7 @@ shared_examples_for 'docomo_guid が起動しないとき' do
6
6
  it 'で link_to の自動書き換えが行われない' do
7
7
  get :link
8
8
 
9
- expect(response.body).to match(%r{href=\".+/link\"})
9
+ expect(response.body).to match(%r{href=".+/link"})
10
10
  end
11
11
  end
12
12
 
@@ -14,7 +14,7 @@ shared_examples_for 'docomo_guid が起動するとき' do
14
14
  it 'で link_to の自動書き換えが行われる' do
15
15
  get :link
16
16
 
17
- expect(response.body).to match(%r{href=\".+/link\?guid=ON\"})
17
+ expect(response.body).to match(%r{href=".+/link\?guid=ON"})
18
18
  end
19
19
  end
20
20
 
@@ -52,7 +52,7 @@ describe MobileSpecController, type: :controller do
52
52
  end
53
53
  end
54
54
 
55
- describe "GET 'no_mobile'" do
55
+ describe "GET 'mobile_not_exist'" do
56
56
  around do |example|
57
57
  orig_value = Jpmobile.config.fallback_view_selector
58
58
  Jpmobile.config.fallback_view_selector = true
@@ -65,7 +65,7 @@ describe MobileSpecController, type: :controller do
65
65
  context 'PC access' do
66
66
  it 'should be successful' do
67
67
  request.user_agent = 'Mozilla'
68
- get 'no_mobile'
68
+ get 'mobile_not_exist'
69
69
 
70
70
  expect(response).to be_successful
71
71
  expect(response.body).not_to match('RailsRoot PC mobile')
@@ -75,7 +75,7 @@ describe MobileSpecController, type: :controller do
75
75
  context 'mobile access' do
76
76
  it 'should be successful' do
77
77
  request.user_agent = 'DoCoMo/2.0 SH902i(c100;TB;W24H12)'
78
- get 'no_mobile'
78
+ get 'mobile_not_exist'
79
79
 
80
80
  expect(response).to be_successful
81
81
  expect(response.body).not_to match('RailsRoot mobile')
@@ -48,7 +48,7 @@ RSpec.configure do |config|
48
48
  # # ...
49
49
  # end
50
50
  #
51
- # The different available types are documented in the features, such as in
51
+ # The different available types are documented in the system, such as in
52
52
  # https://relishapp.com/rspec/rspec-rails/docs
53
53
  config.infer_spec_type_from_file_location!
54
54