jpmobile 0.0.7 → 0.0.8
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +6 -0
- data/{test/rails/rails_root/vendor/plugins/jpmobile/MIT-LICENSE → MIT-LICENSE} +0 -0
- data/README.rdoc +16 -6
- data/Rakefile +14 -0
- data/VERSION.yml +4 -0
- data/init.rb +3 -0
- data/install.rb +1 -0
- data/jpmobile.gemspec +299 -0
- data/lib/jpmobile.rb +0 -2
- data/lib/jpmobile/emoticon.rb +16 -2
- data/lib/jpmobile/emoticon/z_combine.rb +17 -4
- data/lib/jpmobile/filter.rb +2 -3
- data/lib/jpmobile/mobile/abstract_mobile.rb +6 -0
- data/lib/jpmobile/mobile/docomo.rb +24 -1
- data/lib/jpmobile/mobile/z_ip_addresses_au.rb +3 -2
- data/lib/jpmobile/mobile/z_ip_addresses_docomo.rb +4 -1
- data/lib/jpmobile/request_with_mobile.rb +4 -1
- data/{test/rails/rails_root/vendor/plugins/jpmobile/spec → spec}/spec.opts +0 -0
- data/spec/spec_helper.rb +36 -0
- data/spec/unit/detect_by_email_spec.rb +31 -0
- data/{test/rails/rails_root/vendor/plugins/jpmobile/spec → spec}/unit/detect_by_ua_spec.rb +11 -13
- data/spec/unit/is_carrier_spec.rb +93 -0
- data/spec/unit/spec_helper.rb +5 -0
- data/spec/unit/util_spec.rb +30 -0
- data/spec/unit/valid_ip_spec.rb +60 -0
- data/{test/rails/rails_root/vendor/plugins/jpmobile/tasks → tasks}/jpmobile_tasks.rake +3 -3
- data/test/legacy/autoload_test.rb +2 -1
- data/test/legacy/docomo_test.rb +39 -0
- data/test/legacy/emoticon_functional_test.rb +21 -19
- data/test/legacy/emoticon_test.rb +12 -12
- data/test/legacy/filter_test.rb +10 -8
- data/test/legacy/helper.rb +32 -3
- data/test/legacy/softbank_test.rb +2 -0
- data/test/rails/.gitignore +1 -0
- data/test/rails/overrides/app/controllers/filter_controller.rb +10 -0
- data/test/rails/overrides/spec/controllers/docomo_guid_spec.rb +2 -0
- data/test/rails/overrides/spec/controllers/docomo_spec.rb +2 -0
- data/test/rails/overrides/spec/controllers/emobile_spec.rb +2 -0
- data/test/rails/overrides/spec/controllers/filter_spec.rb +8 -7
- data/test/rails/overrides/spec/controllers/pc_spec.rb +2 -0
- data/test/rails/overrides/spec/controllers/softbank_emulator_spec.rb +2 -0
- data/test/rails/overrides/spec/controllers/template_path_spec.rb +2 -0
- data/test/rails/overrides/spec/controllers/trans_sid_spec.rb +1 -0
- data/test/rails/overrides/spec/helpers/helpers_spec.rb +2 -0
- data/test/rails/overrides/spec/spec_helper.rb +15 -0
- data/test/rails/rails_root/app/controllers/filter_controller.rb +0 -23
- data/test/rails/rails_root/app/controllers/mobile_spec_controller.rb +1 -1
- data/test/rails/rails_root/app/controllers/template_path_controller.rb +3 -0
- data/test/rails/rails_root/app/helpers/application_helper.rb +0 -1
- data/test/rails/rails_root/config/boot.rb +13 -110
- data/test/rails/rails_root/config/environment.rb +4 -41
- data/test/rails/rails_root/config/environments/development.rb +22 -13
- data/test/rails/rails_root/config/environments/production.rb +41 -20
- data/test/rails/rails_root/config/environments/test.rb +35 -28
- data/test/rails/rails_root/config/initializers/backtrace_silencers.rb +2 -2
- data/test/rails/rails_root/config/initializers/inflections.rb +1 -1
- data/test/rails/rails_root/config/initializers/session_store.rb +2 -15
- data/test/rails/rails_root/config/routes.rb +6 -42
- data/test/rails/rails_root/db/schema.rb +24 -7
- data/test/rails/rails_root/db/seeds.rb +2 -2
- data/test/rails/rails_root/spec/helpers/helpers_spec.rb +4 -2
- data/test/rails/rails_root/spec/spec_helper.rb +19 -35
- data/test/rails/rails_root/test/performance/browsing_test.rb +2 -2
- data/test/rails/rails_root/test/test_helper.rb +2 -27
- data/test/rails/rails_root/vendor/plugins/jpmobile/init.rb +1 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile.rb +39 -25
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/docomo_guid.rb +2 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/email.rb +3 -4
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon.rb +24 -8
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/conversion_table.rb +10 -9
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/emoticon/z_combine.rb +17 -4
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/filter.rb +43 -136
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/helpers.rb +5 -18
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_controller.rb +24 -16
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_action_view.rb +42 -85
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/abstract_mobile.rb +25 -2
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/au.rb +28 -3
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/display.rb +29 -26
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/docomo.rb +60 -11
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/softbank.rb +16 -41
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/willcom.rb +1 -10
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_au.rb +3 -2
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/mobile/z_ip_addresses_docomo.rb +4 -1
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/position.rb +4 -3
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/request_with_mobile.rb +14 -13
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/trans_sid.rb +52 -35
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/util.rb +68 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/spec/spec_helper.rb +3 -2
- data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/detect_by_email_spec.rb +21 -27
- data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/is_carrier_spec.rb +56 -84
- data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/spec_helper.rb +1 -2
- data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/util_spec.rb +8 -2
- data/test/rails/rails_root/vendor/plugins/jpmobile/spec/unit/valid_ip_spec.rb +43 -52
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/disabled_update_display_info_docomo.rb +0 -0
- data/test/rails/rails_root/vendor/plugins/jpmobile/tools/update_ip_addresses_au.rb +0 -0
- data/tools/emoji/genregexp.rb +47 -0
- metadata +348 -253
- data/test/rails/rails_root/README +0 -243
- data/test/rails/rails_root/Rakefile +0 -10
- data/test/rails/rails_root/app/controllers/docomo_guid_controller.rb +0 -13
- data/test/rails/rails_root/app/controllers/trans_sid_controller.rb +0 -28
- data/test/rails/rails_root/app/views/filter/index.html.erb +0 -0
- data/test/rails/rails_root/app/views/hankaku_filter/index.html.erb +0 -0
- data/test/rails/rails_root/app/views/template_path/_partial.html.erb +0 -1
- data/test/rails/rails_root/app/views/template_path/_partial_mobile.html.erb +0 -1
- data/test/rails/rails_root/app/views/template_path/_partial_mobile_docomo.html.erb +0 -1
- data/test/rails/rails_root/app/views/template_path/index.html.erb +0 -1
- data/test/rails/rails_root/app/views/template_path/index_mobile.html.erb +0 -1
- data/test/rails/rails_root/app/views/template_path/index_mobile_docomo.html.erb +0 -1
- data/test/rails/rails_root/app/views/template_path/partial.html.erb +0 -2
- data/test/rails/rails_root/config/database.yml +0 -22
- data/test/rails/rails_root/config/initializers/new_rails_defaults.rb +0 -21
- data/test/rails/rails_root/config/locales/en.yml +0 -5
- data/test/rails/rails_root/db/development.sqlite3 +0 -0
- data/test/rails/rails_root/db/test.sqlite3 +0 -0
- data/test/rails/rails_root/doc/README_FOR_APP +0 -2
- data/test/rails/rails_root/lib/tasks/rspec.rake +0 -165
- data/test/rails/rails_root/log/development.log +0 -38
- data/test/rails/rails_root/log/production.log +0 -0
- data/test/rails/rails_root/log/server.log +0 -0
- data/test/rails/rails_root/log/test.log +0 -451
- data/test/rails/rails_root/public/404.html +0 -30
- data/test/rails/rails_root/public/422.html +0 -30
- data/test/rails/rails_root/public/500.html +0 -30
- data/test/rails/rails_root/public/favicon.ico +0 -0
- data/test/rails/rails_root/public/images/rails.png +0 -0
- data/test/rails/rails_root/public/index.html +0 -275
- data/test/rails/rails_root/public/javascripts/application.js +0 -2
- data/test/rails/rails_root/public/javascripts/controls.js +0 -963
- data/test/rails/rails_root/public/javascripts/dragdrop.js +0 -973
- data/test/rails/rails_root/public/javascripts/effects.js +0 -1128
- data/test/rails/rails_root/public/javascripts/prototype.js +0 -4320
- data/test/rails/rails_root/public/robots.txt +0 -5
- data/test/rails/rails_root/script/about +0 -4
- data/test/rails/rails_root/script/console +0 -3
- data/test/rails/rails_root/script/dbconsole +0 -3
- data/test/rails/rails_root/script/destroy +0 -3
- data/test/rails/rails_root/script/generate +0 -3
- data/test/rails/rails_root/script/performance/benchmarker +0 -3
- data/test/rails/rails_root/script/performance/profiler +0 -3
- data/test/rails/rails_root/script/plugin +0 -3
- data/test/rails/rails_root/script/runner +0 -3
- data/test/rails/rails_root/script/server +0 -3
- data/test/rails/rails_root/spec/controllers/docomo_guid_spec.rb +0 -77
- data/test/rails/rails_root/spec/controllers/docomo_spec.rb +0 -28
- data/test/rails/rails_root/spec/controllers/emobile_spec.rb +0 -35
- data/test/rails/rails_root/spec/controllers/filter_spec.rb +0 -157
- data/test/rails/rails_root/spec/controllers/pc_spec.rb +0 -11
- data/test/rails/rails_root/spec/controllers/softbank_emulator_spec.rb +0 -40
- data/test/rails/rails_root/spec/controllers/template_path_spec.rb +0 -115
- data/test/rails/rails_root/spec/controllers/trans_sid_spec.rb +0 -99
- data/test/rails/rails_root/spec/rcov.opts +0 -2
- data/test/rails/rails_root/spec/rspec.rake +0 -165
- data/test/rails/rails_root/spec/spec.opts +0 -4
- data/test/rails/rails_root/vendor/plugins/jpmobile/CHANGELOG +0 -7
- data/test/rails/rails_root/vendor/plugins/jpmobile/README.rdoc +0 -239
- data/test/rails/rails_root/vendor/plugins/jpmobile/Rakefile +0 -116
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/hook_request.rb +0 -5
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/auth.rb +0 -55
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/combined_logger.rb +0 -54
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/request.rb +0 -7
- data/test/rails/rails_root/vendor/plugins/jpmobile/lib/jpmobile/rack/trans_sid.rb +0 -14
- 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,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,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
|