browser 0.3.2 → 0.4.0
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 +1 -0
- data/.travis.yml +1 -1
- data/README.md +2 -0
- data/bots.yml +128 -0
- data/browser.gemspec +4 -1
- data/lib/browser.rb +4 -1
- data/lib/browser/methods/bots.rb +1 -66
- data/lib/browser/methods/consoles.rb +5 -0
- data/lib/browser/methods/devices.rb +4 -5
- data/lib/browser/methods/mobile.rb +1 -1
- data/lib/browser/methods/platform.rb +39 -4
- data/lib/browser/methods/tv.rb +8 -0
- data/lib/browser/version.rb +2 -2
- data/test/browser_test.rb +108 -0
- data/test/test_helper.rb +5 -0
- metadata +58 -17
- data/Gemfile.lock +0 -106
- data/gemfiles/rails3.gemfile.lock +0 -111
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d33f512a1af14cd694c0268b45aa9b197f5011fd
|
|
4
|
+
data.tar.gz: 73de6e2670165e5b7de2b1966ad67a7863afe55a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 69b2e09e88e616b7942e63285d704459002d39264f604ae46397ac8b198c5fcd2fe18663730076709b406b55986b13d7e041913bc584c0e5f132db59df3abf6a
|
|
7
|
+
data.tar.gz: 45c8ae00d05cc760f415e56a68ab7689a1f3d62f292f72ad5316f931769c56bca9b6a8ec10b09dec68cfe17c8b9bbcb31a364e11fd216ba3a01817ed6df9085a
|
data/.gitignore
CHANGED
data/.travis.yml
CHANGED
data/README.md
CHANGED
|
@@ -23,6 +23,7 @@ browser.version
|
|
|
23
23
|
browser.safari?
|
|
24
24
|
browser.opera?
|
|
25
25
|
browser.chrome?
|
|
26
|
+
browser.chrome_os?
|
|
26
27
|
browser.mobile?
|
|
27
28
|
browser.tablet?
|
|
28
29
|
browser.console?
|
|
@@ -33,6 +34,7 @@ browser.modern? # Webkit, Firefox 17+, IE 9+ and Opera 12+
|
|
|
33
34
|
browser.platform # return :mac, :windows, :linux or :other
|
|
34
35
|
browser.mac?
|
|
35
36
|
browser.windows?
|
|
37
|
+
browser.windows_x64?
|
|
36
38
|
browser.linux?
|
|
37
39
|
browser.blackberry?
|
|
38
40
|
browser.bot?
|
data/bots.yml
ADDED
|
@@ -0,0 +1,128 @@
|
|
|
1
|
+
AdsBot-Google: "Google Adwords"
|
|
2
|
+
AhrefsBot: "Ahrefs backlinks research tool"
|
|
3
|
+
alexa: "Alexa Crawler"
|
|
4
|
+
Apache-HttpClient: "Java http library"
|
|
5
|
+
ApacheBench: "ApacheBench (ab)"
|
|
6
|
+
AppEngine-Google: "Google App Engine"
|
|
7
|
+
AsyncHttpClient: "Java http and WebSocket client library"
|
|
8
|
+
awe.sm: "Awe.sm URL expander"
|
|
9
|
+
Baidu: "Chinese search engine"
|
|
10
|
+
Baiduspider: "Chinese search engine"
|
|
11
|
+
bingbot: "Microsoft bing bot"
|
|
12
|
+
bitlybot: "bit.ly bot"
|
|
13
|
+
bot@linkfluence.net: "Linkfluence bot"
|
|
14
|
+
Butterfly: "Topsy Labs"
|
|
15
|
+
buzztalk: "buzztalk"
|
|
16
|
+
check_http: "Nagios monitor"
|
|
17
|
+
CMRadar/0.1: "CMRadar/0.1"
|
|
18
|
+
ColdFusion: "ColdFusion http library"
|
|
19
|
+
Crowsnest: "crowsnest.tv news portal bot"
|
|
20
|
+
Crowsnest: "Crowsnest"
|
|
21
|
+
curl: "curl unix CLI http client"
|
|
22
|
+
developers.google.com/+/web/snippet/: "Google Plus"
|
|
23
|
+
DigitalPersona Fingerprint Software: "HP Fingerprint scanner"
|
|
24
|
+
Embedly: "Embedly"
|
|
25
|
+
EOAAgent: "EOAAgent"
|
|
26
|
+
EventMachine HttpClient: "Ruby http library"
|
|
27
|
+
EvriNid: "Evri bot"
|
|
28
|
+
ExaleadCloudView: "ExaleadCloudView"
|
|
29
|
+
facebookexternalhit: "facebook bot"
|
|
30
|
+
FeedBurner: "RSS bot"
|
|
31
|
+
Feedfetcher-Google: "Google Feedfetcher"
|
|
32
|
+
FlipboardProxy: "FlipboardProxy"
|
|
33
|
+
Genieo: "Genieo Web filter bot"
|
|
34
|
+
getprismatic.com: "getprismatic.com"
|
|
35
|
+
Gigabot: "Gigabot spider"
|
|
36
|
+
Go http package: "Go http library"
|
|
37
|
+
Google Web Preview: "Google Instant Previews crawler"
|
|
38
|
+
Googlebot: "Google spider"
|
|
39
|
+
Hatena::Bookmark: "Hatena::Bookmark"
|
|
40
|
+
heritrix: "heritrix"
|
|
41
|
+
HTMLParser: "HTMLParser"
|
|
42
|
+
HTTP_Request2: "HTTP_Request2"
|
|
43
|
+
HTTPClient: "HTTPClient"
|
|
44
|
+
https://developers.google.com/+/web/snippet: "Google+ Snippet Fetcher"
|
|
45
|
+
HubSpot Connect: "HubSpot Connect"
|
|
46
|
+
ia_archiver(OS-Wayback): "ia_archiver(OS-Wayback)"
|
|
47
|
+
iCoreService: "iCoreService"
|
|
48
|
+
InAGist: "URL resolver"
|
|
49
|
+
Insieve Bot: "Insieve Bot"
|
|
50
|
+
InsieveBot: "InsieveBot"
|
|
51
|
+
Instapaper: "Instapaper"
|
|
52
|
+
jack: "jack"
|
|
53
|
+
Jakarta Commons: "Jakarta Commons HttpClient"
|
|
54
|
+
Jakarta Commons-HttpClient: "Jakarta Commons-HttpClient"
|
|
55
|
+
Java: "Generic Java http library"
|
|
56
|
+
Jetslide: "Jetslide"
|
|
57
|
+
JS-Kit: "URL resolver"
|
|
58
|
+
Kimengi: "nineconnections.com bot"
|
|
59
|
+
Kimengi/nineconnections.com: "Kimengi/nineconnections.com"
|
|
60
|
+
knows.is: "knows.is"
|
|
61
|
+
kraken: "kraken"
|
|
62
|
+
Laconica: "Laconica"
|
|
63
|
+
libwww-perl: "Perl client-server library loved by script kids"
|
|
64
|
+
LinkedInBot: "LinkedIn"
|
|
65
|
+
LinksCrawler: "LinksCrawler"
|
|
66
|
+
Lipperhey: "Lipperhey"
|
|
67
|
+
LongURL: "URL expander service"
|
|
68
|
+
Lumibot: "Lumibot"
|
|
69
|
+
lwp-trivial: "Another Perl library loved by script kids"
|
|
70
|
+
Mediapartners-Google: "Google Adsense bot"
|
|
71
|
+
MetaURI: "URI meta information extractor bot"
|
|
72
|
+
MetaURI: "MetaURI"
|
|
73
|
+
MFE_expand: "Mcafee spider"
|
|
74
|
+
MJ12bot: "Majestic-12 spider"
|
|
75
|
+
msnbot: "Microsoft bot"
|
|
76
|
+
Netvibes: "Personalized dashboard bot"
|
|
77
|
+
NewRelicPinger: "NewRelic monitor"
|
|
78
|
+
newsme: "Link analyzer"
|
|
79
|
+
newsme: "newsme"
|
|
80
|
+
NING: "NING - Yet Another Twitter Swarmer"
|
|
81
|
+
Nutch: "Apache search spider"
|
|
82
|
+
Panopta: "Monitoring service"
|
|
83
|
+
PaperLiBot: "PaperLi content curation service"
|
|
84
|
+
PaperLiBot: "PaperLi is another content curation service"
|
|
85
|
+
peerindex: "peerindex"
|
|
86
|
+
PercolateCrawler: "PercolateCrawler"
|
|
87
|
+
PhantomJS: "PhantomJS"
|
|
88
|
+
Pingdom: "Pingdom monitoring"
|
|
89
|
+
PycURL: "Python http library"
|
|
90
|
+
Python-httplib2: "Python-httplib2"
|
|
91
|
+
python-requests: "Python http library"
|
|
92
|
+
python-requests: "python-requests"
|
|
93
|
+
Python-urllib: "Python http library"
|
|
94
|
+
QuickLook: "QuickLook"
|
|
95
|
+
Readability: "Readability"
|
|
96
|
+
RebelMouse: "RebelMouse"
|
|
97
|
+
redditbot: "Reddit Bot"
|
|
98
|
+
rogerbot: "SeoMoz spider"
|
|
99
|
+
Ruby: "Ruby"
|
|
100
|
+
Ruby/1.9.3: "Ruby/1.9.3"
|
|
101
|
+
SemrushBot: "SEO analysis bot"
|
|
102
|
+
ShortLinkTranslate: "Link shortener"
|
|
103
|
+
ShowyouBot: "Showyou iOS app spider"
|
|
104
|
+
Siege: "Joe Dog Siege"
|
|
105
|
+
SiteUptime: "Site monitoring services"
|
|
106
|
+
Slurp: "Yahoo spider"
|
|
107
|
+
Sogou: "Chinese search engine"
|
|
108
|
+
spider: "generic web spider"
|
|
109
|
+
Test Certificate Info: "C http library?"
|
|
110
|
+
TweetmemeBot: "TweetMeMe Crawler"
|
|
111
|
+
Twikle: "Social web search bot"
|
|
112
|
+
TwitJobSearch: "TwitJobSearch"
|
|
113
|
+
Twitmunin: "Twitmunin"
|
|
114
|
+
Twitterbot: "Twitter URL expander"
|
|
115
|
+
Twurly: "Twurly"
|
|
116
|
+
Typhoeus: "Typhoeus"
|
|
117
|
+
UnwindFetch: "Gnip URL expander"
|
|
118
|
+
UnwindFetchor: "Gnip crawler"
|
|
119
|
+
VB Project: "Visual Basic"
|
|
120
|
+
vkShare: "VKontake Sharer"
|
|
121
|
+
Webscout: "Webscout"
|
|
122
|
+
Wget: "wget unix CLI http client"
|
|
123
|
+
WordPress: "WordPress spider"
|
|
124
|
+
YandexBot: "Yandex spider"
|
|
125
|
+
YOURLS: "YOURLS"
|
|
126
|
+
zelist.ro: "feed parser"
|
|
127
|
+
ZIBB: "ZIBB spider"
|
|
128
|
+
ZyBorg: "Zyborg? Hmmm...."
|
data/browser.gemspec
CHANGED
|
@@ -17,7 +17,10 @@ Gem::Specification.new do |s|
|
|
|
17
17
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
|
18
18
|
s.require_paths = ["lib"]
|
|
19
19
|
|
|
20
|
-
s.add_development_dependency "
|
|
20
|
+
s.add_development_dependency "bundler", ">= 0"
|
|
21
|
+
s.add_development_dependency "rake"
|
|
21
22
|
s.add_development_dependency "rails"
|
|
22
23
|
s.add_development_dependency "rack-test"
|
|
24
|
+
s.add_development_dependency "pry-meta"
|
|
25
|
+
s.add_development_dependency "turn"
|
|
23
26
|
end
|
data/lib/browser.rb
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
require "set"
|
|
2
|
+
require "yaml"
|
|
2
3
|
|
|
3
4
|
require "browser/middleware"
|
|
4
5
|
require "browser/middleware/context"
|
|
@@ -11,6 +12,7 @@ require "browser/methods/devices"
|
|
|
11
12
|
require "browser/methods/consoles"
|
|
12
13
|
require "browser/methods/language"
|
|
13
14
|
require "browser/methods/bots"
|
|
15
|
+
require "browser/methods/tv"
|
|
14
16
|
|
|
15
17
|
require "browser/meta/base"
|
|
16
18
|
require "browser/meta/generic_browser"
|
|
@@ -31,6 +33,7 @@ class Browser
|
|
|
31
33
|
include Consoles
|
|
32
34
|
include Language
|
|
33
35
|
include Bots
|
|
36
|
+
include Tv
|
|
34
37
|
|
|
35
38
|
# Set browser's UA string.
|
|
36
39
|
attr_accessor :user_agent
|
|
@@ -54,7 +57,7 @@ class Browser
|
|
|
54
57
|
:playstation => "PlayStation",
|
|
55
58
|
:quicktime => "QuickTime",
|
|
56
59
|
:safari => "Safari",
|
|
57
|
-
:xbox
|
|
60
|
+
:xbox => "Xbox",
|
|
58
61
|
|
|
59
62
|
# This must be last item, since Ruby 1.9+ has ordered keys.
|
|
60
63
|
:other => "Other",
|
data/lib/browser/methods/bots.rb
CHANGED
|
@@ -1,71 +1,6 @@
|
|
|
1
1
|
class Browser
|
|
2
2
|
module Bots
|
|
3
|
-
|
|
4
|
-
# gem.
|
|
5
|
-
BOTS = {
|
|
6
|
-
# Indexers
|
|
7
|
-
"AdsBot-Google" => "Google Adwords",
|
|
8
|
-
"Baidu" => "Chinese search engine",
|
|
9
|
-
"Baiduspider" => "Chinese search engine",
|
|
10
|
-
"bingbot" => "Microsoft bing bot",
|
|
11
|
-
"Butterfly" => "Topsy Labs",
|
|
12
|
-
"Gigabot" => "Gigabot spider",
|
|
13
|
-
"Googlebot" => "Google spider",
|
|
14
|
-
"MJ12bot" => "Majestic-12 spider",
|
|
15
|
-
"msnbot" => "Microsoft bot",
|
|
16
|
-
"rogerbot" => "SeoMoz spider",
|
|
17
|
-
"PaperLiBot" => "PaperLi is another content curation service",
|
|
18
|
-
"Slurp" => "Yahoo spider",
|
|
19
|
-
"Sogou" => "Chinese search engine",
|
|
20
|
-
"spider" => "generic web spider",
|
|
21
|
-
"UnwindFetchor" => "Gnip crawler",
|
|
22
|
-
"WordPress" => "WordPress spider",
|
|
23
|
-
"YandexBot" => "Yandex spider",
|
|
24
|
-
"ZIBB" => "ZIBB spider",
|
|
25
|
-
|
|
26
|
-
# HTTP libraries
|
|
27
|
-
"Apache-HttpClient" => "Java http library",
|
|
28
|
-
"AppEngine-Google" => "Google App Engine",
|
|
29
|
-
"curl" => "curl unix CLI http client",
|
|
30
|
-
"ColdFusion" => "ColdFusion http library",
|
|
31
|
-
"EventMachine HttpClient" => "Ruby http library",
|
|
32
|
-
"Go http package" => "Go http library",
|
|
33
|
-
"Java" => "Generic Java http library",
|
|
34
|
-
"libwww-perl" => "Perl client-server library loved by script kids",
|
|
35
|
-
"lwp-trivial" => "Another Perl library loved by script kids",
|
|
36
|
-
"Python-urllib" => "Python http library",
|
|
37
|
-
"PycURL" => "Python http library",
|
|
38
|
-
"Test Certificate Info" => "C http library?",
|
|
39
|
-
"Wget" => "wget unix CLI http client",
|
|
40
|
-
|
|
41
|
-
# URL expanders / previewers
|
|
42
|
-
"awe.sm" => "Awe.sm URL expander",
|
|
43
|
-
"bitlybot" => "bit.ly bot",
|
|
44
|
-
"bot@linkfluence.net" => "Linkfluence bot",
|
|
45
|
-
"facebookexternalhit" => "facebook bot",
|
|
46
|
-
"Feedfetcher-Google" => "Google Feedfetcher",
|
|
47
|
-
"https://developers.google.com/+/web/snippet" => "Google+ Snippet Fetcher",
|
|
48
|
-
"LongURL" => "URL expander service",
|
|
49
|
-
"NING" => "NING - Yet Another Twitter Swarmer",
|
|
50
|
-
"redditbot" => "Reddit Bot",
|
|
51
|
-
"ShortLinkTranslate" => "Link shortener",
|
|
52
|
-
"TweetmemeBot" => "TweetMeMe Crawler",
|
|
53
|
-
"Twitterbot" => "Twitter URL expander",
|
|
54
|
-
"UnwindFetch" => "Gnip URL expander",
|
|
55
|
-
"vkShare" => "VKontake Sharer",
|
|
56
|
-
|
|
57
|
-
# Uptime monitoring
|
|
58
|
-
"check_http" => "Nagios monitor",
|
|
59
|
-
"NewRelicPinger" => "NewRelic monitor",
|
|
60
|
-
"Panopta" => "Monitoring service",
|
|
61
|
-
"Pingdom" => "Pingdom monitoring",
|
|
62
|
-
"SiteUptime" => "Site monitoring services",
|
|
63
|
-
|
|
64
|
-
# ???
|
|
65
|
-
"DigitalPersona Fingerprint Software" => "HP Fingerprint scanner",
|
|
66
|
-
"ShowyouBot" => "Showyou iOS app spider",
|
|
67
|
-
"ZyBorg" => "Zyborg? Hmmm...."
|
|
68
|
-
}
|
|
3
|
+
BOTS = YAML.load_file(File.expand_path("../../../../bots.yml", __FILE__))
|
|
69
4
|
|
|
70
5
|
def bot?
|
|
71
6
|
ua.empty? || BOTS.any? {|key, description| ua.include?(key) }
|
|
@@ -29,14 +29,13 @@ class Browser
|
|
|
29
29
|
!!(ua =~ /Kindle/ || silk?)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
|
-
# Detect if browser is running from PSP.
|
|
33
|
-
def psp?
|
|
34
|
-
!!(ua =~ /PSP/)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
32
|
# Detect if browser if a Blackberry Playbook tablet
|
|
38
33
|
def playbook?
|
|
39
34
|
!!(ua =~ /PlayBook/ and ua =~ /RIM Tablet/)
|
|
40
35
|
end
|
|
36
|
+
|
|
37
|
+
def windows_touchscreen_desktop?
|
|
38
|
+
windows? && !!(ua =~ /Touch/)
|
|
39
|
+
end
|
|
41
40
|
end
|
|
42
41
|
end
|
|
@@ -10,7 +10,7 @@ class Browser
|
|
|
10
10
|
ipod? || ipad? || iphone?
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
# Detect if is
|
|
13
|
+
# Detect if is iOS4.
|
|
14
14
|
def ios4?
|
|
15
15
|
ios? && !!(ua =~ /OS 4/)
|
|
16
16
|
end
|
|
@@ -30,6 +30,31 @@ class Browser
|
|
|
30
30
|
ios? && !!(ua =~ /OS 7/)
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
+
# Detect if is BlackBerry 4.
|
|
34
|
+
def blackberry4?
|
|
35
|
+
blackberry? && !!(ua =~ %r[BlackBerry\d+/4])
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
# Detect if is BlackBerry 5.
|
|
39
|
+
def blackberry5?
|
|
40
|
+
blackberry? && !!(ua =~ %r[BlackBerry\d+/5])
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# Detect if is BlackBerry 6.
|
|
44
|
+
def blackberry6?
|
|
45
|
+
blackberry? && !!(ua =~ %r[Version/6])
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# Detect if is BlackBerry 7.
|
|
49
|
+
def blackberry7?
|
|
50
|
+
blackberry? && !!(ua =~ %r[Version/7])
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# Detect if is BlackBerry 10.
|
|
54
|
+
def blackberry10?
|
|
55
|
+
!!(ua =~ /BB10/)
|
|
56
|
+
end
|
|
57
|
+
|
|
33
58
|
# Detect if current platform is Macintosh.
|
|
34
59
|
def mac?
|
|
35
60
|
!!(ua =~ /Mac OS X/)
|
|
@@ -63,12 +88,22 @@ class Browser
|
|
|
63
88
|
!!(ua =~ /Windows Phone/)
|
|
64
89
|
end
|
|
65
90
|
|
|
91
|
+
# Detect if current platform is Windows in 64-bit architecture.
|
|
92
|
+
def windows_x64?
|
|
93
|
+
windows? && !!(ua =~ /(Win64|x64)/) && !!(ua =~ /x64/)
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
# Detect if current platform is ChromeOS
|
|
97
|
+
def chrome_os?
|
|
98
|
+
!!(ua =~ /CrOS/)
|
|
99
|
+
end
|
|
100
|
+
|
|
66
101
|
# Return the platform.
|
|
67
102
|
def platform
|
|
68
103
|
case
|
|
69
|
-
when linux?
|
|
70
|
-
when mac?
|
|
71
|
-
when windows?
|
|
104
|
+
when linux? then :linux
|
|
105
|
+
when mac? then :mac
|
|
106
|
+
when windows? then :windows
|
|
72
107
|
else
|
|
73
108
|
:other
|
|
74
109
|
end
|
data/lib/browser/version.rb
CHANGED
data/test/browser_test.rb
CHANGED
|
@@ -14,7 +14,9 @@ class BrowserTest < Test::Unit::TestCase
|
|
|
14
14
|
IE9_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; Trident/5.0)"
|
|
15
15
|
IE10 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.1; Trident/6.0; EIE10;ENUSMSN)"
|
|
16
16
|
IE10_COMPAT = "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; Trident/6.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; EIE10;ENUSMSN)"
|
|
17
|
+
IE10_X64_WINX64 = "Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)"
|
|
17
18
|
IE11 = "Mozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko"
|
|
19
|
+
IE11_TOUCH_SCREEN = "Mozilla/5.0 (Windows NT 6.3; Win64; x64; Trident/7.0; Touch; rv:11.0) like Gecko"
|
|
18
20
|
OPERA = "Opera/9.80 (Macintosh; Intel Mac OS X 10.7.4; U; en) Presto/2.10.229 Version/11.64"
|
|
19
21
|
OPERA_NEXT = "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_8_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/28.0.1500.37 Safari/537.36 OPR/15.0.1147.44 (Edition Next)"
|
|
20
22
|
FIREFOX = "Mozilla/5.0 (X11; U; Linux i686; pl-PL; rv:1.9.0.2) Gecko/20121223 Ubuntu/9.25 (jaunty) Firefox/3.8"
|
|
@@ -22,10 +24,17 @@ class BrowserTest < Test::Unit::TestCase
|
|
|
22
24
|
FIREFOX_TABLET = "Mozilla/5.0 (Android; Tablet; rv:14.0) Gecko/14.0 Firefox/14.0"
|
|
23
25
|
CHROME = "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_4; en-US) AppleWebKit/533.4 (KHTML, like Gecko) Chrome/5.0.375.99 Safari/533.4"
|
|
24
26
|
MOBILE_CHROME = "Mozilla/5.0 (iPhone; U; CPU iPhone OS 5_1_1 like Mac OS X; en) AppleWebKit/534.46.0 (KHTML, like Gecko) CriOS/19.0.1084.60 Mobile/9B206 Safari/7534.48.3"
|
|
27
|
+
CHROME_OS = "Mozilla/5.0 (X11; CrOS x86_64 3701.81.0) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.57 Safari/537.31."
|
|
25
28
|
ANDROID = "Android SDK 1.5r3: Mozilla/5.0 (Linux; U; Android 1.5; de-; sdk Build/CUPCAKE) AppleWebkit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"
|
|
26
29
|
TABLOID = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
|
|
27
30
|
BLACKBERRY = "BlackBerry7100i/4.1.0 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
|
31
|
+
BLACKBERRY4 = "BlackBerry8100/4.2.1 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/103"
|
|
32
|
+
BLACKBERRY5 = "BlackBerry9000/5.0.0.93 Profile/MIDP-2.0 Configuration/CLDC-1.1 VendorID/179"
|
|
33
|
+
BLACKBERRY6 = "Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/6.0.0.141 Mobile Safari/534.11+"
|
|
34
|
+
BLACKBERRY7 = "Mozilla/5.0 (BlackBerry; U; BlackBerry AAAA; en-US) AppleWebKit/534.11+ (KHTML, like Gecko) Version/7.0.0.1 Mobile Safari/534.11+"
|
|
35
|
+
BLACKBERRY10 = "Mozilla/5.0 (BB10; Touch) AppleWebKit/537.10+ (KHTML, like Gecko) Version/10.0.9.1675 Mobile Safari/537.10+"
|
|
28
36
|
PSP = "Mozilla/4.0 (PSP (PlayStation Portable); 2.00)"
|
|
37
|
+
PSP_VITA = "Mozilla/5.0 (Playstation Vita 1.61) AppleWebKit/531.22.8 (KHTML, like Gecko) Silk/3.2"
|
|
29
38
|
QUICKTIME = "QuickTime/7.6.8 (qtver=7.6.8;os=Windows NT 5.1Service Pack 3)"
|
|
30
39
|
COREMEDIA = "Apple Mac OS X v10.6.4 CoreMedia v1.0.0.10F569"
|
|
31
40
|
XOOM = "Mozilla/5.0 (Linux; U; Android 3.0; en-us; Xoom Build/HRI39) AppleWebKit/534.13 (KHTML, like Gecko) Version/4.0 Safari/534.13"
|
|
@@ -59,6 +68,7 @@ class BrowserTest < Test::Unit::TestCase
|
|
|
59
68
|
GOOGLE_BOT = "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
|
|
60
69
|
MSN_BOT = "msnbot-media/1.1 (+http://search.msn.com/msnbot.htm)"
|
|
61
70
|
FACEBOOK_BOT = "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)"
|
|
71
|
+
SMART_TV = "Mozilla/5.0 (SmartHub; SMART-TV; U; Linux/SmartTV) AppleWebKit/531.2+ (KHTML, like Gecko) WebBrowser/1.0 SmartTV Safari/531.2+"
|
|
62
72
|
|
|
63
73
|
def setup
|
|
64
74
|
@browser = Browser.new
|
|
@@ -418,6 +428,66 @@ class BrowserTest < Test::Unit::TestCase
|
|
|
418
428
|
assert_equal "4", @browser.version
|
|
419
429
|
end
|
|
420
430
|
|
|
431
|
+
def test_detect_blackberry4
|
|
432
|
+
@browser.ua = BLACKBERRY4
|
|
433
|
+
|
|
434
|
+
assert_equal "BlackBerry", @browser.name
|
|
435
|
+
assert @browser.blackberry4?
|
|
436
|
+
assert ! @browser.tablet?
|
|
437
|
+
assert @browser.mobile?
|
|
438
|
+
assert ! @browser.modern?
|
|
439
|
+
assert_equal "4.2.1", @browser.full_version
|
|
440
|
+
assert_equal "4", @browser.version
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
def test_detect_blackberry5
|
|
444
|
+
@browser.ua = BLACKBERRY5
|
|
445
|
+
|
|
446
|
+
assert_equal "BlackBerry", @browser.name
|
|
447
|
+
assert @browser.blackberry5?
|
|
448
|
+
assert ! @browser.tablet?
|
|
449
|
+
assert @browser.mobile?
|
|
450
|
+
assert ! @browser.modern?
|
|
451
|
+
assert_equal "5.0.0.93", @browser.full_version
|
|
452
|
+
assert_equal "5", @browser.version
|
|
453
|
+
end
|
|
454
|
+
|
|
455
|
+
def test_detect_blackberry6
|
|
456
|
+
@browser.ua = BLACKBERRY6
|
|
457
|
+
|
|
458
|
+
assert_equal "BlackBerry", @browser.name
|
|
459
|
+
assert @browser.blackberry6?
|
|
460
|
+
assert ! @browser.tablet?
|
|
461
|
+
assert @browser.mobile?
|
|
462
|
+
assert @browser.modern?
|
|
463
|
+
assert_equal "534.11", @browser.full_version
|
|
464
|
+
assert_equal "534", @browser.version
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
def test_detect_blackberry7
|
|
468
|
+
@browser.ua = BLACKBERRY7
|
|
469
|
+
|
|
470
|
+
assert_equal "BlackBerry", @browser.name
|
|
471
|
+
assert @browser.blackberry7?
|
|
472
|
+
assert ! @browser.tablet?
|
|
473
|
+
assert @browser.mobile?
|
|
474
|
+
assert @browser.modern?
|
|
475
|
+
assert_equal "534.11", @browser.full_version
|
|
476
|
+
assert_equal "534", @browser.version
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
def test_detect_blackberry10
|
|
480
|
+
@browser.ua = BLACKBERRY10
|
|
481
|
+
|
|
482
|
+
assert_equal "Safari", @browser.name
|
|
483
|
+
assert @browser.blackberry10?
|
|
484
|
+
assert ! @browser.tablet?
|
|
485
|
+
assert @browser.mobile?
|
|
486
|
+
assert @browser.modern?
|
|
487
|
+
assert_equal "10.0.9.1675", @browser.full_version
|
|
488
|
+
assert_equal "10", @browser.version
|
|
489
|
+
end
|
|
490
|
+
|
|
421
491
|
def test_detect_quicktime
|
|
422
492
|
@browser.ua = QUICKTIME
|
|
423
493
|
|
|
@@ -456,6 +526,14 @@ class BrowserTest < Test::Unit::TestCase
|
|
|
456
526
|
assert @browser.mobile?
|
|
457
527
|
end
|
|
458
528
|
|
|
529
|
+
def test_detect_psp_vita
|
|
530
|
+
@browser.ua = PSP_VITA
|
|
531
|
+
|
|
532
|
+
assert_equal "PlayStation Portable", @browser.name
|
|
533
|
+
assert @browser.psp?
|
|
534
|
+
assert @browser.mobile?
|
|
535
|
+
end
|
|
536
|
+
|
|
459
537
|
def test_detect_other_mobiles
|
|
460
538
|
@browser.ua = "Symbian OS"
|
|
461
539
|
assert @browser.mobile?
|
|
@@ -683,6 +761,26 @@ class BrowserTest < Test::Unit::TestCase
|
|
|
683
761
|
assert ! @browser.tablet?
|
|
684
762
|
end
|
|
685
763
|
|
|
764
|
+
def test_windows_x64
|
|
765
|
+
@browser.ua = IE10_X64_WINX64
|
|
766
|
+
assert @browser.windows_x64?
|
|
767
|
+
end
|
|
768
|
+
|
|
769
|
+
def test_detect_ie11_touch_desktop_pc
|
|
770
|
+
@browser.ua = IE11_TOUCH_SCREEN
|
|
771
|
+
|
|
772
|
+
assert_equal "Internet Explorer", @browser.name
|
|
773
|
+
assert @browser.ie?
|
|
774
|
+
assert @browser.ie11?
|
|
775
|
+
assert @browser.modern?
|
|
776
|
+
assert ! @browser.compatibility_view?
|
|
777
|
+
assert ! @browser.windows_rt?
|
|
778
|
+
assert @browser.windows_touchscreen_desktop?
|
|
779
|
+
assert @browser.windows8?
|
|
780
|
+
assert_equal "11.0", @browser.full_version
|
|
781
|
+
assert_equal "11", @browser.version
|
|
782
|
+
end
|
|
783
|
+
|
|
686
784
|
def test_kindle_monochrome
|
|
687
785
|
@browser.ua = KINDLE
|
|
688
786
|
|
|
@@ -800,4 +898,14 @@ class BrowserTest < Test::Unit::TestCase
|
|
|
800
898
|
@browser.ua = CHROME
|
|
801
899
|
assert ! @browser.bot?
|
|
802
900
|
end
|
|
901
|
+
|
|
902
|
+
def test_chrome_os
|
|
903
|
+
@browser.ua = CHROME_OS
|
|
904
|
+
assert @browser.chrome_os?
|
|
905
|
+
end
|
|
906
|
+
|
|
907
|
+
def test_tv
|
|
908
|
+
@browser.ua = SMART_TV
|
|
909
|
+
assert @browser.tv?
|
|
910
|
+
end
|
|
803
911
|
end
|
data/test/test_helper.rb
CHANGED
|
@@ -2,3 +2,8 @@ ENV["BUNDLE_GEMFILE"] ||= File.expand_path("../../Gemfile", __FILE__)
|
|
|
2
2
|
require "bundler/setup"
|
|
3
3
|
require "test/unit"
|
|
4
4
|
require "browser"
|
|
5
|
+
require "turn"
|
|
6
|
+
require "turn/reporter"
|
|
7
|
+
|
|
8
|
+
Turn.config.format = :dot
|
|
9
|
+
$RUBY_IGNORE_CALLERS += [%r[/gems/], %r[minitest/unit.rb]]
|
metadata
CHANGED
|
@@ -1,55 +1,97 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: browser
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Nando Vieira
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2014-02-07 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
|
-
name:
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - ">="
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '0'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - ">="
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '0'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
15
29
|
requirement: !ruby/object:Gem::Requirement
|
|
16
30
|
requirements:
|
|
17
|
-
- -
|
|
31
|
+
- - ">="
|
|
18
32
|
- !ruby/object:Gem::Version
|
|
19
33
|
version: '0'
|
|
20
34
|
type: :development
|
|
21
35
|
prerelease: false
|
|
22
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
37
|
requirements:
|
|
24
|
-
- -
|
|
38
|
+
- - ">="
|
|
25
39
|
- !ruby/object:Gem::Version
|
|
26
40
|
version: '0'
|
|
27
41
|
- !ruby/object:Gem::Dependency
|
|
28
42
|
name: rails
|
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
|
30
44
|
requirements:
|
|
31
|
-
- -
|
|
45
|
+
- - ">="
|
|
32
46
|
- !ruby/object:Gem::Version
|
|
33
47
|
version: '0'
|
|
34
48
|
type: :development
|
|
35
49
|
prerelease: false
|
|
36
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
51
|
requirements:
|
|
38
|
-
- -
|
|
52
|
+
- - ">="
|
|
39
53
|
- !ruby/object:Gem::Version
|
|
40
54
|
version: '0'
|
|
41
55
|
- !ruby/object:Gem::Dependency
|
|
42
56
|
name: rack-test
|
|
43
57
|
requirement: !ruby/object:Gem::Requirement
|
|
44
58
|
requirements:
|
|
45
|
-
- -
|
|
59
|
+
- - ">="
|
|
60
|
+
- !ruby/object:Gem::Version
|
|
61
|
+
version: '0'
|
|
62
|
+
type: :development
|
|
63
|
+
prerelease: false
|
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
65
|
+
requirements:
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: pry-meta
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :development
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
81
|
+
- !ruby/object:Gem::Version
|
|
82
|
+
version: '0'
|
|
83
|
+
- !ruby/object:Gem::Dependency
|
|
84
|
+
name: turn
|
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
|
86
|
+
requirements:
|
|
87
|
+
- - ">="
|
|
46
88
|
- !ruby/object:Gem::Version
|
|
47
89
|
version: '0'
|
|
48
90
|
type: :development
|
|
49
91
|
prerelease: false
|
|
50
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
93
|
requirements:
|
|
52
|
-
- -
|
|
94
|
+
- - ">="
|
|
53
95
|
- !ruby/object:Gem::Version
|
|
54
96
|
version: '0'
|
|
55
97
|
description: Do some browser detection with Ruby.
|
|
@@ -59,16 +101,15 @@ executables: []
|
|
|
59
101
|
extensions: []
|
|
60
102
|
extra_rdoc_files: []
|
|
61
103
|
files:
|
|
62
|
-
- .gitignore
|
|
63
|
-
- .travis.yml
|
|
104
|
+
- ".gitignore"
|
|
105
|
+
- ".travis.yml"
|
|
64
106
|
- Gemfile
|
|
65
|
-
- Gemfile.lock
|
|
66
107
|
- README.md
|
|
67
108
|
- Rakefile
|
|
109
|
+
- bots.yml
|
|
68
110
|
- browser.gemspec
|
|
69
111
|
- config.ru
|
|
70
112
|
- gemfiles/rails3.gemfile
|
|
71
|
-
- gemfiles/rails3.gemfile.lock
|
|
72
113
|
- lib/browser.rb
|
|
73
114
|
- lib/browser/action_controller.rb
|
|
74
115
|
- lib/browser/meta/base.rb
|
|
@@ -88,6 +129,7 @@ files:
|
|
|
88
129
|
- lib/browser/methods/language.rb
|
|
89
130
|
- lib/browser/methods/mobile.rb
|
|
90
131
|
- lib/browser/methods/platform.rb
|
|
132
|
+
- lib/browser/methods/tv.rb
|
|
91
133
|
- lib/browser/middleware.rb
|
|
92
134
|
- lib/browser/middleware/context.rb
|
|
93
135
|
- lib/browser/middleware/context/additions.rb
|
|
@@ -107,19 +149,18 @@ require_paths:
|
|
|
107
149
|
- lib
|
|
108
150
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
151
|
requirements:
|
|
110
|
-
- -
|
|
152
|
+
- - ">="
|
|
111
153
|
- !ruby/object:Gem::Version
|
|
112
154
|
version: '0'
|
|
113
155
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
114
156
|
requirements:
|
|
115
|
-
- -
|
|
157
|
+
- - ">="
|
|
116
158
|
- !ruby/object:Gem::Version
|
|
117
159
|
version: '0'
|
|
118
160
|
requirements: []
|
|
119
161
|
rubyforge_project:
|
|
120
|
-
rubygems_version: 2.0
|
|
162
|
+
rubygems_version: 2.2.0
|
|
121
163
|
signing_key:
|
|
122
164
|
specification_version: 4
|
|
123
165
|
summary: Do some browser detection with Ruby.
|
|
124
166
|
test_files: []
|
|
125
|
-
has_rdoc:
|
data/Gemfile.lock
DELETED
|
@@ -1,106 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: .
|
|
3
|
-
specs:
|
|
4
|
-
browser (0.3.2)
|
|
5
|
-
|
|
6
|
-
GEM
|
|
7
|
-
remote: http://rubygems.org/
|
|
8
|
-
specs:
|
|
9
|
-
actionmailer (4.0.2)
|
|
10
|
-
actionpack (= 4.0.2)
|
|
11
|
-
mail (~> 2.5.4)
|
|
12
|
-
actionpack (4.0.2)
|
|
13
|
-
activesupport (= 4.0.2)
|
|
14
|
-
builder (~> 3.1.0)
|
|
15
|
-
erubis (~> 2.7.0)
|
|
16
|
-
rack (~> 1.5.2)
|
|
17
|
-
rack-test (~> 0.6.2)
|
|
18
|
-
activemodel (4.0.2)
|
|
19
|
-
activesupport (= 4.0.2)
|
|
20
|
-
builder (~> 3.1.0)
|
|
21
|
-
activerecord (4.0.2)
|
|
22
|
-
activemodel (= 4.0.2)
|
|
23
|
-
activerecord-deprecated_finders (~> 1.0.2)
|
|
24
|
-
activesupport (= 4.0.2)
|
|
25
|
-
arel (~> 4.0.0)
|
|
26
|
-
activerecord-deprecated_finders (1.0.3)
|
|
27
|
-
activesupport (4.0.2)
|
|
28
|
-
i18n (~> 0.6, >= 0.6.4)
|
|
29
|
-
minitest (~> 4.2)
|
|
30
|
-
multi_json (~> 1.3)
|
|
31
|
-
thread_safe (~> 0.1)
|
|
32
|
-
tzinfo (~> 0.3.37)
|
|
33
|
-
arel (4.0.1)
|
|
34
|
-
atomic (1.1.14)
|
|
35
|
-
awesome_print (1.2.0)
|
|
36
|
-
builder (3.1.4)
|
|
37
|
-
coderay (1.1.0)
|
|
38
|
-
erubis (2.7.0)
|
|
39
|
-
hike (1.2.3)
|
|
40
|
-
i18n (0.6.9)
|
|
41
|
-
mail (2.5.4)
|
|
42
|
-
mime-types (~> 1.16)
|
|
43
|
-
treetop (~> 1.4.8)
|
|
44
|
-
method_source (0.8.2)
|
|
45
|
-
mime-types (1.25.1)
|
|
46
|
-
minitest (4.7.5)
|
|
47
|
-
multi_json (1.8.2)
|
|
48
|
-
polyglot (0.3.3)
|
|
49
|
-
pry (0.9.12.4)
|
|
50
|
-
coderay (~> 1.0)
|
|
51
|
-
method_source (~> 0.8)
|
|
52
|
-
slop (~> 3.4)
|
|
53
|
-
pry-meta (0.0.5)
|
|
54
|
-
awesome_print
|
|
55
|
-
pry
|
|
56
|
-
pry-nav
|
|
57
|
-
pry-remote
|
|
58
|
-
pry-nav (0.2.3)
|
|
59
|
-
pry (~> 0.9.10)
|
|
60
|
-
pry-remote (0.1.7)
|
|
61
|
-
pry (~> 0.9)
|
|
62
|
-
slop (~> 3.0)
|
|
63
|
-
rack (1.5.2)
|
|
64
|
-
rack-test (0.6.2)
|
|
65
|
-
rack (>= 1.0)
|
|
66
|
-
rails (4.0.2)
|
|
67
|
-
actionmailer (= 4.0.2)
|
|
68
|
-
actionpack (= 4.0.2)
|
|
69
|
-
activerecord (= 4.0.2)
|
|
70
|
-
activesupport (= 4.0.2)
|
|
71
|
-
bundler (>= 1.3.0, < 2.0)
|
|
72
|
-
railties (= 4.0.2)
|
|
73
|
-
sprockets-rails (~> 2.0.0)
|
|
74
|
-
railties (4.0.2)
|
|
75
|
-
actionpack (= 4.0.2)
|
|
76
|
-
activesupport (= 4.0.2)
|
|
77
|
-
rake (>= 0.8.7)
|
|
78
|
-
thor (>= 0.18.1, < 2.0)
|
|
79
|
-
rake (10.1.0)
|
|
80
|
-
slop (3.4.7)
|
|
81
|
-
sprockets (2.10.1)
|
|
82
|
-
hike (~> 1.2)
|
|
83
|
-
multi_json (~> 1.0)
|
|
84
|
-
rack (~> 1.0)
|
|
85
|
-
tilt (~> 1.1, != 1.3.0)
|
|
86
|
-
sprockets-rails (2.0.1)
|
|
87
|
-
actionpack (>= 3.0)
|
|
88
|
-
activesupport (>= 3.0)
|
|
89
|
-
sprockets (~> 2.8)
|
|
90
|
-
thor (0.18.1)
|
|
91
|
-
thread_safe (0.1.3)
|
|
92
|
-
atomic
|
|
93
|
-
tilt (1.4.1)
|
|
94
|
-
treetop (1.4.15)
|
|
95
|
-
polyglot
|
|
96
|
-
polyglot (>= 0.3.1)
|
|
97
|
-
tzinfo (0.3.38)
|
|
98
|
-
|
|
99
|
-
PLATFORMS
|
|
100
|
-
ruby
|
|
101
|
-
|
|
102
|
-
DEPENDENCIES
|
|
103
|
-
browser!
|
|
104
|
-
pry-meta
|
|
105
|
-
rack-test
|
|
106
|
-
rails
|
|
@@ -1,111 +0,0 @@
|
|
|
1
|
-
PATH
|
|
2
|
-
remote: ..
|
|
3
|
-
specs:
|
|
4
|
-
browser (0.3.2)
|
|
5
|
-
|
|
6
|
-
GEM
|
|
7
|
-
remote: https://rubygems.org/
|
|
8
|
-
specs:
|
|
9
|
-
actionmailer (3.2.14)
|
|
10
|
-
actionpack (= 3.2.14)
|
|
11
|
-
mail (~> 2.5.4)
|
|
12
|
-
actionpack (3.2.14)
|
|
13
|
-
activemodel (= 3.2.14)
|
|
14
|
-
activesupport (= 3.2.14)
|
|
15
|
-
builder (~> 3.0.0)
|
|
16
|
-
erubis (~> 2.7.0)
|
|
17
|
-
journey (~> 1.0.4)
|
|
18
|
-
rack (~> 1.4.5)
|
|
19
|
-
rack-cache (~> 1.2)
|
|
20
|
-
rack-test (~> 0.6.1)
|
|
21
|
-
sprockets (~> 2.2.1)
|
|
22
|
-
activemodel (3.2.14)
|
|
23
|
-
activesupport (= 3.2.14)
|
|
24
|
-
builder (~> 3.0.0)
|
|
25
|
-
activerecord (3.2.14)
|
|
26
|
-
activemodel (= 3.2.14)
|
|
27
|
-
activesupport (= 3.2.14)
|
|
28
|
-
arel (~> 3.0.2)
|
|
29
|
-
tzinfo (~> 0.3.29)
|
|
30
|
-
activeresource (3.2.14)
|
|
31
|
-
activemodel (= 3.2.14)
|
|
32
|
-
activesupport (= 3.2.14)
|
|
33
|
-
activesupport (3.2.14)
|
|
34
|
-
i18n (~> 0.6, >= 0.6.4)
|
|
35
|
-
multi_json (~> 1.0)
|
|
36
|
-
arel (3.0.2)
|
|
37
|
-
awesome_print (1.1.0)
|
|
38
|
-
builder (3.0.4)
|
|
39
|
-
coderay (1.0.9)
|
|
40
|
-
erubis (2.7.0)
|
|
41
|
-
hike (1.2.3)
|
|
42
|
-
i18n (0.6.5)
|
|
43
|
-
journey (1.0.4)
|
|
44
|
-
json (1.8.0)
|
|
45
|
-
mail (2.5.4)
|
|
46
|
-
mime-types (~> 1.16)
|
|
47
|
-
treetop (~> 1.4.8)
|
|
48
|
-
method_source (0.8.2)
|
|
49
|
-
mime-types (1.25)
|
|
50
|
-
multi_json (1.8.0)
|
|
51
|
-
polyglot (0.3.3)
|
|
52
|
-
pry (0.9.12.2)
|
|
53
|
-
coderay (~> 1.0.5)
|
|
54
|
-
method_source (~> 0.8)
|
|
55
|
-
slop (~> 3.4)
|
|
56
|
-
pry-meta (0.0.5)
|
|
57
|
-
awesome_print
|
|
58
|
-
pry
|
|
59
|
-
pry-nav
|
|
60
|
-
pry-remote
|
|
61
|
-
pry-nav (0.2.3)
|
|
62
|
-
pry (~> 0.9.10)
|
|
63
|
-
pry-remote (0.1.7)
|
|
64
|
-
pry (~> 0.9)
|
|
65
|
-
slop (~> 3.0)
|
|
66
|
-
rack (1.4.5)
|
|
67
|
-
rack-cache (1.2)
|
|
68
|
-
rack (>= 0.4)
|
|
69
|
-
rack-ssl (1.3.3)
|
|
70
|
-
rack
|
|
71
|
-
rack-test (0.6.2)
|
|
72
|
-
rack (>= 1.0)
|
|
73
|
-
rails (3.2.14)
|
|
74
|
-
actionmailer (= 3.2.14)
|
|
75
|
-
actionpack (= 3.2.14)
|
|
76
|
-
activerecord (= 3.2.14)
|
|
77
|
-
activeresource (= 3.2.14)
|
|
78
|
-
activesupport (= 3.2.14)
|
|
79
|
-
bundler (~> 1.0)
|
|
80
|
-
railties (= 3.2.14)
|
|
81
|
-
railties (3.2.14)
|
|
82
|
-
actionpack (= 3.2.14)
|
|
83
|
-
activesupport (= 3.2.14)
|
|
84
|
-
rack-ssl (~> 1.3.2)
|
|
85
|
-
rake (>= 0.8.7)
|
|
86
|
-
rdoc (~> 3.4)
|
|
87
|
-
thor (>= 0.14.6, < 2.0)
|
|
88
|
-
rake (10.1.0)
|
|
89
|
-
rdoc (3.12.2)
|
|
90
|
-
json (~> 1.4)
|
|
91
|
-
slop (3.4.6)
|
|
92
|
-
sprockets (2.2.2)
|
|
93
|
-
hike (~> 1.2)
|
|
94
|
-
multi_json (~> 1.0)
|
|
95
|
-
rack (~> 1.0)
|
|
96
|
-
tilt (~> 1.1, != 1.3.0)
|
|
97
|
-
thor (0.18.1)
|
|
98
|
-
tilt (1.4.1)
|
|
99
|
-
treetop (1.4.15)
|
|
100
|
-
polyglot
|
|
101
|
-
polyglot (>= 0.3.1)
|
|
102
|
-
tzinfo (0.3.37)
|
|
103
|
-
|
|
104
|
-
PLATFORMS
|
|
105
|
-
ruby
|
|
106
|
-
|
|
107
|
-
DEPENDENCIES
|
|
108
|
-
browser!
|
|
109
|
-
pry-meta
|
|
110
|
-
rack-test
|
|
111
|
-
rails (~> 3.2.13)
|