sports_db 0.0.13 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/stylesheets/_base.css.scss +48 -1
- data/app/views/layouts/application.html.erb +14 -36
- data/lib/sports_db/twitter_builder.rb +65 -77
- data/lib/sports_db/version.rb +1 -1
- metadata +64 -46
@@ -1,4 +1,5 @@
|
|
1
|
-
body {
|
1
|
+
html,body {
|
2
|
+
height: 100%;
|
2
3
|
background-color: $page_bg;
|
3
4
|
}
|
4
5
|
* {
|
@@ -22,3 +23,49 @@ body.ios {
|
|
22
23
|
body.android {
|
23
24
|
font-family: sans-serif;
|
24
25
|
}
|
26
|
+
|
27
|
+
|
28
|
+
|
29
|
+
// Default
|
30
|
+
html { font-size: 10px; }
|
31
|
+
// 480 wide
|
32
|
+
@media (min-width: 460px) and (-webkit-min-device-pixel-ratio: 1.5) {
|
33
|
+
html { font-size: 15px; }
|
34
|
+
}
|
35
|
+
// 540 wide
|
36
|
+
@media (min-width: 520px) and (-webkit-min-device-pixel-ratio: 1.5) {
|
37
|
+
html { font-size: 16.875px; }
|
38
|
+
}
|
39
|
+
// 600 wide
|
40
|
+
@media (min-width: 580px) and (-webkit-min-device-pixel-ratio: 1.5) {
|
41
|
+
html { font-size: 18.75px; }
|
42
|
+
}
|
43
|
+
// 720 wide
|
44
|
+
@media (min-width: 700px) and (-webkit-min-device-pixel-ratio: 1.5) {
|
45
|
+
html { font-size: 22.5px; }
|
46
|
+
}
|
47
|
+
// Nexus 4, 768 wide
|
48
|
+
@media (min-width: 748px) and (-webkit-min-device-pixel-ratio: 1.5) {
|
49
|
+
html { font-size: 24px; }
|
50
|
+
}
|
51
|
+
// 800 wide
|
52
|
+
@media (min-width: 780px) and (-webkit-min-device-pixel-ratio: 1.5) {
|
53
|
+
html { font-size: 25px; }
|
54
|
+
}
|
55
|
+
// Nexus 7 (has a device pixel ratio of ~1.32)
|
56
|
+
@media (min-width: 780px) and (-webkit-min-device-pixel-ratio: 1.32) {
|
57
|
+
html { font-size: 25px; }
|
58
|
+
}
|
59
|
+
// iPads
|
60
|
+
// The device-height is reqd in order to differenciate from 768px wide devices (Nexus 4, etc.)
|
61
|
+
@media
|
62
|
+
(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 1),
|
63
|
+
(device-width: 1024px) and (device-height: 768px) and (-webkit-device-pixel-ratio: 1),
|
64
|
+
(device-width: 768px) and (device-height: 1024px) and (-webkit-device-pixel-ratio: 2),
|
65
|
+
(device-width: 1024px) and (device-height: 768px) and (-webkit-device-pixel-ratio: 2) {
|
66
|
+
html { font-size: 10px; }
|
67
|
+
}
|
68
|
+
// for bug 21664 (see base.js)
|
69
|
+
html.kindle {
|
70
|
+
font-size: 18.75px;
|
71
|
+
}
|
@@ -3,53 +3,31 @@
|
|
3
3
|
<head>
|
4
4
|
<title><%= CONFIG.app_path.downcase %></title>
|
5
5
|
<meta id="meta_viewport" name="viewport" content="user-scalable=no, initial-scale=1, target-densityDpi=device-dpi">
|
6
|
+
<%= stylesheet_link_tag "/#{CONFIG.app_path.downcase}/cache/#{CONFIG.app_path.downcase}/assets/application" %>
|
6
7
|
<script>
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
var fontSize = 10; // iOS uses 10 as the base font size.
|
11
|
-
|
12
|
-
// Get the base font size for Android
|
13
|
-
if (isAndroid) {
|
14
|
-
var obj = {};
|
15
|
-
document.location.search.substring(1).split('&').forEach(function(keyValue) {
|
16
|
-
var pair = keyValue.split('=');
|
17
|
-
var key = decodeURIComponent(pair[0]).replace(/\+/g, ' ');
|
18
|
-
var value = decodeURIComponent(pair[1]).replace(/\+/g, ' ');
|
19
|
-
obj[key] = value;
|
20
|
-
});
|
21
|
-
|
22
|
-
obj.deviceWidth = obj.dw || screen.width;
|
23
|
-
|
24
|
-
if (navigator.userAgent.match(/android/i)) {
|
25
|
-
fontSize = (obj.deviceWidth / 320) * 10;
|
26
|
-
}
|
8
|
+
// FIXED FB#21664.
|
9
|
+
if (navigator.userAgent.match(/Kindle/i)) {
|
10
|
+
document.documentElement.className += ' ' + 'kindle';
|
27
11
|
}
|
28
|
-
|
29
|
-
// Set the base font size
|
30
|
-
document.documentElement.style.fontSize = fontSize + 'px';
|
31
|
-
})()
|
32
12
|
</script>
|
33
|
-
<%= stylesheet_link_tag "application" %>
|
34
13
|
</head>
|
35
14
|
<body>
|
36
15
|
<%= yield %>
|
37
|
-
<loading id="loading" style="display:none"><loading_text id="loading_text">Loading…</loading_text></loading>
|
38
|
-
<div id="flash" style="display:none"></div>
|
39
|
-
<div id="buffer" style="display:none"></div>
|
40
|
-
<div id="tmp" style="display:none"></div>
|
41
|
-
<%= javascript_include_tag "application" %>
|
16
|
+
<loading id="loading" style="display: none;"><loading_text id="loading_text">Loading…</loading_text></loading>
|
17
|
+
<div id="flash" style="display: none;"></div>
|
18
|
+
<div id="buffer" style="display: none;"></div>
|
19
|
+
<div id="tmp" style="display: none;"></div>
|
20
|
+
<%= javascript_include_tag "/#{CONFIG.app_path.downcase}/cache/#{CONFIG.app_path.downcase}/assets/application" %>
|
42
21
|
<%# Allows us to use mock on test or production without screwing up caching of page. %>
|
43
22
|
<script>
|
44
23
|
if (Application.params.mock) {
|
45
|
-
document.write("<link rel='stylesheet' href='/<%= CONFIG.app_path %>/
|
46
|
-
document.write("<script src='/<%= CONFIG.app_path %>/
|
24
|
+
document.write("<link rel='stylesheet' href='/<%= CONFIG.app_path %>/assets/mock.css'>");
|
25
|
+
document.write("<script src='/<%= CONFIG.app_path %>/assets/core/Mock.js'><\/script>");
|
47
26
|
}
|
48
27
|
</script>
|
49
|
-
|
50
|
-
|
51
|
-
<
|
52
|
-
<script src='/<%= CONFIG.app_path %>/cache/<%= CONFIG.app_path %>/assets/core/Mock.js'></script>
|
28
|
+
<% if request.host == 'localhost' %>
|
29
|
+
<link rel='stylesheet' href='/<%= CONFIG.app_path %>/assets/mock.css'>
|
30
|
+
<script src='/<%= CONFIG.app_path %>/assets/core/Mock.js'></script>
|
53
31
|
<% end %>
|
54
32
|
</body>
|
55
33
|
</html>
|
@@ -1,67 +1,61 @@
|
|
1
1
|
module SportsDb
|
2
|
-
class TwitterBuilder
|
3
|
-
|
2
|
+
class TwitterBuilder
|
3
|
+
|
4
4
|
def self.update_twitter
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
5
|
+
new_tweets = []
|
6
|
+
|
7
|
+
config = SimpleConfig.for(:feeds)
|
8
|
+
config.twitter_feeds.each do |feed_title, url|
|
9
|
+
parse_feed(new_tweets, url, feed_title)
|
10
|
+
end
|
11
|
+
|
12
|
+
Twitter.transaction do
|
13
13
|
Twitter.delete_all()
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
new_tweets.each {|t| t.save}
|
15
|
+
p "Tweets saved: #{new_tweets.length}"
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def self.update_ncaa_twitter
|
20
20
|
new_tweets = []
|
21
|
-
|
21
|
+
|
22
22
|
config = SimpleConfig.for(:feeds)
|
23
|
-
config.twitter_feeds.each do |feed_title, url|
|
23
|
+
config.twitter_feeds.each do |feed_title, url|
|
24
24
|
parse_feed(new_tweets, url, feed_title)
|
25
25
|
end
|
26
|
-
|
27
|
-
ExternalFeed.find(:all, :conditions => ["content_type = ? and provider = ?", "twitter", "Sporting News"]).each do |feed_obj|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
parse_feed(new_tweets, feed_url, feed_name, feed_obj.team_id)
|
37
|
-
|
38
|
-
rescue ActiveRecord::RecordNotFound
|
39
|
-
p "--- Couldn't update feed, no matching team: #{feed_url}"
|
40
|
-
end
|
26
|
+
|
27
|
+
ExternalFeed.find(:all, :conditions => ["content_type = ? and provider = ?", "twitter", "Sporting News"]).each do |feed_obj|
|
28
|
+
feed_url = feed_obj.woven_feed_url
|
29
|
+
if SimpleConfig.for(:application).woven_feed_server != "woven.zumobi.net"
|
30
|
+
feed_url = feed_url.gsub("woven.zumobi.net", SimpleConfig.for(:application).woven_feed_server)
|
31
|
+
end
|
32
|
+
|
33
|
+
team_obj = Team.find(feed_obj.team_id)
|
34
|
+
feed_name = (team_obj.nil? ? "Unknown" : team_obj.city_name)
|
35
|
+
parse_feed(new_tweets, feed_url, feed_name, feed_obj.team_id)
|
41
36
|
end
|
42
|
-
|
37
|
+
|
43
38
|
Twitter.transaction do
|
44
39
|
Twitter.delete_all()
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
40
|
+
new_tweets.each {|t| t.save}
|
41
|
+
p "Tweets saved: #{new_tweets.length}"
|
42
|
+
end
|
43
|
+
|
49
44
|
rescue Exception => e
|
50
45
|
Zumobi::ExceptionHandler.error e
|
51
46
|
end
|
52
47
|
|
53
48
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
49
|
+
def self.parse_feed(new_tweets, url, feed_title, team_id=nil)
|
50
|
+
require 'open-uri'
|
51
|
+
p "Twitter - #{feed_title} - #{url}"
|
52
|
+
|
58
53
|
begin
|
59
54
|
open(url) do |file|
|
60
55
|
doc = Nokogiri::XML(file.read)
|
61
56
|
source = doc.xpath('/rss/channel/title').text
|
62
|
-
source = adjust_titles(source)
|
63
|
-
# this has to come after adjust_titles or it gomers it all up
|
64
57
|
source = source.gsub('Twitter', '').strip
|
58
|
+
source = title_changes(source)
|
65
59
|
|
66
60
|
if !doc.nil? && !source.nil?
|
67
61
|
doc.xpath('//item').each do |node|
|
@@ -77,15 +71,15 @@ class TwitterBuilder
|
|
77
71
|
t.contents = t.title
|
78
72
|
|
79
73
|
team_key = team_mapping(t.source)
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
elsif !Team.find_by_key(team_key).blank?
|
85
|
-
|
86
|
-
|
74
|
+
|
75
|
+
if !team_key.blank?
|
76
|
+
if Team.column_names.include?("tsn_key") && !Team.find_by_tsn_key(team_key).blank?
|
77
|
+
t.team_id = Team.find_by_tsn_key(team_key).id
|
78
|
+
elsif !Team.find_by_key(team_key).blank?
|
79
|
+
t.team_id = Team.find_by_key(team_key).id
|
80
|
+
end
|
87
81
|
end
|
88
|
-
|
82
|
+
|
89
83
|
new_tweets << t
|
90
84
|
end
|
91
85
|
end
|
@@ -93,40 +87,34 @@ class TwitterBuilder
|
|
93
87
|
rescue OpenURI::HTTPError => http_e
|
94
88
|
p 'unable to retrieve feed'
|
95
89
|
rescue EOFError
|
96
|
-
|
90
|
+
p 'connection error'
|
97
91
|
rescue Errno::ECONNRESET
|
98
|
-
|
92
|
+
p 'connection error'
|
99
93
|
rescue Errno::ECONNREFUSED
|
100
|
-
|
101
|
-
end
|
94
|
+
p 'connection error'
|
95
|
+
end
|
102
96
|
rescue Exception => e
|
103
97
|
Zumobi::ExceptionHandler.error e
|
104
98
|
end
|
105
99
|
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
def self.adjust_titles(title)
|
110
|
-
if title == 'Official NFL Twitter Feed'
|
111
|
-
return 'NFL'
|
112
|
-
elsif title == 'The Trenches Twitter'
|
113
|
-
return 'The Trenches'
|
114
|
-
else
|
115
|
-
return title
|
116
|
-
end
|
117
|
-
end
|
100
|
+
def self.title_changes(source)
|
101
|
+
titles = {'Official NFL Twitter Feed' => 'NFL',
|
102
|
+
'The Trenches Twitter' => 'The Trenches'}
|
118
103
|
|
104
|
+
return (titles[source].nil?) ? source : titles[source]
|
105
|
+
end
|
106
|
+
|
119
107
|
def self.add_hash_highlight(str)
|
120
108
|
formatted_text = []
|
121
109
|
each_word = str.split(' ')
|
122
|
-
each_word.each do |word|
|
110
|
+
each_word.each do |word|
|
123
111
|
if word[0,7] == "http://"
|
124
112
|
new_word = "<a href='#{word}'>#{word}</a>"
|
125
113
|
formatted_text << new_word
|
126
114
|
elsif word.include? "http://"
|
127
115
|
phrase = word
|
128
116
|
pieces = word.split("http://")
|
129
|
-
|
117
|
+
|
130
118
|
phrase = "#{pieces[0]} <a href='http://#{pieces[1]}'>http://#{pieces[1]}</a>"
|
131
119
|
formatted_text << phrase
|
132
120
|
else
|
@@ -168,7 +156,7 @@ class TwitterBuilder
|
|
168
156
|
'Carolina Panthers' => 'l.nfl.com-t.29',
|
169
157
|
'New Orleans Saints' => 'l.nfl.com-t.30',
|
170
158
|
'Tampa Bay Bucs' => 'l.nfl.com-t.26',
|
171
|
-
'Arizona Diamondbacks' => 'l.mlb.com-t.26',
|
159
|
+
'Arizona Diamondbacks' => 'l.mlb.com-t.26',
|
172
160
|
'Atlanta Braves' => 'l.mlb.com-t.15',
|
173
161
|
'Baltimore Orioles' => 'l.mlb.com-t.1',
|
174
162
|
'Boston Red Sox' => 'l.mlb.com-t.2',
|
@@ -180,7 +168,7 @@ class TwitterBuilder
|
|
180
168
|
'Detroit Tigers' => 'l.mlb.com-t.8',
|
181
169
|
'Miami Marlins' => 'l.mlb.com-t.16',
|
182
170
|
'Houston Astros' => 'l.mlb.com-t.22',
|
183
|
-
'Kansas City Royals' => 'l.mlb.com-t.9',
|
171
|
+
'Kansas City Royals' => 'l.mlb.com-t.9',
|
184
172
|
'Los Angeles Angels' => 'l.mlb.com-t.11',
|
185
173
|
'Los Angeles Dodgers' => 'l.mlb.com-t.28',
|
186
174
|
'Milwaukee Brewers' => 'l.mlb.com-t.23',
|
@@ -189,7 +177,7 @@ class TwitterBuilder
|
|
189
177
|
'New York Yankees' => 'l.mlb.com-t.3',
|
190
178
|
'Oakland Athletics' => 'l.mlb.com-t.12',
|
191
179
|
'Philadelphia Phillies' => 'l.mlb.com-t.19',
|
192
|
-
'Pittsburgh Pirates' => 'l.mlb.com-t.24',
|
180
|
+
'Pittsburgh Pirates' => 'l.mlb.com-t.24',
|
193
181
|
'San Diego Padres' => 'l.mlb.com-t.29',
|
194
182
|
'San Francisco Giants' => 'l.mlb.com-t.30',
|
195
183
|
'Seattle Mariners' => 'l.mlb.com-t.13',
|
@@ -198,7 +186,7 @@ class TwitterBuilder
|
|
198
186
|
'Texas Rangers' => 'l.mlb.com-t.14',
|
199
187
|
'Toronto Blue Jays' => 'l.mlb.com-t.5',
|
200
188
|
'Washington Nationals' => 'l.mlb.com-t.17',
|
201
|
-
'Boston Celtics' => 'l.nba.com-t.1',
|
189
|
+
'Boston Celtics' => 'l.nba.com-t.1',
|
202
190
|
'Brooklyn Nets' => 'l.nba.com-t.3',
|
203
191
|
'New York Knicks' => 'l.nba.com-t.4',
|
204
192
|
'Philadelphia 76ers' => 'l.nba.com-t.6',
|
@@ -211,7 +199,7 @@ class TwitterBuilder
|
|
211
199
|
'Atlanta Hawks' => 'l.nba.com-t.8',
|
212
200
|
'Charlotte Bobcats' => 'l.nba.com-t.32',
|
213
201
|
'Miami Heat' => 'l.nba.com-t.2',
|
214
|
-
'Orlando Magic' => 'l.nba.com-t.5',
|
202
|
+
'Orlando Magic' => 'l.nba.com-t.5',
|
215
203
|
'Washington Wizards' => 'l.nba.com-t.7',
|
216
204
|
'Denver Nuggets' => 'l.nba.com-t.17',
|
217
205
|
'Minnesota Timberwolves' => 'l.nba.com-t.20',
|
@@ -220,7 +208,7 @@ class TwitterBuilder
|
|
220
208
|
'Utah Jazz' => 'l.nba.com-t.22',
|
221
209
|
'Golden State Warriors' => 'l.nba.com-t.23',
|
222
210
|
'Los Angeles Clippers' => 'l.nba.com-t.24',
|
223
|
-
'Los Angeles Lakers' => 'l.nba.com-t.25',
|
211
|
+
'Los Angeles Lakers' => 'l.nba.com-t.25',
|
224
212
|
'Phoenix Suns' => 'l.nba.com-t.26',
|
225
213
|
'Sacramento Kings' => 'l.nba.com-t.28',
|
226
214
|
'Dallas Mavericks' => 'l.nba.com-t.16',
|
@@ -233,4 +221,4 @@ class TwitterBuilder
|
|
233
221
|
end
|
234
222
|
|
235
223
|
end
|
236
|
-
end
|
224
|
+
end
|
data/lib/sports_db/version.rb
CHANGED
metadata
CHANGED
@@ -1,55 +1,63 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: sports_db
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 1
|
9
|
+
- 0
|
10
|
+
version: 0.1.0
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Alx Dark
|
9
14
|
autorequire:
|
10
15
|
bindir: bin
|
11
16
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
17
|
+
|
18
|
+
date: 2013-05-16 00:00:00 -06:00
|
19
|
+
default_executable:
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
15
22
|
name: rails
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
|
-
requirements:
|
19
|
-
- - ~>
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version: 3.2.13
|
22
|
-
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
|
-
requirements:
|
26
|
+
requirements:
|
27
27
|
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 21
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 2
|
33
|
+
- 13
|
29
34
|
version: 3.2.13
|
30
|
-
|
35
|
+
type: :runtime
|
36
|
+
version_requirements: *id001
|
37
|
+
- !ruby/object:Gem::Dependency
|
31
38
|
name: sqlite3
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: '0'
|
38
|
-
type: :development
|
39
39
|
prerelease: false
|
40
|
-
|
40
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
|
-
requirements:
|
43
|
-
- -
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
|
42
|
+
requirements:
|
43
|
+
- - ">="
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
hash: 3
|
46
|
+
segments:
|
47
|
+
- 0
|
48
|
+
version: "0"
|
49
|
+
type: :development
|
50
|
+
version_requirements: *id002
|
46
51
|
description: Shared code for the Zumobi sports applications
|
47
|
-
email:
|
48
|
-
-
|
52
|
+
email:
|
53
|
+
- "alx.dark@zumobi.com\t"
|
49
54
|
executables: []
|
55
|
+
|
50
56
|
extensions: []
|
57
|
+
|
51
58
|
extra_rdoc_files: []
|
52
|
-
|
59
|
+
|
60
|
+
files:
|
53
61
|
- app/assets/javascripts/clients/android/client.js
|
54
62
|
- app/assets/javascripts/clients/ios/client.js
|
55
63
|
- app/assets/javascripts/core/Application.js
|
@@ -162,31 +170,41 @@ files:
|
|
162
170
|
- test/dummy/script/rails
|
163
171
|
- test/sports_db_test.rb
|
164
172
|
- test/test_helper.rb
|
173
|
+
has_rdoc: true
|
165
174
|
homepage: http://www.zumobi.com/
|
166
175
|
licenses: []
|
176
|
+
|
167
177
|
post_install_message:
|
168
178
|
rdoc_options: []
|
169
|
-
|
179
|
+
|
180
|
+
require_paths:
|
170
181
|
- lib
|
171
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
182
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
172
183
|
none: false
|
173
|
-
requirements:
|
174
|
-
- -
|
175
|
-
- !ruby/object:Gem::Version
|
176
|
-
|
177
|
-
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
hash: 3
|
188
|
+
segments:
|
189
|
+
- 0
|
190
|
+
version: "0"
|
191
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
178
192
|
none: false
|
179
|
-
requirements:
|
180
|
-
- -
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
|
193
|
+
requirements:
|
194
|
+
- - ">="
|
195
|
+
- !ruby/object:Gem::Version
|
196
|
+
hash: 3
|
197
|
+
segments:
|
198
|
+
- 0
|
199
|
+
version: "0"
|
183
200
|
requirements: []
|
201
|
+
|
184
202
|
rubyforge_project:
|
185
|
-
rubygems_version: 1.
|
203
|
+
rubygems_version: 1.6.2
|
186
204
|
signing_key:
|
187
205
|
specification_version: 3
|
188
206
|
summary: Shared code for the Zumobi sports applications
|
189
|
-
test_files:
|
207
|
+
test_files:
|
190
208
|
- test/dummy/app/assets/javascripts/application.js
|
191
209
|
- test/dummy/app/assets/stylesheets/application.css
|
192
210
|
- test/dummy/app/controllers/application_controller.rb
|