jpmobile 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (163) hide show
  1. data/.gitignore +6 -0
  2. data/{test/rails/rails_root/vendor/plugins/jpmobile/MIT-LICENSE → MIT-LICENSE} +0 -0
  3. data/README.rdoc +16 -6
  4. data/Rakefile +14 -0
  5. data/VERSION.yml +4 -0
  6. data/init.rb +3 -0
  7. data/install.rb +1 -0
  8. data/jpmobile.gemspec +299 -0
  9. data/lib/jpmobile.rb +0 -2
  10. data/lib/jpmobile/emoticon.rb +16 -2
  11. data/lib/jpmobile/emoticon/z_combine.rb +17 -4
  12. data/lib/jpmobile/filter.rb +2 -3
  13. data/lib/jpmobile/mobile/abstract_mobile.rb +6 -0
  14. data/lib/jpmobile/mobile/docomo.rb +24 -1
  15. data/lib/jpmobile/mobile/z_ip_addresses_au.rb +3 -2
  16. data/lib/jpmobile/mobile/z_ip_addresses_docomo.rb +4 -1
  17. data/lib/jpmobile/request_with_mobile.rb +4 -1
  18. data/{test/rails/rails_root/vendor/plugins/jpmobile/spec → spec}/spec.opts +0 -0
  19. data/spec/spec_helper.rb +36 -0
  20. data/spec/unit/detect_by_email_spec.rb +31 -0
  21. data/{test/rails/rails_root/vendor/plugins/jpmobile/spec → spec}/unit/detect_by_ua_spec.rb +11 -13
  22. data/spec/unit/is_carrier_spec.rb +93 -0
  23. data/spec/unit/spec_helper.rb +5 -0
  24. data/spec/unit/util_spec.rb +30 -0
  25. data/spec/unit/valid_ip_spec.rb +60 -0
  26. data/{test/rails/rails_root/vendor/plugins/jpmobile/tasks → tasks}/jpmobile_tasks.rake +3 -3
  27. data/test/legacy/autoload_test.rb +2 -1
  28. data/test/legacy/docomo_test.rb +39 -0
  29. data/test/legacy/emoticon_functional_test.rb +21 -19
  30. data/test/legacy/emoticon_test.rb +12 -12
  31. data/test/legacy/filter_test.rb +10 -8
  32. data/test/legacy/helper.rb +32 -3
  33. data/test/legacy/softbank_test.rb +2 -0
  34. data/test/rails/.gitignore +1 -0
  35. data/test/rails/overrides/app/controllers/filter_controller.rb +10 -0
  36. data/test/rails/overrides/spec/controllers/docomo_guid_spec.rb +2 -0
  37. data/test/rails/overrides/spec/controllers/docomo_spec.rb +2 -0
  38. data/test/rails/overrides/spec/controllers/emobile_spec.rb +2 -0
  39. data/test/rails/overrides/spec/controllers/filter_spec.rb +8 -7
  40. data/test/rails/overrides/spec/controllers/pc_spec.rb +2 -0
  41. data/test/rails/overrides/spec/controllers/softbank_emulator_spec.rb +2 -0
  42. data/test/rails/overrides/spec/controllers/template_path_spec.rb +2 -0
  43. data/test/rails/overrides/spec/controllers/trans_sid_spec.rb +1 -0
  44. data/test/rails/overrides/spec/helpers/helpers_spec.rb +2 -0
  45. data/test/rails/overrides/spec/spec_helper.rb +15 -0
  46. data/test/rails/rails_root/app/controllers/filter_controller.rb +0 -23
  47. data/test/rails/rails_root/app/controllers/mobile_spec_controller.rb +1 -1
  48. data/test/rails/rails_root/app/controllers/template_path_controller.rb +3 -0
  49. data/test/rails/rails_root/app/helpers/application_helper.rb +0 -1
  50. data/test/rails/rails_root/config/boot.rb +13 -110
  51. data/test/rails/rails_root/config/environment.rb +4 -41
  52. data/test/rails/rails_root/config/environments/development.rb +22 -13
  53. data/test/rails/rails_root/config/environments/production.rb +41 -20
  54. data/test/rails/rails_root/config/environments/test.rb +35 -28
  55. data/test/rails/rails_root/config/initializers/backtrace_silencers.rb +2 -2
  56. data/test/rails/rails_root/config/initializers/inflections.rb +1 -1
  57. data/test/rails/rails_root/config/initializers/session_store.rb +2 -15
  58. data/test/rails/rails_root/config/routes.rb +6 -42
  59. data/test/rails/rails_root/db/schema.rb +24 -7
  60. data/test/rails/rails_root/db/seeds.rb +2 -2
  61. data/test/rails/rails_root/spec/helpers/helpers_spec.rb +4 -2
  62. data/test/rails/rails_root/spec/spec_helper.rb +19 -35
  63. data/test/rails/rails_root/test/performance/browsing_test.rb +2 -2
  64. data/test/rails/rails_root/test/test_helper.rb +2 -27
  65. data/test/rails/rails_root/vendor/plugins/jpmobile/init.rb +1 -1
  66. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile.rb +39 -25
  67. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/docomo_guid.rb +2 -1
  68. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/email.rb +3 -4
  69. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon.rb +24 -8
  70. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/conversion_table.rb +10 -9
  71. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/z_combine.rb +17 -4
  72. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/filter.rb +43 -136
  73. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/helpers.rb +5 -18
  74. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_controller.rb +24 -16
  75. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_view.rb +42 -85
  76. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/abstract_mobile.rb +25 -2
  77. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/au.rb +28 -3
  78. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/display.rb +29 -26
  79. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/docomo.rb +60 -11
  80. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/softbank.rb +16 -41
  81. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/willcom.rb +1 -10
  82. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_au.rb +3 -2
  83. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_docomo.rb +4 -1
  84. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/position.rb +4 -3
  85. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/request_with_mobile.rb +14 -13
  86. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/trans_sid.rb +52 -35
  87. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/util.rb +68 -0
  88. data/test/rails/rails_root/vendor/plugins/jpmobile/spec/spec_helper.rb +3 -2
  89. data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/detect_by_email_spec.rb +21 -27
  90. data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/is_carrier_spec.rb +56 -84
  91. data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/spec_helper.rb +1 -2
  92. data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/util_spec.rb +8 -2
  93. data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/valid_ip_spec.rb +43 -52
  94. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/disabled_update_display_info_docomo.rb +0 -0
  95. data/test/rails/rails_root/vendor/plugins/jpmobile/tools/update_ip_addresses_au.rb +0 -0
  96. data/tools/emoji/genregexp.rb +47 -0
  97. metadata +348 -253
  98. data/test/rails/rails_root/README +0 -243
  99. data/test/rails/rails_root/Rakefile +0 -10
  100. data/test/rails/rails_root/app/controllers/docomo_guid_controller.rb +0 -13
  101. data/test/rails/rails_root/app/controllers/trans_sid_controller.rb +0 -28
  102. data/test/rails/rails_root/app/views/filter/index.html.erb +0 -0
  103. data/test/rails/rails_root/app/views/hankaku_filter/index.html.erb +0 -0
  104. data/test/rails/rails_root/app/views/template_path/_partial.html.erb +0 -1
  105. data/test/rails/rails_root/app/views/template_path/_partial_mobile.html.erb +0 -1
  106. data/test/rails/rails_root/app/views/template_path/_partial_mobile_docomo.html.erb +0 -1
  107. data/test/rails/rails_root/app/views/template_path/index.html.erb +0 -1
  108. data/test/rails/rails_root/app/views/template_path/index_mobile.html.erb +0 -1
  109. data/test/rails/rails_root/app/views/template_path/index_mobile_docomo.html.erb +0 -1
  110. data/test/rails/rails_root/app/views/template_path/partial.html.erb +0 -2
  111. data/test/rails/rails_root/config/database.yml +0 -22
  112. data/test/rails/rails_root/config/initializers/new_rails_defaults.rb +0 -21
  113. data/test/rails/rails_root/config/locales/en.yml +0 -5
  114. data/test/rails/rails_root/db/development.sqlite3 +0 -0
  115. data/test/rails/rails_root/db/test.sqlite3 +0 -0
  116. data/test/rails/rails_root/doc/README_FOR_APP +0 -2
  117. data/test/rails/rails_root/lib/tasks/rspec.rake +0 -165
  118. data/test/rails/rails_root/log/development.log +0 -38
  119. data/test/rails/rails_root/log/production.log +0 -0
  120. data/test/rails/rails_root/log/server.log +0 -0
  121. data/test/rails/rails_root/log/test.log +0 -451
  122. data/test/rails/rails_root/public/404.html +0 -30
  123. data/test/rails/rails_root/public/422.html +0 -30
  124. data/test/rails/rails_root/public/500.html +0 -30
  125. data/test/rails/rails_root/public/favicon.ico +0 -0
  126. data/test/rails/rails_root/public/images/rails.png +0 -0
  127. data/test/rails/rails_root/public/index.html +0 -275
  128. data/test/rails/rails_root/public/javascripts/application.js +0 -2
  129. data/test/rails/rails_root/public/javascripts/controls.js +0 -963
  130. data/test/rails/rails_root/public/javascripts/dragdrop.js +0 -973
  131. data/test/rails/rails_root/public/javascripts/effects.js +0 -1128
  132. data/test/rails/rails_root/public/javascripts/prototype.js +0 -4320
  133. data/test/rails/rails_root/public/robots.txt +0 -5
  134. data/test/rails/rails_root/script/about +0 -4
  135. data/test/rails/rails_root/script/console +0 -3
  136. data/test/rails/rails_root/script/dbconsole +0 -3
  137. data/test/rails/rails_root/script/destroy +0 -3
  138. data/test/rails/rails_root/script/generate +0 -3
  139. data/test/rails/rails_root/script/performance/benchmarker +0 -3
  140. data/test/rails/rails_root/script/performance/profiler +0 -3
  141. data/test/rails/rails_root/script/plugin +0 -3
  142. data/test/rails/rails_root/script/runner +0 -3
  143. data/test/rails/rails_root/script/server +0 -3
  144. data/test/rails/rails_root/spec/controllers/docomo_guid_spec.rb +0 -77
  145. data/test/rails/rails_root/spec/controllers/docomo_spec.rb +0 -28
  146. data/test/rails/rails_root/spec/controllers/emobile_spec.rb +0 -35
  147. data/test/rails/rails_root/spec/controllers/filter_spec.rb +0 -157
  148. data/test/rails/rails_root/spec/controllers/pc_spec.rb +0 -11
  149. data/test/rails/rails_root/spec/controllers/softbank_emulator_spec.rb +0 -40
  150. data/test/rails/rails_root/spec/controllers/template_path_spec.rb +0 -115
  151. data/test/rails/rails_root/spec/controllers/trans_sid_spec.rb +0 -99
  152. data/test/rails/rails_root/spec/rcov.opts +0 -2
  153. data/test/rails/rails_root/spec/rspec.rake +0 -165
  154. data/test/rails/rails_root/spec/spec.opts +0 -4
  155. data/test/rails/rails_root/vendor/plugins/jpmobile/CHANGELOG +0 -7
  156. data/test/rails/rails_root/vendor/plugins/jpmobile/README.rdoc +0 -239
  157. data/test/rails/rails_root/vendor/plugins/jpmobile/Rakefile +0 -116
  158. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_request.rb +0 -5
  159. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/auth.rb +0 -55
  160. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/combined_logger.rb +0 -54
  161. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/request.rb +0 -7
  162. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/trans_sid.rb +0 -14
  163. data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/version.rb +0 -9
@@ -1,99 +0,0 @@
1
- # -*- coding: utf-8 -*-
2
- require File.dirname(__FILE__) + '/../spec_helper'
3
-
4
- describe "trans_sid が起動しないとき", :shared => true do
5
- it "で link_to の自動書き換えが行われない" do
6
- get :link
7
- response.body.should =~ %r{^<a href="/.+?/link">linkto</a>$}
8
- end
9
- it "で form の自動書き換えが行われない" do
10
- get :form
11
- response.body.should =~ %r{^<form action="/.+?/form" method="post">Hello</form>$}
12
- end
13
- it "で redirect の自動書き換えが行われない" do
14
- get :redirect
15
- response.should redirect_to('/')
16
- end
17
- end
18
-
19
- describe "trans_sid が起動するとき", :shared => true do
20
- before :each do
21
- request.session_options[:id] = "mysessionid"
22
- end
23
- it "で link_to の自動書き換えが行われる" do
24
- get :link
25
- response.body.should =~ %r{^<a href="/.+?/link\?_session_id=mysessionid">linkto</a>$}
26
- end
27
- it "で form の自動書き換えが行われる" do
28
- get :form
29
- response.body.should =~ %r{^<form action="/.+?/form\?_session_id=mysessionid" method="post">Hello<input type="hidden" name="_session_id" value="mysessionid" /></form>$}
30
- end
31
- it "で redirect の自動書き換えが行われる" do
32
- get :redirect
33
- response.should redirect_to('/?_session_id=mysessionid')
34
- end
35
- end
36
-
37
- describe TransSidBaseController, "という trans_sid が有効になっていないコントローラ" do
38
- controller_name :trans_sid_base
39
- it "の trans_sid_mode は nil" do
40
- controller.trans_sid_mode.should be_nil
41
- end
42
- it_should_behave_like "trans_sid が起動しないとき"
43
- end
44
-
45
- describe TransSidNoneController, "という trans_sid :none が指定されているコントローラ" do
46
- controller_name :trans_sid_none
47
- it "の trans_sid_mode は :none" do
48
- controller.trans_sid_mode.should == :none
49
- end
50
- it_should_behave_like "trans_sid が起動しないとき"
51
- end
52
-
53
- describe TransSidAlwaysController, "という trans_sid :always が指定されているコントローラ" do
54
- controller_name :trans_sid_always
55
- before :each do
56
- request.session_options[:id] = "mysessionid"
57
- end
58
- it "の trans_sid_mode は :always" do
59
- controller.trans_sid_mode.should == :always
60
- end
61
- it_should_behave_like "trans_sid が起動するとき"
62
- end
63
-
64
- describe TransSidMobileController, "という trans_sid :mobile が指定されているコントローラ" do
65
- controller_name :trans_sid_mobile
66
- it "の trans_sid_mode は :mobile" do
67
- controller.trans_sid_mode.should == :mobile
68
- end
69
- end
70
-
71
- def describe_mobile_with_ua(user_agent, &block)
72
- describe("trans_sid :mobile が指定されているコントローラに #{user_agent} からアクセスしたとき") do
73
- controller_name :trans_sid_mobile
74
- before do
75
- request.user_agent = user_agent
76
- end
77
- instance_eval(&block)
78
- end
79
- end
80
-
81
- describe_mobile_with_ua "DoCoMo/2.0 SH902i(c100;TB;W24H12)" do
82
- it_should_behave_like "trans_sid が起動するとき"
83
- end
84
-
85
- describe_mobile_with_ua "J-PHONE/3.0/V301D" do
86
- it_should_behave_like "trans_sid が起動するとき"
87
- end
88
-
89
- describe_mobile_with_ua "KDDI-CA32 UP.Browser/6.2.0.7.3.129 (GUI) MMP/2.0" do
90
- it_should_behave_like "trans_sid が起動しないとき"
91
- end
92
-
93
- describe_mobile_with_ua "SoftBank/1.0/910T/TJ001/SN000000000000000 Browser/NetFront/3.3 Profile/MIDP-2.0 Configuration/CLDC-1.1" do
94
- it_should_behave_like "trans_sid が起動しないとき"
95
- end
96
-
97
- describe_mobile_with_ua "Vodafone/1.0/V903T/TJ001 Browser/VF-Browser/1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 Ext-J-Profile/JSCL-1.2.2 Ext-V-Profile/VSCL-2.0.0" do
98
- it_should_behave_like "trans_sid が起動しないとき"
99
- end
@@ -1,2 +0,0 @@
1
- --exclude "spec/*,gems/*"
2
- --rails
@@ -1,165 +0,0 @@
1
- gem 'test-unit', '1.2.3' if RUBY_VERSION.to_f >= 1.9
2
-
3
- # Don't load rspec if running "rake gems:*"
4
- unless ARGV.any? {|a| a =~ /^gems/}
5
-
6
- begin
7
- require 'spec/rake/spectask'
8
- rescue MissingSourceFile
9
- module Spec
10
- module Rake
11
- class SpecTask
12
- def initialize(name)
13
- task name do
14
- # if rspec-rails is a configured gem, this will output helpful material and exit ...
15
- require File.expand_path(File.dirname(__FILE__) + "/../../config/environment")
16
-
17
- # ... otherwise, do this:
18
- raise <<-MSG
19
-
20
- #{"*" * 80}
21
- * You are trying to run an rspec rake task defined in
22
- * #{__FILE__},
23
- * but rspec can not be found in vendor/gems, vendor/plugins or system gems.
24
- #{"*" * 80}
25
- MSG
26
- end
27
- end
28
- end
29
- end
30
- end
31
- end
32
-
33
- Rake.application.instance_variable_get('@tasks').delete('default')
34
-
35
- spec_prereq = File.exist?(File.join(RAILS_ROOT, 'config', 'database.yml')) ? "db:test:prepare" : :noop
36
- task :noop do
37
- end
38
-
39
- task :default => :spec
40
- task :stats => "spec:statsetup"
41
-
42
- desc "Run all specs in spec directory (excluding plugin specs)"
43
- Spec::Rake::SpecTask.new(:spec => spec_prereq) do |t|
44
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
45
- t.spec_files = FileList['spec/**/*/*_spec.rb']
46
- end
47
-
48
- namespace :spec do
49
- desc "Run all specs in spec directory with RCov (excluding plugin specs)"
50
- Spec::Rake::SpecTask.new(:rcov) do |t|
51
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
52
- t.spec_files = FileList['spec/**/*/*_spec.rb']
53
- t.rcov = true
54
- t.rcov_opts = lambda do
55
- IO.readlines("#{RAILS_ROOT}/spec/rcov.opts").map {|l| l.chomp.split " "}.flatten
56
- end
57
- end
58
-
59
- desc "Print Specdoc for all specs (excluding plugin specs)"
60
- Spec::Rake::SpecTask.new(:doc) do |t|
61
- t.spec_opts = ["--format", "specdoc", "--dry-run"]
62
- t.spec_files = FileList['spec/**/*/*_spec.rb']
63
- end
64
-
65
- desc "Print Specdoc for all plugin examples"
66
- Spec::Rake::SpecTask.new(:plugin_doc) do |t|
67
- t.spec_opts = ["--format", "specdoc", "--dry-run"]
68
- t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*')
69
- end
70
-
71
- [:models, :controllers, :views, :helpers, :lib].each do |sub|
72
- desc "Run the code examples in spec/#{sub}"
73
- Spec::Rake::SpecTask.new(sub => spec_prereq) do |t|
74
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
75
- t.spec_files = FileList["spec/#{sub}/**/*_spec.rb"]
76
- end
77
- end
78
-
79
- desc "Run the code examples in vendor/plugins (except RSpec's own)"
80
- Spec::Rake::SpecTask.new(:plugins => spec_prereq) do |t|
81
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
82
- t.spec_files = FileList['vendor/plugins/**/spec/**/*/*_spec.rb'].exclude('vendor/plugins/rspec/*').exclude("vendor/plugins/rspec-rails/*")
83
- end
84
-
85
- namespace :plugins do
86
- desc "Runs the examples for rspec_on_rails"
87
- Spec::Rake::SpecTask.new(:rspec_on_rails) do |t|
88
- t.spec_opts = ['--options', "\"#{RAILS_ROOT}/spec/spec.opts\""]
89
- t.spec_files = FileList['vendor/plugins/rspec-rails/spec/**/*/*_spec.rb']
90
- end
91
- end
92
-
93
- # Setup specs for stats
94
- task :statsetup do
95
- require 'code_statistics'
96
- ::STATS_DIRECTORIES << %w(Model\ specs spec/models) if File.exist?('spec/models')
97
- ::STATS_DIRECTORIES << %w(View\ specs spec/views) if File.exist?('spec/views')
98
- ::STATS_DIRECTORIES << %w(Controller\ specs spec/controllers) if File.exist?('spec/controllers')
99
- ::STATS_DIRECTORIES << %w(Helper\ specs spec/helpers) if File.exist?('spec/helpers')
100
- ::STATS_DIRECTORIES << %w(Library\ specs spec/lib) if File.exist?('spec/lib')
101
- ::STATS_DIRECTORIES << %w(Routing\ specs spec/lib) if File.exist?('spec/routing')
102
- ::CodeStatistics::TEST_TYPES << "Model specs" if File.exist?('spec/models')
103
- ::CodeStatistics::TEST_TYPES << "View specs" if File.exist?('spec/views')
104
- ::CodeStatistics::TEST_TYPES << "Controller specs" if File.exist?('spec/controllers')
105
- ::CodeStatistics::TEST_TYPES << "Helper specs" if File.exist?('spec/helpers')
106
- ::CodeStatistics::TEST_TYPES << "Library specs" if File.exist?('spec/lib')
107
- ::CodeStatistics::TEST_TYPES << "Routing specs" if File.exist?('spec/routing')
108
- end
109
-
110
- namespace :db do
111
- namespace :fixtures do
112
- desc "Load fixtures (from spec/fixtures) into the current environment's database. Load specific fixtures using FIXTURES=x,y. Load from subdirectory in test/fixtures using FIXTURES_DIR=z."
113
- task :load => :environment do
114
- ActiveRecord::Base.establish_connection(Rails.env)
115
- base_dir = File.join(Rails.root, 'spec', 'fixtures')
116
- fixtures_dir = ENV['FIXTURES_DIR'] ? File.join(base_dir, ENV['FIXTURES_DIR']) : base_dir
117
-
118
- require 'active_record/fixtures'
119
- (ENV['FIXTURES'] ? ENV['FIXTURES'].split(/,/).map {|f| File.join(fixtures_dir, f) } : Dir.glob(File.join(fixtures_dir, '*.{yml,csv}'))).each do |fixture_file|
120
- Fixtures.create_fixtures(File.dirname(fixture_file), File.basename(fixture_file, '.*'))
121
- end
122
- end
123
- end
124
- end
125
-
126
- namespace :server do
127
- daemonized_server_pid = File.expand_path("#{RAILS_ROOT}/tmp/pids/spec_server.pid")
128
-
129
- desc "start spec_server."
130
- task :start do
131
- if File.exist?(daemonized_server_pid)
132
- $stderr.puts "spec_server is already running."
133
- else
134
- $stderr.puts %Q{Starting up spec_server ...}
135
- FileUtils.mkdir_p('tmp/pids') unless test ?d, 'tmp/pids'
136
- system("ruby", "script/spec_server", "--daemon", "--pid", daemonized_server_pid)
137
- end
138
- end
139
-
140
- desc "stop spec_server."
141
- task :stop do
142
- unless File.exist?(daemonized_server_pid)
143
- $stderr.puts "No server running."
144
- else
145
- $stderr.puts "Shutting down spec_server ..."
146
- system("kill", "-s", "TERM", File.read(daemonized_server_pid).strip) &&
147
- File.delete(daemonized_server_pid)
148
- end
149
- end
150
-
151
- desc "restart spec_server."
152
- task :restart => [:stop, :start]
153
-
154
- desc "check if spec server is running"
155
- task :status do
156
- if File.exist?(daemonized_server_pid)
157
- $stderr.puts %Q{spec_server is running (PID: #{File.read(daemonized_server_pid).gsub("\n","")})}
158
- else
159
- $stderr.puts "No server running."
160
- end
161
- end
162
- end
163
- end
164
-
165
- end
@@ -1,4 +0,0 @@
1
- --colour
2
- --format progress
3
- --loadby mtime
4
- --reverse
@@ -1,7 +0,0 @@
1
- == 0.0.3x 2008-09-26
2
-
3
- * メールアドレスからキャリアを判定する機能追加
4
-
5
- == 0.0.1 2007-06-16
6
-
7
- * Initial release
@@ -1,239 +0,0 @@
1
- = jpmobile: A Rails plugin for Japanese mobile-phones
2
-
3
- == jpmobileとは
4
- 携帯電話特有の機能を Rails で利用するためのプラグイン。
5
- 以下の機能を備える。
6
-
7
- * 携帯電話のキャリア判別
8
- * 端末位置情報の取得
9
- * 端末製造番号、契約者番号等の取得
10
- * IPアドレスの検証(キャリアが公開しているIPアドレス帯域からのアクセスか判定)
11
- * セッションIDをフォーム/リンクに付与(Trans SID)
12
- * 携帯電話ビューへの自動振分け
13
- * ディスプレイ情報(画面サイズ、ブラウザ画面サイズ、カラー・白黒、色数)の取得
14
- * GeoKit(http://geokit.rubyforge.org)との連携
15
- * 文字コード変換機能/絵文字のキャリア間相互変換
16
-
17
- == インストール
18
- Rails の Version に応じて選択してください。
19
- === Rails 2.3.3, 2.3.4, 2.3.5
20
- 開発版:
21
- % ./script/plugin install git://github.com/darashi/jpmobile.git
22
-
23
- === Rails 2.3.2
24
- ==== pluginとしてインストールする場合
25
-
26
- リリース版: (Version 0.0.6)
27
- % git clone git://github.com/darashi/jpmobile.git vendor/plugins/jpmobile
28
- % cd vendor/plugins/jpmobile
29
- % git checkout 0.0.6
30
- % rm -rf .git
31
-
32
- 開発版:
33
- % ./script/plugin install git://github.com/darashi/jpmobile.git
34
-
35
- ==== gemでインストールする場合
36
-
37
- # gem install jpmobile
38
- としてgemをインストールした後
39
-
40
- RAILS_ROOT/config/environment.rb の Rails::Initializer.run do |config| 〜 end 内に
41
- config.gem "jpmobile"
42
- の行を追加する。
43
-
44
- === Rails 2.2.x 以前
45
- リリース版:
46
- % git clone git://github.com/darashi/jpmobile.git vendor/plugins/jpmobile
47
- % cd vendor/plugins/jpmobile
48
- % git checkout 0.0.5
49
- % rm -rf .git
50
-
51
- == 使用例
52
-
53
- === 携帯電話の識別
54
-
55
- ==== Viewの中で一部を切替える例
56
- <% if request.mobile? %>
57
- 携帯電話からのアクセスです。
58
- <% else %>
59
- 携帯電話からのアクセスではありません。
60
- <% end %>
61
-
62
- ==== 別に用意した携帯電話用コントローラへリダイレクトする例
63
- class PcController < ApplicationController
64
- before_filter :redirect_if_mobile
65
-
66
- def index
67
- end
68
-
69
- private
70
- def redirect_if_mobile
71
- if request.mobile?
72
- pa = params.dup
73
- pa[:controller] = "/mobile"
74
- redirect_to pa
75
- end
76
- end
77
- end
78
-
79
- class MobileController < ApplicationController
80
- mobile_filter
81
- end
82
-
83
-
84
- === 携帯電話viewの自動振分け
85
- DoCoMo携帯電話からアクセスすると、
86
- * index_mobile_docomo.html.erb
87
- * index_mobile.html.erb
88
- * index.html.erb
89
- の順でテンプレートを検索し、最初に見付かったテンプレートが利用される。
90
- Auの場合は、index_mobile_au.html.erb、Softbankの場合はindex_mobile_softbank.html.erbが最初に検索される。
91
-
92
- BUG: 現状、上記の例では index.html.erb が存在しない場合に振り分けが行われない(ダミーファイルを置くことで回避可能)。
93
-
94
- ==== キャリアの識別
95
-
96
- case request.mobile
97
- when Jpmobile::Mobile::Docomo
98
- # for DoCoMo
99
- when Jpmobile::Mobile::Au
100
- # for au
101
- when Jpmobile::Mobile::Softbank
102
- # for SoftBank
103
- when Jpmobile::Mobile::Willcom
104
- # for Willcom
105
- when Jpmobile::Mobile::Emobile
106
- # for EMOBILE
107
- else
108
- # for PC
109
- end
110
-
111
- あるいは
112
- if request.mobile.is_a?(Jpmobile::Mobile::Docomo)
113
- # for DoCoMo
114
- end
115
-
116
- === 位置情報の取得
117
-
118
- ==== 取得用リンクの生成
119
-
120
- 以下のようなコードで、端末に位置情報を要求するリンクを出力する。
121
- <%= get_position_link_to(:action=>:gps) %>
122
-
123
- ==== 位置情報の取得
124
-
125
- class MobileController < ApplicationController
126
- def gps
127
- if request.mobile && pos = request.mobile.position
128
- @latitude = pos.lat
129
- @longuitude = pos.lon
130
- end
131
- end
132
- end
133
-
134
-
135
- === 端末情報の取得
136
-
137
- 端末側から通知されている場合、request.mobile.ident で
138
- 契約に固有の識別子もしくは端末の製造番号を取得できる。
139
- 両方存在する場合は契約に固有のIDが優先される。
140
-
141
- * 契約に固有のID (request.mobile.ident_subscriber)
142
- * au: EZ番号(サブスクライバ番号)
143
- * DoCoMo: FOMAカード製造番号
144
- * EMOBILE: EMnet対応端末から通知されるユニークなユーザID
145
- * 端末製造番号 (request.mobile.ident_device)
146
- * DoCoMo: 端末製造番号(FOMA, MOVA)
147
- * SoftBank: 製造番号
148
-
149
- === IPの検証
150
- キャリアが公開しているIPアドレス帯域からのアクセスか判定する。
151
- request.mobile.valid_ip?
152
-
153
- === セッションIDの付与(Trans SID)
154
- ==== Cookie非対応携帯だけに付与する
155
- class MyController
156
- trans_sid
157
- end
158
-
159
- ==== PCにも付与する
160
- class MyController
161
- trans_sid :always
162
- end
163
-
164
- trans_sid 機能を使う場合には cookie session store を使用することができません。
165
- trans_sid を使用する際には、例えば config/initializers/session_store.rb で
166
- ActionController::Base.session_store = :active_record_store
167
- として active_record_store を使用します。
168
- このとき ApplicationController において protect_from_forgery の :secret を指定するか、
169
- あるいは protect_from_forgery を解除する必要があるでしょう。
170
-
171
- また、
172
- link_to "hoge", "/controller/action/id"
173
- のようにリンク先を直接指定するとセッションIDは付加されません。
174
- link_to "hoge", :controller => "controller", :action => "action", :id => "id"
175
- のように指定する必要があります。
176
-
177
-
178
- === 端末の画面サイズ
179
- request.mobile.display で Jpmobile::Display クラスのインスタンスが返る。
180
- 画面幅 <%= request.mobile.display.width %>
181
- 画面高さ <%= request.mobile.display.height %>
182
-
183
- === GeoKit(http://geokit.rubyforge.org)との連携
184
-
185
- vandor/plugins/geokit以下にGeoKitがインストールされていると、Jpmobile::PositionにGeoKit::Mappableがincludeされる。したがって、
186
-
187
- request.mobile.position.distance_to('札幌駅')
188
-
189
- とすることで、端末と「札幌駅」との距離を求めることができる。詳細は http://geokit.rubyforge.org/api/index.html 参照。
190
-
191
- === 文字コード変換機能/絵文字のキャリア間相互変換
192
-
193
- JpmobileではControllerにmobile_filterを指定することで
194
- DoCoMo、Au、SoftBankの絵文字を透過的に扱うことができる。
195
-
196
- class MyController
197
- mobile_filter
198
- end
199
-
200
- また、半角・全角の自動変換を用いる場合は
201
- class MyController
202
- mobile_filter :hankaku=>true
203
- end
204
- と指定する。
205
-
206
- Jpmobile内では、各キャリアの絵文字はUnicode私的領域上にマッピングされ、管理される。
207
- このとき、DoCoMo、Auは公式サイト記載のマッピングが使用される。
208
- ただしSoftBankはAuとの重複を避けるため、公式のマッピングに0x1000加算しU+F001以降に割り当てる。
209
- テンプレート内ではUTF-8でエンコードするか、数値文字参照の&#xHHHH;形式で指定する。
210
-
211
- 絵文字は送出時に内蔵の変換表に基づいて変換され、携帯電話のエンコーディングにあわせて送出される。
212
- 携帯電話から受信した絵文字は上記マッピングに基づいてUTF-8でparamsに渡される。
213
-
214
- mobile_filterを有効にすると以下の処理が自動で行われる。
215
- * DoCoMo、Auとの通信時にはShift_JIS、SoftBankとの通信時にはUTF-8が使用される。
216
- * :hankaku=>true指定時は、カタカナは半角カナに変換されて送出される。携帯電話から送られた半角カナは全角カナに変換される。
217
- * 絵文字はキャリアにあわせて変換されて送出される。
218
- * 携帯電話からの絵文字はUnicode私的領域にマップされ、UTF-8でparamsに格納される。
219
-
220
- == テストに必要なgemパッケージ
221
- テストを実行するためには以下のgemパッケージが必要です。
222
- * rails
223
- * rack
224
- * hpricot
225
- * rspec
226
- * rspec-rails
227
- * spec-fixtures
228
-
229
- == リンク
230
-
231
- * http://jpmobile-rails.org
232
-
233
- == 作者
234
-
235
- Copyright 2006 (c) Yoji Shidara, under MIT License.
236
-
237
- Yoji Shidara <dara@shidara.net>
238
-
239
- http://d.hatena.ne.jp/darashi