jpmobile 5.0.0 → 5.0.1
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 +4 -4
- data/.gitignore +2 -3
- data/.rubocop.yml +123 -0
- data/CONTRIBUTING.md +16 -14
- data/Gemfile +6 -0
- data/Gemfile.lock +198 -0
- data/README.md +409 -0
- data/Rakefile +9 -9
- data/circle.yml +14 -0
- data/jpmobile.gemspec +9 -10
- data/lib/jpmobile.rb +6 -5
- data/lib/jpmobile/datum_conv.rb +35 -35
- data/lib/jpmobile/docomo_guid.rb +7 -8
- data/lib/jpmobile/email.rb +12 -12
- data/lib/jpmobile/emoticon.rb +85 -76
- data/lib/jpmobile/emoticon/au.rb +1284 -1284
- data/lib/jpmobile/emoticon/conversion_table.rb +3905 -3906
- data/lib/jpmobile/emoticon/docomo.rb +252 -252
- data/lib/jpmobile/emoticon/google.rb +9 -9
- data/lib/jpmobile/emoticon/softbank.rb +471 -471
- data/lib/jpmobile/emoticon/unicode.rb +9 -9
- data/lib/jpmobile/emoticon/z_combine.rb +20 -23
- data/lib/jpmobile/encoding.rb +1 -1
- data/lib/jpmobile/fallback_view_selector.rb +2 -3
- data/lib/jpmobile/filter.rb +44 -47
- data/lib/jpmobile/helpers.rb +38 -38
- data/lib/jpmobile/hook_action_view.rb +7 -7
- data/lib/jpmobile/hook_test_request.rb +0 -1
- data/lib/jpmobile/lookup_context.rb +1 -2
- data/lib/jpmobile/mail.rb +156 -134
- data/lib/jpmobile/mailer.rb +4 -4
- data/lib/jpmobile/mobile/abstract_mobile.rb +62 -36
- data/lib/jpmobile/mobile/android.rb +0 -1
- data/lib/jpmobile/mobile/android_tablet.rb +0 -1
- data/lib/jpmobile/mobile/au.rb +40 -28
- data/lib/jpmobile/mobile/black_berry.rb +0 -1
- data/lib/jpmobile/mobile/ddipocket.rb +1 -2
- data/lib/jpmobile/mobile/docomo.rb +47 -36
- data/lib/jpmobile/mobile/emobile.rb +1 -2
- data/lib/jpmobile/mobile/google_emoticon.rb +1 -1
- data/lib/jpmobile/mobile/ipad.rb +0 -1
- data/lib/jpmobile/mobile/iphone.rb +0 -1
- data/lib/jpmobile/mobile/smart_phone.rb +0 -1
- data/lib/jpmobile/mobile/softbank.rb +24 -20
- data/lib/jpmobile/mobile/tablet.rb +0 -1
- data/lib/jpmobile/mobile/unicode_emoticon.rb +15 -15
- data/lib/jpmobile/mobile/vodafone.rb +0 -1
- data/lib/jpmobile/mobile/willcom.rb +7 -7
- data/lib/jpmobile/mobile/windows_phone.rb +0 -1
- data/lib/jpmobile/path_set.rb +1 -1
- data/lib/jpmobile/position.rb +30 -14
- data/lib/jpmobile/rack/filter.rb +4 -4
- data/lib/jpmobile/rack/mobile_carrier.rb +0 -1
- data/lib/jpmobile/rack/params_filter.rb +7 -6
- data/lib/jpmobile/rails.rb +3 -4
- data/lib/jpmobile/request_with_mobile.rb +9 -6
- data/lib/jpmobile/resolver.rb +23 -17
- data/lib/jpmobile/session/active_record_store.rb +7 -9
- data/lib/jpmobile/session/mem_cache_store.rb +7 -9
- data/lib/jpmobile/sinatra.rb +1 -1
- data/lib/jpmobile/trans_sid.rb +15 -20
- data/lib/jpmobile/util.rb +61 -77
- data/lib/jpmobile/version.rb +1 -1
- data/lib/tasks/jpmobile_tasks.rake +35 -28
- data/spec/rack/jpmobile/android_spec.rb +5 -5
- data/spec/rack/jpmobile/au_spec.rb +74 -59
- data/spec/rack/jpmobile/black_berry_spec.rb +5 -5
- data/spec/rack/jpmobile/docomo_spec.rb +77 -64
- data/spec/rack/jpmobile/emoticon_spec.rb +137 -121
- data/spec/rack/jpmobile/filter_spec.rb +149 -128
- data/spec/rack/jpmobile/iphone_spec.rb +9 -8
- data/spec/rack/jpmobile/mobile_by_ua_spec.rb +22 -21
- data/spec/rack/jpmobile/params_filter_spec.rb +104 -96
- data/spec/rack/jpmobile/softbank_spec.rb +49 -42
- data/spec/rack/jpmobile/willcom_spec.rb +22 -18
- data/spec/rack/jpmobile/windows_phone.rb +5 -5
- data/spec/rack_helper.rb +9 -8
- data/spec/spec_helper.rb +5 -6
- data/spec/unit/decorated_mail_spec.rb +8 -9
- data/spec/unit/email_spec.rb +44 -44
- data/spec/unit/emoticon_spec.rb +57 -58
- data/spec/unit/encoding_spec.rb +35 -36
- data/spec/unit/is_carrier_spec.rb +49 -49
- data/spec/unit/mail_spec.rb +153 -143
- data/spec/unit/mobile/iphone_spec.rb +6 -7
- data/spec/unit/receive_mail_spec.rb +172 -173
- data/spec/unit/spec_helper.rb +6 -6
- data/spec/unit/util_spec.rb +125 -46
- data/spec/unit/valid_ip_spec.rb +35 -35
- data/spec/unit/variants_spec.rb +18 -19
- data/test/rails/overrides/Gemfile +54 -0
- data/test/rails/overrides/Gemfile.jpmobile +1 -2
- data/test/rails/overrides/app/controllers/admin/top_controller.rb +1 -1
- data/test/rails/overrides/app/controllers/docomo_guid_base_controller.rb +1 -1
- data/test/rails/overrides/app/controllers/filter_controller_base.rb +14 -6
- data/test/rails/overrides/app/controllers/hankaku_input_filter_controller.rb +1 -1
- data/test/rails/overrides/app/controllers/mobile_spec_controller.rb +1 -1
- data/test/rails/overrides/app/controllers/template_path_controller.rb +1 -2
- data/test/rails/overrides/app/controllers/trans_sid_base_controller.rb +18 -10
- data/test/rails/overrides/app/controllers/trans_sid_metal_controller.rb +0 -1
- data/test/rails/overrides/app/mailers/decorated_mailer.rb +3 -4
- data/test/rails/overrides/app/mailers/mobile_mailer.rb +5 -6
- data/test/rails/overrides/app/mailers/normal_mailer.rb +2 -3
- data/test/rails/overrides/autotest/discover.rb +2 -2
- data/test/rails/overrides/config/initializers/jpmobile_generator.rb +2 -2
- data/test/rails/overrides/config/routes.rb +95 -2
- data/test/rails/overrides/db/migrate/001_add_sessions_table.rb +2 -2
- data/test/rails/overrides/db/migrate/20100824062306_create_users.rb +1 -1
- data/test/rails/overrides/spec/controllers/docomo_guid_spec.rb +24 -25
- data/test/rails/overrides/spec/controllers/helpers_spec.rb +88 -88
- data/test/rails/overrides/spec/controllers/mobile_spec_controller_spec.rb +9 -9
- data/test/rails/overrides/spec/controllers/template_path_spec.rb +19 -19
- data/test/rails/overrides/spec/features/admin/top_spec.rb +7 -7
- data/test/rails/overrides/spec/features/filter_spec.rb +101 -102
- data/test/rails/overrides/spec/helpers/helpers_spec.rb +4 -4
- data/test/rails/overrides/spec/mailers/decorated_mailer_spec.rb +12 -12
- data/test/rails/overrides/spec/mailers/mobile_mailer_spec.rb +209 -194
- data/test/rails/overrides/spec/mailers/normal_mailer_spec.rb +10 -10
- data/test/rails/overrides/spec/rails_helper.rb +1 -1
- data/test/rails/overrides/spec/requests/docomo_spec.rb +13 -13
- data/test/rails/overrides/spec/requests/emobile_spec.rb +19 -19
- data/test/rails/overrides/spec/requests/pc_spec.rb +6 -6
- data/test/rails/overrides/spec/requests/softbank_emulator_spec.rb +6 -6
- data/test/rails/overrides/spec/requests/template_path_spec.rb +60 -60
- data/test/rails/overrides/spec/requests/trans_sid_spec.rb +89 -89
- data/test/sinatra/test/filter_test.rb +10 -11
- data/tools/e4u_conv.rb +0 -1
- metadata +18 -14
- data/README +0 -0
- data/README.rdoc +0 -308
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 0a59b2d91b6623e62be44818ffad569c1a30bb3f
|
|
4
|
+
data.tar.gz: a4737c7bfa0e802747202254c43162022213c3c0
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 478a46e5f1d336ad58d7cf51605cd51fe11c5e5159b507e7c602d054d2bd953d1939b713b130bae46a5f1425afd921470dcf37e133042d149269a2ec7d614776
|
|
7
|
+
data.tar.gz: 40699b70bfb7eeefc58dc071effa2abcafae6484ab0a59adb0f84e793313a8e15e63ef5e24b9ce6d861415f97bbda074ae908ad69e465968e4d2e3a0a100b870
|
data/.gitignore
CHANGED
data/.rubocop.yml
ADDED
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
inherit_gem:
|
|
2
|
+
onkcop:
|
|
3
|
+
- "config/rubocop.yml"
|
|
4
|
+
# uncomment if use rails cops
|
|
5
|
+
# - "config/rails.yml"
|
|
6
|
+
# uncomment if use rspec cops
|
|
7
|
+
# - "config/rspec.yml"
|
|
8
|
+
|
|
9
|
+
AllCops:
|
|
10
|
+
TargetRubyVersion: 2.3
|
|
11
|
+
Exclude:
|
|
12
|
+
- 'bin/bundle'
|
|
13
|
+
- 'bin/rails'
|
|
14
|
+
- 'bin/rake'
|
|
15
|
+
- 'db/schema.rb'
|
|
16
|
+
- 'vendor/bundle/**/*'
|
|
17
|
+
- 'tools/**/*'
|
|
18
|
+
- 'test/rails/rails_root/**/*'
|
|
19
|
+
- 'vendor/jpmobile-*/**/*'
|
|
20
|
+
|
|
21
|
+
Style/StringLiterals:
|
|
22
|
+
EnforcedStyle: single_quotes
|
|
23
|
+
|
|
24
|
+
Style/Semicolon:
|
|
25
|
+
AllowAsExpressionSeparator: true
|
|
26
|
+
|
|
27
|
+
Style/BlockDelimiters:
|
|
28
|
+
FunctionalMethods:
|
|
29
|
+
- before
|
|
30
|
+
- let
|
|
31
|
+
- let!
|
|
32
|
+
- subject
|
|
33
|
+
- watch
|
|
34
|
+
- expect
|
|
35
|
+
Exclude:
|
|
36
|
+
# For support original style
|
|
37
|
+
- 'lib/jpmobile/resolver.rb'
|
|
38
|
+
- 'lib/jpmobile/mail.rb'
|
|
39
|
+
EnforcedStyle: braces_for_chaining
|
|
40
|
+
|
|
41
|
+
Style/IndentationConsistency:
|
|
42
|
+
EnforcedStyle: normal
|
|
43
|
+
|
|
44
|
+
Style/AccessorMethodName:
|
|
45
|
+
Exclude:
|
|
46
|
+
- 'lib/jpmobile/mail.rb'
|
|
47
|
+
|
|
48
|
+
Style/BlockComments:
|
|
49
|
+
Exclude:
|
|
50
|
+
- 'test/rails/overrides/spec/spec_helper.rb'
|
|
51
|
+
|
|
52
|
+
Metrics/AbcSize:
|
|
53
|
+
Exclude:
|
|
54
|
+
- 'lib/jpmobile/datum_conv.rb'
|
|
55
|
+
- 'lib/jpmobile/emoticon.rb'
|
|
56
|
+
- 'lib/jpmobile/helpers.rb'
|
|
57
|
+
- 'lib/jpmobile/mail.rb'
|
|
58
|
+
- 'lib/jpmobile/mobile/*'
|
|
59
|
+
- 'lib/jpmobile/fallback_view_selector.rb'
|
|
60
|
+
- 'lib/jpmobile/resolver.rb'
|
|
61
|
+
- 'lib/jpmobile/rack/filter.rb'
|
|
62
|
+
|
|
63
|
+
Metrics/CyclomaticComplexity:
|
|
64
|
+
Exclude:
|
|
65
|
+
- 'lib/jpmobile/emoticon.rb'
|
|
66
|
+
- 'lib/jpmobile/helpers.rb'
|
|
67
|
+
- 'lib/jpmobile/mail.rb'
|
|
68
|
+
- 'lib/jpmobile/mobile/au.rb'
|
|
69
|
+
- 'lib/jpmobile/mobile/docomo.rb'
|
|
70
|
+
|
|
71
|
+
Metrics/PerceivedComplexity:
|
|
72
|
+
Exclude:
|
|
73
|
+
- 'lib/jpmobile/emoticon.rb'
|
|
74
|
+
- 'lib/jpmobile/helpers.rb'
|
|
75
|
+
- 'lib/jpmobile/mail.rb'
|
|
76
|
+
- 'lib/jpmobile/mobile/au.rb'
|
|
77
|
+
- 'lib/jpmobile/mobile/docomo.rb'
|
|
78
|
+
- 'lib/jpmobile/trans_sid.rb'
|
|
79
|
+
|
|
80
|
+
Metrics/LineLength:
|
|
81
|
+
Exclude:
|
|
82
|
+
- '**/*_spec.rb'
|
|
83
|
+
- 'lib/jpmobile/emoticon/z_combine.rb'
|
|
84
|
+
- 'lib/jpmobile/hook_action_view.rb'
|
|
85
|
+
- 'lib/jpmobile/mobile/au.rb'
|
|
86
|
+
- 'lib/jpmobile/mobile/emobile.rb'
|
|
87
|
+
|
|
88
|
+
Metrics/ModuleLength:
|
|
89
|
+
Exclude:
|
|
90
|
+
- 'lib/jpmobile/emoticon.rb'
|
|
91
|
+
- 'lib/jpmobile/helpers.rb'
|
|
92
|
+
- 'lib/jpmobile/util.rb'
|
|
93
|
+
|
|
94
|
+
Metrics/BlockLength:
|
|
95
|
+
Exclude:
|
|
96
|
+
- '**/*_spec.rb'
|
|
97
|
+
- 'lib/jpmobile/emoticon.rb'
|
|
98
|
+
- 'lib/tasks/jpmobile_tasks.rake'
|
|
99
|
+
- 'test/rails/overrides/config/routes.rb'
|
|
100
|
+
|
|
101
|
+
Metrics/BlockNesting:
|
|
102
|
+
Exclude:
|
|
103
|
+
- 'lib/jpmobile/trans_sid.rb'
|
|
104
|
+
|
|
105
|
+
Metrics/ClassLength:
|
|
106
|
+
Exclude:
|
|
107
|
+
- 'lib/jpmobile/filter.rb'
|
|
108
|
+
- 'lib/jpmobile/mail.rb'
|
|
109
|
+
- 'lib/jpmobile/mobile/abstract_mobile.rb'
|
|
110
|
+
- 'lib/jpmobile/mobile/docomo.rb'
|
|
111
|
+
|
|
112
|
+
Metrics/MethodLength:
|
|
113
|
+
Exclude:
|
|
114
|
+
- 'lib/jpmobile/emoticon.rb'
|
|
115
|
+
- 'lib/jpmobile/helpers.rb'
|
|
116
|
+
- 'lib/jpmobile/mail.rb'
|
|
117
|
+
- 'lib/jpmobile/resolver.rb'
|
|
118
|
+
|
|
119
|
+
Lint/HandleExceptions:
|
|
120
|
+
Exclude:
|
|
121
|
+
- 'lib/jpmobile/emoticon.rb'
|
|
122
|
+
- 'lib/jpmobile/fallback_view_selector.rb'
|
|
123
|
+
- 'lib/jpmobile/position.rb'
|
data/CONTRIBUTING.md
CHANGED
|
@@ -10,19 +10,21 @@ $ git clone git@github.com:jpmobile/jpmobile-ipaddresses.git
|
|
|
10
10
|
$ git clone git@github.com:jpmobile/jpmobile-terminfo.git
|
|
11
11
|
```
|
|
12
12
|
|
|
13
|
+
## SMTPサーバの準備
|
|
14
|
+
SMTP通信を行うテストが含まれており、現時点では[mailtrap](https://mailtrap.io/)を利用しています。
|
|
15
|
+
|
|
16
|
+
以下のように環境変数を設定してテストを実行してください。
|
|
17
|
+
|
|
18
|
+
```
|
|
19
|
+
export MAILTRAP_USERNAME=XXXXXXXXXXXXXX
|
|
20
|
+
export MAILTRAP_PASSWORD=YYYYYYYYYYYYYY
|
|
21
|
+
```
|
|
22
|
+
|
|
13
23
|
## テスト
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
smtpdのmockを利用する必要があります。
|
|
24
|
+
以下のテストを通過する必要があります。
|
|
25
|
+
|
|
17
26
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
* nokogiri
|
|
23
|
-
* rspec
|
|
24
|
-
* rspec-rails
|
|
25
|
-
* rspec-fixture
|
|
26
|
-
* rack-test
|
|
27
|
-
* mocha
|
|
28
|
-
* geokit
|
|
27
|
+
```
|
|
28
|
+
$ bundle exec rake test
|
|
29
|
+
$ bundle exec rubocop
|
|
30
|
+
```
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
jpmobile (5.0.0)
|
|
5
|
+
|
|
6
|
+
GEM
|
|
7
|
+
remote: https://rubygems.org/
|
|
8
|
+
specs:
|
|
9
|
+
actioncable (5.0.3)
|
|
10
|
+
actionpack (= 5.0.3)
|
|
11
|
+
nio4r (>= 1.2, < 3.0)
|
|
12
|
+
websocket-driver (~> 0.6.1)
|
|
13
|
+
actionmailer (5.0.3)
|
|
14
|
+
actionpack (= 5.0.3)
|
|
15
|
+
actionview (= 5.0.3)
|
|
16
|
+
activejob (= 5.0.3)
|
|
17
|
+
mail (~> 2.5, >= 2.5.4)
|
|
18
|
+
rails-dom-testing (~> 2.0)
|
|
19
|
+
actionpack (5.0.3)
|
|
20
|
+
actionview (= 5.0.3)
|
|
21
|
+
activesupport (= 5.0.3)
|
|
22
|
+
rack (~> 2.0)
|
|
23
|
+
rack-test (~> 0.6.3)
|
|
24
|
+
rails-dom-testing (~> 2.0)
|
|
25
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
|
26
|
+
actionview (5.0.3)
|
|
27
|
+
activesupport (= 5.0.3)
|
|
28
|
+
builder (~> 3.1)
|
|
29
|
+
erubis (~> 2.7.0)
|
|
30
|
+
rails-dom-testing (~> 2.0)
|
|
31
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.3)
|
|
32
|
+
activejob (5.0.3)
|
|
33
|
+
activesupport (= 5.0.3)
|
|
34
|
+
globalid (>= 0.3.6)
|
|
35
|
+
activemodel (5.0.3)
|
|
36
|
+
activesupport (= 5.0.3)
|
|
37
|
+
activerecord (5.0.3)
|
|
38
|
+
activemodel (= 5.0.3)
|
|
39
|
+
activesupport (= 5.0.3)
|
|
40
|
+
arel (~> 7.0)
|
|
41
|
+
activesupport (5.0.3)
|
|
42
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
|
43
|
+
i18n (~> 0.7)
|
|
44
|
+
minitest (~> 5.1)
|
|
45
|
+
tzinfo (~> 1.1)
|
|
46
|
+
addressable (2.5.1)
|
|
47
|
+
public_suffix (~> 2.0, >= 2.0.2)
|
|
48
|
+
arel (7.1.4)
|
|
49
|
+
ast (2.3.0)
|
|
50
|
+
builder (3.2.3)
|
|
51
|
+
capybara (2.13.0)
|
|
52
|
+
addressable
|
|
53
|
+
mime-types (>= 1.16)
|
|
54
|
+
nokogiri (>= 1.3.3)
|
|
55
|
+
rack (>= 1.0.0)
|
|
56
|
+
rack-test (>= 0.5.4)
|
|
57
|
+
xpath (~> 2.0)
|
|
58
|
+
capybara-webkit (1.14.0)
|
|
59
|
+
capybara (>= 2.3.0, < 2.14.0)
|
|
60
|
+
json
|
|
61
|
+
coderay (1.1.1)
|
|
62
|
+
concurrent-ruby (1.0.5)
|
|
63
|
+
diff-lcs (1.3)
|
|
64
|
+
erubis (2.7.0)
|
|
65
|
+
geokit (1.11.0)
|
|
66
|
+
git (1.3.0)
|
|
67
|
+
globalid (0.4.0)
|
|
68
|
+
activesupport (>= 4.2.0)
|
|
69
|
+
hpricot (0.8.6)
|
|
70
|
+
i18n (0.8.1)
|
|
71
|
+
json (2.1.0)
|
|
72
|
+
loofah (2.0.3)
|
|
73
|
+
nokogiri (>= 1.5.9)
|
|
74
|
+
mail (2.6.5)
|
|
75
|
+
mime-types (>= 1.16, < 4)
|
|
76
|
+
method_source (0.8.2)
|
|
77
|
+
mime-types (3.1)
|
|
78
|
+
mime-types-data (~> 3.2015)
|
|
79
|
+
mime-types-data (3.2016.0521)
|
|
80
|
+
mini_portile2 (2.1.0)
|
|
81
|
+
minitest (5.10.2)
|
|
82
|
+
nio4r (2.0.0)
|
|
83
|
+
nokogiri (1.7.2)
|
|
84
|
+
mini_portile2 (~> 2.1.0)
|
|
85
|
+
onkcop (0.48.1.1)
|
|
86
|
+
rubocop (~> 0.48.1)
|
|
87
|
+
rubocop-rspec (>= 1.15.0)
|
|
88
|
+
parser (2.4.0.0)
|
|
89
|
+
ast (~> 2.2)
|
|
90
|
+
powerpack (0.1.1)
|
|
91
|
+
pry (0.10.4)
|
|
92
|
+
coderay (~> 1.1.0)
|
|
93
|
+
method_source (~> 0.8.1)
|
|
94
|
+
slop (~> 3.4)
|
|
95
|
+
public_suffix (2.0.5)
|
|
96
|
+
rack (2.0.2)
|
|
97
|
+
rack-test (0.6.3)
|
|
98
|
+
rack (>= 1.0)
|
|
99
|
+
rails (5.0.3)
|
|
100
|
+
actioncable (= 5.0.3)
|
|
101
|
+
actionmailer (= 5.0.3)
|
|
102
|
+
actionpack (= 5.0.3)
|
|
103
|
+
actionview (= 5.0.3)
|
|
104
|
+
activejob (= 5.0.3)
|
|
105
|
+
activemodel (= 5.0.3)
|
|
106
|
+
activerecord (= 5.0.3)
|
|
107
|
+
activesupport (= 5.0.3)
|
|
108
|
+
bundler (>= 1.3.0, < 2.0)
|
|
109
|
+
railties (= 5.0.3)
|
|
110
|
+
sprockets-rails (>= 2.0.0)
|
|
111
|
+
rails-dom-testing (2.0.3)
|
|
112
|
+
activesupport (>= 4.2.0)
|
|
113
|
+
nokogiri (>= 1.6)
|
|
114
|
+
rails-html-sanitizer (1.0.3)
|
|
115
|
+
loofah (~> 2.0)
|
|
116
|
+
railties (5.0.3)
|
|
117
|
+
actionpack (= 5.0.3)
|
|
118
|
+
activesupport (= 5.0.3)
|
|
119
|
+
method_source
|
|
120
|
+
rake (>= 0.8.7)
|
|
121
|
+
thor (>= 0.18.1, < 2.0)
|
|
122
|
+
rainbow (2.2.2)
|
|
123
|
+
rake
|
|
124
|
+
rake (12.0.0)
|
|
125
|
+
rspec (3.6.0)
|
|
126
|
+
rspec-core (~> 3.6.0)
|
|
127
|
+
rspec-expectations (~> 3.6.0)
|
|
128
|
+
rspec-mocks (~> 3.6.0)
|
|
129
|
+
rspec-core (3.6.0)
|
|
130
|
+
rspec-support (~> 3.6.0)
|
|
131
|
+
rspec-expectations (3.6.0)
|
|
132
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
133
|
+
rspec-support (~> 3.6.0)
|
|
134
|
+
rspec-its (1.2.0)
|
|
135
|
+
rspec-core (>= 3.0.0)
|
|
136
|
+
rspec-expectations (>= 3.0.0)
|
|
137
|
+
rspec-mocks (3.6.0)
|
|
138
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
139
|
+
rspec-support (~> 3.6.0)
|
|
140
|
+
rspec-rails (3.6.0)
|
|
141
|
+
actionpack (>= 3.0)
|
|
142
|
+
activesupport (>= 3.0)
|
|
143
|
+
railties (>= 3.0)
|
|
144
|
+
rspec-core (~> 3.6.0)
|
|
145
|
+
rspec-expectations (~> 3.6.0)
|
|
146
|
+
rspec-mocks (~> 3.6.0)
|
|
147
|
+
rspec-support (~> 3.6.0)
|
|
148
|
+
rspec-support (3.6.0)
|
|
149
|
+
rubocop (0.48.1)
|
|
150
|
+
parser (>= 2.3.3.1, < 3.0)
|
|
151
|
+
powerpack (~> 0.1)
|
|
152
|
+
rainbow (>= 1.99.1, < 3.0)
|
|
153
|
+
ruby-progressbar (~> 1.7)
|
|
154
|
+
unicode-display_width (~> 1.0, >= 1.0.1)
|
|
155
|
+
rubocop-rspec (1.15.1)
|
|
156
|
+
rubocop (>= 0.42.0)
|
|
157
|
+
ruby-progressbar (1.8.1)
|
|
158
|
+
slop (3.6.0)
|
|
159
|
+
sprockets (3.7.1)
|
|
160
|
+
concurrent-ruby (~> 1.0)
|
|
161
|
+
rack (> 1, < 3)
|
|
162
|
+
sprockets-rails (3.2.0)
|
|
163
|
+
actionpack (>= 4.0)
|
|
164
|
+
activesupport (>= 4.0)
|
|
165
|
+
sprockets (>= 3.0.0)
|
|
166
|
+
sqlite3 (1.3.13)
|
|
167
|
+
sqlite3-ruby (1.3.3)
|
|
168
|
+
sqlite3 (>= 1.3.3)
|
|
169
|
+
thor (0.19.4)
|
|
170
|
+
thread_safe (0.3.6)
|
|
171
|
+
tzinfo (1.2.3)
|
|
172
|
+
thread_safe (~> 0.1)
|
|
173
|
+
unicode-display_width (1.2.1)
|
|
174
|
+
websocket-driver (0.6.5)
|
|
175
|
+
websocket-extensions (>= 0.1.0)
|
|
176
|
+
websocket-extensions (0.1.2)
|
|
177
|
+
xpath (2.0.0)
|
|
178
|
+
nokogiri (~> 1.3)
|
|
179
|
+
|
|
180
|
+
PLATFORMS
|
|
181
|
+
ruby
|
|
182
|
+
|
|
183
|
+
DEPENDENCIES
|
|
184
|
+
capybara-webkit
|
|
185
|
+
geokit
|
|
186
|
+
git
|
|
187
|
+
hpricot
|
|
188
|
+
jpmobile!
|
|
189
|
+
onkcop
|
|
190
|
+
pry
|
|
191
|
+
rails (~> 5.0.0)
|
|
192
|
+
rspec
|
|
193
|
+
rspec-its
|
|
194
|
+
rspec-rails
|
|
195
|
+
sqlite3-ruby
|
|
196
|
+
|
|
197
|
+
BUNDLED WITH
|
|
198
|
+
1.14.6
|
data/README.md
ADDED
|
@@ -0,0 +1,409 @@
|
|
|
1
|
+
[](https://circleci.com/gh/jpmobile/jpmobile/tree/master)
|
|
2
|
+
[](https://codeclimate.com/github/jpmobile/jpmobile)
|
|
3
|
+
|
|
4
|
+
# jpmobile: A Rails plugin for Japanese mobile-phones
|
|
5
|
+
|
|
6
|
+
## jpmobileとは
|
|
7
|
+
携帯電話特有の機能を Rails 5.0 や Rack middleware で利用するためのプラグイン。 以下の機能を備える。
|
|
8
|
+
|
|
9
|
+
* 携帯電話のキャリア判別
|
|
10
|
+
* 端末位置情報の取得
|
|
11
|
+
* [GeoKit](http://geokit.rubyforge.org) との連携
|
|
12
|
+
|
|
13
|
+
* 端末製造番号、契約者番号等の取得
|
|
14
|
+
* IPアドレスの検証(キャリアが公開しているIPアドレス帯域からのアクセスか判定)
|
|
15
|
+
* IPアドレスの検証には
|
|
16
|
+
[jpmobile-ipaddresses](http://github.com/jpmobile/jpmobile-ipaddresses
|
|
17
|
+
) が必要です。
|
|
18
|
+
|
|
19
|
+
* ディスプレイ情報(画面サイズ、ブラウザ画面サイズ、カラー・白黒、色数)の取得
|
|
20
|
+
* ディスプレイ情報の取得には
|
|
21
|
+
[jpmobile-terminfo](http://github.com/jpmobile/jpmobile-terminfo)
|
|
22
|
+
が必要です。
|
|
23
|
+
|
|
24
|
+
* 文字コード変換機能/絵文字のキャリア間相互変換
|
|
25
|
+
* メールの送信
|
|
26
|
+
* 絵文字と漢字コードの変換
|
|
27
|
+
|
|
28
|
+
* メールの受信(experimental)
|
|
29
|
+
* 絵文字と漢字コードの変換
|
|
30
|
+
|
|
31
|
+
また Rails 5.0 に以下の機能を追加する
|
|
32
|
+
* ビューへの自動振分け
|
|
33
|
+
* 位置情報取得などのリンクヘルパーの追加
|
|
34
|
+
* セッションIDをフォーム/リンクに付与(Trans SID)
|
|
35
|
+
|
|
36
|
+
他のバージョンの Rails については [Versions : Jpmobile vs
|
|
37
|
+
Rails](https://github.com/jpmobile/jpmobile/wiki/Version-:-Jpmobile-vs-Rails)
|
|
38
|
+
を参照。
|
|
39
|
+
|
|
40
|
+
## インストール
|
|
41
|
+
### Rails pluginとしてインストールする場合
|
|
42
|
+
```shell
|
|
43
|
+
% rails plugin install git://github.com/jpmobile/jpmobile.git
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
#### IPアドレス検証が必要な場合
|
|
47
|
+
```shell
|
|
48
|
+
% rails plugin install git://github.com/jpmobile/jpmobile-ipaddresses.git
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
#### ディスプレイ情報を取得する必要がある場合
|
|
52
|
+
```shell
|
|
53
|
+
% rails plugin install git://github.com/jpmobile/jpmobile-terminfo.git
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### gemでインストールする場合
|
|
57
|
+
```shell
|
|
58
|
+
% gem install jpmobile
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
#### IPアドレス検証が必要な場合
|
|
62
|
+
```shell
|
|
63
|
+
% gem install jpmobile-ipaddresses
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
#### ディスプレイ情報を取得する必要がある場合
|
|
67
|
+
```shell
|
|
68
|
+
% gem install jpmobile-terminfo
|
|
69
|
+
```
|
|
70
|
+
|
|
71
|
+
## 使用例
|
|
72
|
+
|
|
73
|
+
### 携帯電話の識別
|
|
74
|
+
環境変数 `ENV['rack.jpmobile']` にキャリアクラスのインスタンスが格納されています。また Rack::Request#mobile
|
|
75
|
+
としても取得可能です。
|
|
76
|
+
|
|
77
|
+
#### キャリアの識別
|
|
78
|
+
|
|
79
|
+
```ruby
|
|
80
|
+
case request.mobile
|
|
81
|
+
when Jpmobile::Mobile::Docomo
|
|
82
|
+
# for DoCoMo
|
|
83
|
+
when Jpmobile::Mobile::Au
|
|
84
|
+
# for au
|
|
85
|
+
when Jpmobile::Mobile::Softbank
|
|
86
|
+
# for SoftBank
|
|
87
|
+
when Jpmobile::Mobile::Willcom
|
|
88
|
+
# for Willcom
|
|
89
|
+
when Jpmobile::Mobile::Emobile
|
|
90
|
+
# for EMOBILE
|
|
91
|
+
else
|
|
92
|
+
# for PC
|
|
93
|
+
end
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
あるいは
|
|
97
|
+
```ruby
|
|
98
|
+
if request.mobile.is_a?(Jpmobile::Mobile::Docomo)
|
|
99
|
+
# for DoCoMo
|
|
100
|
+
end
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
#### ビューの中で一部を切替える例
|
|
104
|
+
```ruby
|
|
105
|
+
<% if request.mobile? %>
|
|
106
|
+
携帯電話からのアクセスです。
|
|
107
|
+
<% else %>
|
|
108
|
+
携帯電話からのアクセスではありません。
|
|
109
|
+
<% end %>
|
|
110
|
+
|
|
111
|
+
<% if request.smart_phone? %>
|
|
112
|
+
スマートフォンからのアクセスです。
|
|
113
|
+
<% else %>
|
|
114
|
+
スマートフォンからのアクセスではありません。
|
|
115
|
+
<% end %>
|
|
116
|
+
|
|
117
|
+
<% if request.tablet? %>
|
|
118
|
+
タブレットからのアクセスです。
|
|
119
|
+
<% else %>
|
|
120
|
+
タブレットからのアクセスではありません。
|
|
121
|
+
<% end %>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
#### 別に用意した携帯電話用コントローラへリダイレクトする例
|
|
125
|
+
```ruby
|
|
126
|
+
class PcController < ApplicationController
|
|
127
|
+
before_action :redirect_if_mobile
|
|
128
|
+
|
|
129
|
+
def index
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
private
|
|
133
|
+
def redirect_if_mobile
|
|
134
|
+
if request.mobile?
|
|
135
|
+
pa = params.dup
|
|
136
|
+
pa[:controller] = "/mobile"
|
|
137
|
+
redirect_to pa
|
|
138
|
+
elsif request.smart_phone?
|
|
139
|
+
pa = params.dup
|
|
140
|
+
pa[:controller] = "/smart_phone"
|
|
141
|
+
redirect_to pa
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
class MobileController < ApplicationController
|
|
147
|
+
end
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
### 位置情報の取得
|
|
151
|
+
Rack::Request#mobile.position に位置情報が格納されます。
|
|
152
|
+
|
|
153
|
+
```ruby
|
|
154
|
+
@latitude = request.mobile.position.lat
|
|
155
|
+
@longuitude = request.mobile.position.lon
|
|
156
|
+
```
|
|
157
|
+
|
|
158
|
+
#### [GeoKit](http://geokit.rubyforge.org) との連携
|
|
159
|
+
|
|
160
|
+
vendor/plugins/geokit以下にGeoKitがインストールされていると、Jpmobile::PositionにGeoKit::Mappabl
|
|
161
|
+
eがincludeされる。したがって、
|
|
162
|
+
|
|
163
|
+
```ruby
|
|
164
|
+
request.mobile.position.distance_to('札幌駅')
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
とすることで、端末と「札幌駅」との距離を求めることができる。詳細は http://geokit.rubyforge.org/api/index.html
|
|
168
|
+
参照。
|
|
169
|
+
|
|
170
|
+
### 端末情報の取得
|
|
171
|
+
|
|
172
|
+
端末側から通知されている場合、request.mobile.ident で 契約に固有の識別子もしくは端末の製造番号を取得できる。
|
|
173
|
+
両方存在する場合は契約に固有のIDが優先される。
|
|
174
|
+
|
|
175
|
+
* 契約に固有のID (request.mobile.ident_subscriber)
|
|
176
|
+
* au: EZ番号(サブスクライバ番号)
|
|
177
|
+
* DoCoMo: FOMAカード製造番号
|
|
178
|
+
* EMOBILE: EMnet対応端末から通知されるユニークなユーザID
|
|
179
|
+
|
|
180
|
+
* 端末製造番号 (request.mobile.ident_device)
|
|
181
|
+
* DoCoMo: 端末製造番号(FOMA, MOVA)
|
|
182
|
+
* SoftBank: 製造番号
|
|
183
|
+
|
|
184
|
+
### IPの検証
|
|
185
|
+
キャリアが公開しているIPアドレス帯域からのアクセスか判定する。
|
|
186
|
+
```ruby
|
|
187
|
+
request.mobile.valid_ip?
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
ただし [jpmobile-ipaddresses](http://github.com/jpmobile/jpmobile-ipaddresses)
|
|
191
|
+
がインストールされていないか、スマートフォンの場合は必ずfalseとなる。
|
|
192
|
+
|
|
193
|
+
### 端末の画面サイズ
|
|
194
|
+
request.mobile.display で Jpmobile::Display クラスのインスタンスが返る。
|
|
195
|
+
|
|
196
|
+
```ruby
|
|
197
|
+
画面幅 <%= request.mobile.display.width %>
|
|
198
|
+
画面高さ <%= request.mobile.display.height %>
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
ただし [jpmobile-terminfo](http://github.com/jpmobile/jpmobile-terminfo)
|
|
202
|
+
がインストールされていない場合はエラーとなるので注意が必要。
|
|
203
|
+
|
|
204
|
+
### 文字コード変換機能/絵文字のキャリア間相互変換
|
|
205
|
+
|
|
206
|
+
jpmobileを読み込むとDoCoMo、Au、SoftBankの絵文字を透過的に扱うことができる。
|
|
207
|
+
|
|
208
|
+
* Rails の場合は vendor/plugins に配置し、下記の設定を追加することで有効になる。
|
|
209
|
+
```ruby
|
|
210
|
+
# Rack middleware を追加するメソッド
|
|
211
|
+
Rails.application.config.jpmobile.mobile_filter
|
|
212
|
+
or
|
|
213
|
+
Jpmobile.config.mobile_filter
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
* 下記の設定を追加することで、<form> タグの accept-charset が変更される。
|
|
217
|
+
|
|
218
|
+
```ruby
|
|
219
|
+
# <form accept-charset="Shift_JIS" ...> などに変更する
|
|
220
|
+
Rails.application.config.jpmobile.form_accept_charset_conversion = true
|
|
221
|
+
or
|
|
222
|
+
Jpmobile.config.form_accept_charset_conversion = true
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
* Andriod/iPhone では Google 絵文字や Unicode 6.0
|
|
226
|
+
絵文字が使われています。下記の設定を追加すると、互換性をもたせるために3キャリアの絵文字に変換することができます。また表示の変換も可能です。
|
|
227
|
+
|
|
228
|
+
```ruby
|
|
229
|
+
Rails.application.config.jpmobile.smart_phone_emoticon_compatibility = true
|
|
230
|
+
or
|
|
231
|
+
Jpmobile.config.smart_phone_emoticon_compatibility = true
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
携帯電話上では特に問題とならない。PCブラウザでテストする際に問題となるためのオプション。
|
|
235
|
+
|
|
236
|
+
* Sinatra の場合は下記のように指定する。
|
|
237
|
+
```ruby
|
|
238
|
+
$LOAD_PATH << './lib/jpmobile/lib'
|
|
239
|
+
require 'jpmobile'
|
|
240
|
+
require 'jpmobile/rack'
|
|
241
|
+
|
|
242
|
+
use Jpmobile::Rack::MobileCarrier
|
|
243
|
+
use Jpmobile::Rack::ParamsFilter
|
|
244
|
+
use Jpmobile::Rack::Filter
|
|
245
|
+
|
|
246
|
+
get '/' do
|
|
247
|
+
erb :index
|
|
248
|
+
end
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
Rails のみ半角・全角の自動変換フィルターが用意されている。用いるには
|
|
252
|
+
```ruby
|
|
253
|
+
class MyController
|
|
254
|
+
hankaku_filter
|
|
255
|
+
end
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
と指定する。またtextareaやhidden/text/passwordのinputタグで半角に変換したくない場合は :input => true
|
|
259
|
+
を指定する。このときNokogiriが必要となるため、Gemfileに追記してインストールする必要がある。
|
|
260
|
+
```ruby
|
|
261
|
+
class MyController
|
|
262
|
+
hankaku_filter :input => true
|
|
263
|
+
end
|
|
264
|
+
```
|
|
265
|
+
|
|
266
|
+
Jpmobile内では、各キャリアの絵文字はUnicode私的領域上にマッピングされ、管理される。
|
|
267
|
+
このとき、DoCoMo、Auは公式サイト記載のマッピングが使用される。
|
|
268
|
+
ただしSoftBankはAuとの重複を避けるため、公式のマッピングに0x1000加算しU+F001以降に割り当てる。
|
|
269
|
+
テンプレート内ではUTF-8でエンコードするか、数値文字参照の&#xHHHH;形式で指定する。
|
|
270
|
+
|
|
271
|
+
絵文字は送出時に内蔵の変換表に基づいて変換され、携帯電話のエンコーディングにあわせて送出される。
|
|
272
|
+
携帯電話から受信した絵文字は上記マッピングに基づいてUTF-8でparamsに渡される。
|
|
273
|
+
|
|
274
|
+
* DoCoMo、Auとの通信時にはShift_JIS、SoftBankとの通信時にはUTF-8が使用される。
|
|
275
|
+
* :hankaku=>true指定時は、カタカナは半角カナに変換されて送出される。携帯電話から送られた半角カナは全角カナに変換される。
|
|
276
|
+
* 絵文字はキャリアにあわせて変換されて送出される。
|
|
277
|
+
* 携帯電話からの絵文字はUnicode私的領域にマップされ、UTF-8でparamsに格納される。
|
|
278
|
+
|
|
279
|
+
### ビューの自動振り分け
|
|
280
|
+
ビューの自動振り分けを行うには、以下の設定が必要です。
|
|
281
|
+
|
|
282
|
+
```ruby
|
|
283
|
+
class ApplicationController < ActionController::Base
|
|
284
|
+
include Jpmobile::ViewSelector
|
|
285
|
+
end
|
|
286
|
+
```
|
|
287
|
+
|
|
288
|
+
DoCoMo携帯電話からアクセスすると、
|
|
289
|
+
* index_mobile_docomo.html.erb
|
|
290
|
+
* index_mobile.html.erb
|
|
291
|
+
* index.html.erb
|
|
292
|
+
|
|
293
|
+
の順でテンプレートを検索し、最初に見付かったテンプレートが利用される。
|
|
294
|
+
Auの場合は、index_mobile_au.html.erb、Softbankの場合はindex_mobile_softbank.html.erbが最初に
|
|
295
|
+
検索される。
|
|
296
|
+
|
|
297
|
+
またiPhoneからアクセスすると、
|
|
298
|
+
* index_smart_phone_iphone.html.erb
|
|
299
|
+
* index_smart_phone.html.erb
|
|
300
|
+
* index.html.erb
|
|
301
|
+
|
|
302
|
+
の順でテンプレートを検索する。 Androidの場合はindex_smart_phone_android.html.erb、Windows
|
|
303
|
+
Phoneの場合はindex_smart_phone_windows_phone.html.erbが最初に検索される。
|
|
304
|
+
|
|
305
|
+
自動振り分けを無効化するには、アクションにおいて以下のように設定する
|
|
306
|
+
|
|
307
|
+
```ruby
|
|
308
|
+
def index
|
|
309
|
+
disable_mobile_view!
|
|
310
|
+
end
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
### 位置情報の取得用リンクの生成
|
|
314
|
+
|
|
315
|
+
以下のようなコードで、端末に位置情報を要求するリンクを出力する。
|
|
316
|
+
|
|
317
|
+
```ruby
|
|
318
|
+
<%= get_position_link_to("位置情報を取得する", :action=>:gps) %>
|
|
319
|
+
```ruby
|
|
320
|
+
|
|
321
|
+
### セッションIDの付与(Trans SID)
|
|
322
|
+
#### Cookie非対応携帯だけに付与する
|
|
323
|
+
|
|
324
|
+
```ruby
|
|
325
|
+
class MyController
|
|
326
|
+
trans_sid
|
|
327
|
+
end
|
|
328
|
+
```
|
|
329
|
+
|
|
330
|
+
#### PCにも付与する
|
|
331
|
+
|
|
332
|
+
```ruby
|
|
333
|
+
class MyController
|
|
334
|
+
trans_sid :always
|
|
335
|
+
end
|
|
336
|
+
```
|
|
337
|
+
|
|
338
|
+
trans_sid 機能を使う場合には、cookie session store を使用することができず、
|
|
339
|
+
active_record_storeのgemパッケージが必要です。 また Rails 5.0 では Cookie
|
|
340
|
+
が使える場合にはそちらが優先されてしまうため、:always を指定した場合に問題になる場合があります。 trans_sid を使用する際には、例えば
|
|
341
|
+
config/initializers/session_store.rb で
|
|
342
|
+
|
|
343
|
+
```ruby
|
|
344
|
+
Rails.application.config.session_store :active_record_store
|
|
345
|
+
Rails.application.config.session_options = {:cookie_only => false}
|
|
346
|
+
```
|
|
347
|
+
|
|
348
|
+
として active_record_store を使用するように設定し、:cookie_only => false として Cookie
|
|
349
|
+
を優先しないように設定します。 このとき ApplicationController において protect_from_forgery の :secret
|
|
350
|
+
を指定するか、 あるいは protect_from_forgery を解除する必要があるでしょう。
|
|
351
|
+
|
|
352
|
+
また、
|
|
353
|
+
|
|
354
|
+
```ruby
|
|
355
|
+
link_to "hoge", "/controller/action/id"
|
|
356
|
+
```ruby
|
|
357
|
+
|
|
358
|
+
のようにリンク先を直接指定するとセッションIDは付加されません。
|
|
359
|
+
|
|
360
|
+
```ruby
|
|
361
|
+
link_to "hoge", :controller => "controller", :action => "action", :id => "id"
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
のように指定する必要があります。
|
|
365
|
+
|
|
366
|
+
### メールの送受信
|
|
367
|
+
メールにて絵文字や漢字コードの変換、ビューの自動振り分けを行なうには Jpmobile::Mailer::Base を使う。
|
|
368
|
+
|
|
369
|
+
```ruby
|
|
370
|
+
class MobileMailer < Jpmobile::Mailer::Base
|
|
371
|
+
default :from => "info@jpmobile-rails.org"
|
|
372
|
+
|
|
373
|
+
def registration(to)
|
|
374
|
+
mail(:to => to)
|
|
375
|
+
end
|
|
376
|
+
|
|
377
|
+
def receive(email)
|
|
378
|
+
email
|
|
379
|
+
end
|
|
380
|
+
end
|
|
381
|
+
```
|
|
382
|
+
|
|
383
|
+
* デフォルトで ISO-2022-JP エンコードで送信
|
|
384
|
+
* docomo/SoftBank には Shift_JIS で送信
|
|
385
|
+
* au は ISO-2022-JP エンコードで送信
|
|
386
|
+
* ビューやレイアウトの自動振り分け
|
|
387
|
+
* docomo であれば
|
|
388
|
+
app/views/mobile_mailer/registration_mobile_docomo.html.erb など
|
|
389
|
+
|
|
390
|
+
* 受信に関しては、docomo/SoftBank でテストできていないため、実験版とします。
|
|
391
|
+
* テストして問題あれば随時報告してください。
|
|
392
|
+
|
|
393
|
+
* オプションに :decorated => true を追加すると、各キャリアのデコメに適したフォーマットで送信します。
|
|
394
|
+
* ただし docomo/SoftBank でテスト出来ていないため、実験版とします。
|
|
395
|
+
|
|
396
|
+
## jpmobileの開発方法
|
|
397
|
+
|
|
398
|
+
jpmobileの開発に関しては
|
|
399
|
+
[こちら](https://github.com/jpmobile/jpmobile/blob/master/CONTRIBUTING.md) へ
|
|
400
|
+
|
|
401
|
+
## リンク
|
|
402
|
+
|
|
403
|
+
* http://jpmobile-rails.org
|
|
404
|
+
|
|
405
|
+
## 作者
|
|
406
|
+
|
|
407
|
+
Copyright 2006-2012 (c) Yoji Shidara, under MIT License.
|
|
408
|
+
|
|
409
|
+
Shin-ichiro OGAWA <rust.stnard@gmail.com>, Yoji Shidara <dara@shidara.net>
|