appstats 0.22.5 → 0.22.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- appstats (0.22.5)
4
+ appstats (0.22.6)
5
5
  daemons
6
6
  net-scp
7
7
  rails (>= 2.3.0)
@@ -167,6 +167,7 @@ DEPENDENCIES
167
167
  guard-rspec
168
168
  metric_fu
169
169
  mysql
170
+ rake
170
171
  rb-fsevent
171
172
  rspec
172
173
  standalone_migrations
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- appstats (0.22.5)
4
+ appstats (0.22.6)
5
5
  daemons
6
6
  net-scp
7
7
  rails (>= 2.3.0)
@@ -18,6 +18,7 @@ Gem::Specification.new do |s|
18
18
  s.add_dependency('daemons')
19
19
  s.add_dependency('net-scp')
20
20
 
21
+ s.add_development_dependency('rake')
21
22
  s.add_development_dependency('rspec')
22
23
  s.add_development_dependency('ZenTest')
23
24
  s.add_development_dependency('standalone_migrations')
@@ -3,11 +3,11 @@ class AddAppstatsResultsLatestFlag < ActiveRecord::Migration
3
3
  add_column :appstats_results, :is_latest, :boolean
4
4
  add_index :appstats_results, :is_latest
5
5
 
6
- Appstats.connection.update('update appstats_results set is_latest = false')
7
- all = Appstats.connection.select_all("select concat(id,' ',max(updated_at)) as id_and_date from appstats_results group by query")
6
+ ActiveRecord::Base.connection.update('update appstats_results set is_latest = false')
7
+ all = ActiveRecord::Base.connection.select_all("select concat(id,' ',max(updated_at)) as id_and_date from appstats_results group by query")
8
8
  return if all.empty?
9
9
  ids = all.each.collect { |e| e["id_and_date"].split[0] }.compact
10
- Appstats.connection.update("update appstats_results set is_latest = '1' where id in (#{ids.join(',')})")
10
+ ActiveRecord::Base.connection.update("update appstats_results set is_latest = '1' where id in (#{ids.join(',')})")
11
11
  end
12
12
 
13
13
  def self.down
@@ -39,8 +39,12 @@ unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:
39
39
  end
40
40
 
41
41
  desc "Run Rcov"
42
- RSpec::Core::RakeTask.new(:rcov) do |t|
42
+ task :rcov do
43
43
  system "mkdir -p ../public/coverage" unless File.exists?("../public/coverage")
44
+ Rake::Task['ci:rcov_run'].invoke
45
+ end
46
+
47
+ RSpec::Core::RakeTask.new(:rcov_run) do |t|
44
48
  t.pattern = "./spec/**/*spec.rb"
45
49
  t.rcov = true
46
50
  t.rcov_opts = %w{--exclude osx\/objc,gems\/,spec\/,features\/ --output ../public/coverage}
@@ -48,12 +52,12 @@ unless ARGV.any? {|a| a =~ /^gems/} # Don't load anything when running the gems:
48
52
 
49
53
  desc "The Build Succeeded, so tell our monitoring service"
50
54
  task :success do
51
- FileUtils.cp '/home/deployer/monitor/config/statuses/Appstats.cc.success', '/home/deployer/monitor/log/Appstats.cc', :preserve => false
55
+ system 'echo "Appstats succeeded, http://cc.cenx.localnet" > /home/deployer/monitor/log/Appstats.cc'
52
56
  end
53
57
 
54
58
  desc "The Build failed, so tell our monitoring service"
55
59
  task :failure do
56
- FileUtils.cp '/home/deployer/monitor/config/statuses/Appstats.cc.failure', '/home/deployer/monitor/log/Appstats.cc', :preserve => false
60
+ system "curl http://cc.cenx.localnet/appstats_local > /home/deployer/monitor/log/Appstats.cc"
57
61
  end
58
62
 
59
63
  namespace :db do
@@ -278,8 +278,13 @@ module Appstats
278
278
  break if @tokenize_regex.blank?
279
279
  m = current_text.match(/^(#{@tokenize_regex_no_spaces})(.*)$/im)
280
280
  break if m.nil? || m[1].blank?
281
- add_constant(m[1])
281
+ constant = m[1]
282
282
  current_text = m[2]
283
+ if (!current_text.match(/^[^\s]/).nil? && !constant.match(/^[a-zA-Z]*$/).nil?)
284
+ current_text = m[0]
285
+ break
286
+ end
287
+ add_constant(constant)
283
288
  current_text.strip! unless current_text.nil?
284
289
  end
285
290
  current_text
@@ -1,3 +1,3 @@
1
1
  module Appstats
2
- VERSION = "0.22.5"
2
+ VERSION = "0.22.6"
3
3
  end
@@ -193,18 +193,18 @@ module Appstats
193
193
  end
194
194
 
195
195
  it "should understand an entry without contexts" do
196
- entry = Entry.create_from_logger_string("0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search")
196
+ entry = Entry.create_from_logger_string("0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search")
197
197
  Entry.count.should == @before_count + 1
198
198
  entry.action.should == "address_search"
199
- entry.raw_entry.should == "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search"
199
+ entry.raw_entry.should == "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search"
200
200
  entry.occurred_at.should == Time.parse("2010-09-21 23:15:20")
201
201
  end
202
202
 
203
203
  it "should understand contexts" do
204
- entry = Entry.create_from_logger_string("0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Market : server=Live")
204
+ entry = Entry.create_from_logger_string("0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Market : server=Live")
205
205
  Entry.count.should == @before_count + 1
206
206
  entry.action.should == "address_filter"
207
- entry.raw_entry.should == "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Market : server=Live"
207
+ entry.raw_entry.should == "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Market : server=Live"
208
208
  entry.occurred_at.should == Time.parse("2010-09-21 23:15:20")
209
209
  entry.contexts.size.should == 2
210
210
  entry.contexts[0].context_key = "app_name"
@@ -214,10 +214,10 @@ module Appstats
214
214
  end
215
215
 
216
216
  it "should handle 'action' as a context" do
217
- entry = Entry.create_from_logger_string('0.22.5 setup[:,=,-n] 2011-02-24 12:59:57 action=page-view : action=save_ovcen : app_name=cdb')
217
+ entry = Entry.create_from_logger_string('0.22.6 setup[:,=,-n] 2011-02-24 12:59:57 action=page-view : action=save_ovcen : app_name=cdb')
218
218
  Entry.count.should == @before_count + 1
219
219
  entry.action.should == "page-view"
220
- entry.raw_entry.should == "0.22.5 setup[:,=,-n] 2011-02-24 12:59:57 action=page-view : action=save_ovcen : app_name=cdb"
220
+ entry.raw_entry.should == "0.22.6 setup[:,=,-n] 2011-02-24 12:59:57 action=page-view : action=save_ovcen : app_name=cdb"
221
221
  entry.occurred_at.should == Time.parse("2011-02-24 12:59:57")
222
222
  entry.contexts.size.should == 2
223
223
  entry.contexts[0].context_key = "action"
@@ -228,10 +228,10 @@ module Appstats
228
228
  end
229
229
 
230
230
  it "should handle multiple of the same 'context'" do
231
- entry = Entry.create_from_logger_string('0.22.5 setup[:,=,-n] 2011-02-24 12:59:57 action=page-view : app_name=market : app_name=cdb')
231
+ entry = Entry.create_from_logger_string('0.22.6 setup[:,=,-n] 2011-02-24 12:59:57 action=page-view : app_name=market : app_name=cdb')
232
232
  Entry.count.should == @before_count + 1
233
233
  entry.action.should == "page-view"
234
- entry.raw_entry.should == "0.22.5 setup[:,=,-n] 2011-02-24 12:59:57 action=page-view : app_name=market : app_name=cdb"
234
+ entry.raw_entry.should == "0.22.6 setup[:,=,-n] 2011-02-24 12:59:57 action=page-view : app_name=market : app_name=cdb"
235
235
  entry.occurred_at.should == Time.parse("2011-02-24 12:59:57")
236
236
  entry.contexts.size.should == 2
237
237
  entry.contexts[0].context_key = "app_name"
@@ -122,12 +122,12 @@ module Appstats
122
122
 
123
123
  it "should accept numbers" do
124
124
  Appstats::Logger.entry(5, :blah => 6)
125
- Appstats::Logger.raw_read.should == ["0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=5 : blah=6"]
125
+ Appstats::Logger.raw_read.should == ["0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=5 : blah=6"]
126
126
  end
127
127
 
128
128
  it "should accept arrays" do
129
129
  Appstats::Logger.entry('search', :provider => [ 'one', 'two' ])
130
- Appstats::Logger.raw_read.should == ["0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=search : provider=one : provider=two"]
130
+ Appstats::Logger.raw_read.should == ["0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=search : provider=one : provider=two"]
131
131
  end
132
132
 
133
133
 
@@ -137,7 +137,7 @@ module Appstats
137
137
 
138
138
  it "should look similar to regular entry" do
139
139
  Appstats::Logger.exception_entry(RuntimeError.new("blah"),:on => "login")
140
- Appstats::Logger.raw_read.should == ["0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=appstats-exception : error=blah : on=login"]
140
+ Appstats::Logger.raw_read.should == ["0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=appstats-exception : error=blah : on=login"]
141
141
  end
142
142
 
143
143
  end
@@ -154,47 +154,47 @@ module Appstats
154
154
 
155
155
  it "should handle a statistics entry" do
156
156
  expected = { :action => "address_search", :timestamp => "2010-09-21 23:15:20" }
157
- actual = Appstats::Logger.entry_to_hash("0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search")
157
+ actual = Appstats::Logger.entry_to_hash("0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search")
158
158
  actual.should == expected
159
159
  end
160
160
 
161
161
  it "should handle contexts" do
162
162
  expected = { :action => "address_filter", :timestamp => "2010-09-21 23:15:20", :server => "Live", :app_name => 'Market' }
163
- actual = Appstats::Logger.entry_to_hash("0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Market : server=Live")
163
+ actual = Appstats::Logger.entry_to_hash("0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Market : server=Live")
164
164
  actual.should == expected
165
165
  end
166
166
 
167
167
  it "should handle multiple actions" do
168
168
  expected = { :action => ["address_filter", "blah"], :timestamp => "2010-09-21 23:15:20", :server => "Live", :app_name => 'Market' }
169
- actual = Appstats::Logger.entry_to_hash("0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : action=blah : app_name=Market : server=Live")
169
+ actual = Appstats::Logger.entry_to_hash("0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : action=blah : app_name=Market : server=Live")
170
170
  actual.should == expected
171
171
  end
172
172
 
173
173
  it "should handle multiple of same context" do
174
174
  expected = { :action => "address_filter", :timestamp => "2010-09-21 23:15:20", :server => "Live", :app_name => ['Sin','Market'] }
175
- actual = Appstats::Logger.entry_to_hash("0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Sin : app_name=Market : server=Live")
175
+ actual = Appstats::Logger.entry_to_hash("0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Sin : app_name=Market : server=Live")
176
176
  actual.should == expected
177
177
  end
178
178
 
179
179
  it "should handle no actions" do
180
180
  expected = { :action => "UNKNOWN_ACTION", :timestamp => "2010-09-21 23:15:20", :server => "Live", :app_name => 'Market' }
181
- actual = Appstats::Logger.entry_to_hash("0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 app_name=Market : server=Live")
181
+ actual = Appstats::Logger.entry_to_hash("0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 app_name=Market : server=Live")
182
182
  actual.should == expected
183
183
  end
184
184
 
185
185
  it "should handle actions with the delimiter (and change the delimiter)" do
186
186
  expected = { :action => "address:=search-n", :timestamp => "2010-09-21 23:15:20" }
187
- actual = Appstats::Logger.entry_to_hash("0.22.5 setup[::,==,--n] 2010-09-21 23:15:20 action==address:=search-n")
187
+ actual = Appstats::Logger.entry_to_hash("0.22.6 setup[::,==,--n] 2010-09-21 23:15:20 action==address:=search-n")
188
188
  actual.should == expected
189
189
 
190
190
  expected = { :action => "address::search==--n", :timestamp => "2010-09-21 23:15:20" }
191
- actual = Appstats::Logger.entry_to_hash("0.22.5 setup[:::,===,---n] 2010-09-21 23:15:20 action===address::search==--n")
191
+ actual = Appstats::Logger.entry_to_hash("0.22.6 setup[:::,===,---n] 2010-09-21 23:15:20 action===address::search==--n")
192
192
  actual.should == expected
193
193
  end
194
194
 
195
195
  it "should handle contexts with the delimiter (and change the delimiter)" do
196
196
  expected = { :action => "address", :timestamp => "2010-09-21 23:15:20", :server => "market:eval=-n" }
197
- actual = Appstats::Logger.entry_to_hash("0.22.5 setup[::,==,--n] 2010-09-21 23:15:20 action==address :: server==market:eval=-n")
197
+ actual = Appstats::Logger.entry_to_hash("0.22.6 setup[::,==,--n] 2010-09-21 23:15:20 action==address :: server==market:eval=-n")
198
198
  actual.should == expected
199
199
  end
200
200
 
@@ -203,66 +203,66 @@ module Appstats
203
203
  describe "#entry_to_s" do
204
204
 
205
205
  it "should handle a statistics entry" do
206
- expected = "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search"
206
+ expected = "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search"
207
207
  actual = Appstats::Logger.entry_to_s("address_search")
208
208
  actual.should == expected
209
209
  end
210
210
 
211
211
  it "should handle numbers" do
212
- expected = "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=1 : note=2.2"
212
+ expected = "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=1 : note=2.2"
213
213
  actual = Appstats::Logger.entry_to_s(1,:note => 2.2)
214
214
  actual.should == expected
215
215
  end
216
216
 
217
217
  it "should handle default contexts" do
218
218
  Appstats::Logger.default_contexts[:app_name] = "market"
219
- expected = "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search : app_name=market"
219
+ expected = "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search : app_name=market"
220
220
  actual = Appstats::Logger.entry_to_s("address_search")
221
221
  actual.should == expected
222
222
  end
223
223
 
224
224
  it "should handle contexts (and sort them by symbol)" do
225
- expected = "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Market : server=Live"
225
+ expected = "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_filter : app_name=Market : server=Live"
226
226
  actual = Appstats::Logger.entry_to_s("address_filter", { :server => "Live", :app_name => 'Market' })
227
227
  actual.should == expected
228
228
  end
229
229
 
230
230
  it "should handle actions with the delimiter (and change the delimiter)" do
231
- expected = "0.22.5 setup[::,==,--n] 2010-09-21 23:15:20 action==address:=search-n"
231
+ expected = "0.22.6 setup[::,==,--n] 2010-09-21 23:15:20 action==address:=search-n"
232
232
  actual = Appstats::Logger.entry_to_s("address:=search-n")
233
233
  actual.should == expected
234
234
 
235
- expected = "0.22.5 setup[:::,===,---n] 2010-09-21 23:15:20 action===address::search==--n"
235
+ expected = "0.22.6 setup[:::,===,---n] 2010-09-21 23:15:20 action===address::search==--n"
236
236
  actual = Appstats::Logger.entry_to_s("address::search==--n")
237
237
  actual.should == expected
238
238
  end
239
239
 
240
240
  it "should handle contexts with the delimiter (and change the delimiter)" do
241
- expected = "0.22.5 setup[::,==,--n] 2010-09-21 23:15:20 action==address :: server==market:eval=-n"
241
+ expected = "0.22.6 setup[::,==,--n] 2010-09-21 23:15:20 action==address :: server==market:eval=-n"
242
242
  actual = Appstats::Logger.entry_to_s("address", :server => 'market:eval=-n')
243
243
  actual.should == expected
244
244
  end
245
245
 
246
246
  it "should ignore spaces" do
247
- expected = "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address search"
247
+ expected = "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address search"
248
248
  actual = Appstats::Logger.entry_to_s("address search")
249
249
  actual.should == expected
250
250
  end
251
251
 
252
252
  it "should convert newlines in action" do
253
- expected = "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_-nsearch"
253
+ expected = "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_-nsearch"
254
254
  actual = Appstats::Logger.entry_to_s("address_\nsearch")
255
255
  actual.should == expected
256
256
  end
257
257
 
258
258
  it "should convert newlines in context" do
259
- expected = "0.22.5 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search : blah=some-nlong-nstatement"
259
+ expected = "0.22.6 setup[:,=,-n] 2010-09-21 23:15:20 action=address_search : blah=some-nlong-nstatement"
260
260
  actual = Appstats::Logger.entry_to_s("address_search",:blah => "some\nlong\nstatement")
261
261
  actual.should == expected
262
262
  end
263
263
 
264
264
  it "should convert newlines based on the delimiter" do
265
- expected = "0.22.5 setup[::,==,--n] 2010-09-21 23:15:20 action==address:=--nsearch-n"
265
+ expected = "0.22.6 setup[::,==,--n] 2010-09-21 23:15:20 action==address:=--nsearch-n"
266
266
  actual = Appstats::Logger.entry_to_s("address:=\nsearch-n")
267
267
  actual.should == expected
268
268
  end
@@ -31,13 +31,13 @@ module Appstats
31
31
  parser.constants.should == ["\\s+OR(\\s|$)"]
32
32
  parser.constants_no_spaces.should == ["OR"]
33
33
  end
34
-
34
+
35
35
  it "should tokenize multi words" do
36
36
  parser = Parser.new(:rules => ":name or :bust", :tokenize => "a 'not a'", :repeating => true)
37
37
  parser.tokenize.should == ["\\s+A(\\s|$)","\\s+NOT\\s+A(\\s|$)"]
38
38
  parser.tokenize_no_spaces.should == ["A","NOT\\s+A"]
39
39
  end
40
-
40
+
41
41
 
42
42
  it "should espace tokens as required" do
43
43
  parser = Parser.new(:tokenize => "( ) abc |")
@@ -55,7 +55,7 @@ module Appstats
55
55
  it "should end on constant if tokens present" do
56
56
  Parser.new(:rules => ":name", :tokenize => ")").rules.should == [ { :rule => :name, :stop => :end } ]
57
57
  end
58
-
58
+
59
59
  it "should handle one variable" do
60
60
  Parser.new(:rules => ":name").rules.should == [ { :rule => :name, :stop => :end } ]
61
61
  end
@@ -208,11 +208,18 @@ module Appstats
208
208
  @parser.parse_word(" aa bbb ","bbb",true).should == ["aa", "bbb"]
209
209
  end
210
210
 
211
- it "should remove tokens from the beginning" do
211
+ it "should remove tokens from the beginning (if non alphabet)" do
212
+ parser = Appstats::Parser.new(:tokenize => "xx1 yy1 zz1")
213
+ parser.parse_word(" xx1 yy1 zz1 zz1aa bbb ",:space).should == ["aa", "bbb"]
214
+ parser.raw_results.should == [ "xx1", "yy1", "zz1", "zz1" ]
215
+ end
216
+
217
+ it "should not remove tokens from the beginning (if alphabet)" do
212
218
  parser = Appstats::Parser.new(:tokenize => "xx yy zz")
213
- parser.parse_word(" xx yy zz zzaa bbb ",:space).should == ["aa", "bbb"]
214
- parser.raw_results.should == [ "xx", "yy", "zz", "zz" ]
219
+ parser.parse_word(" xx yy zz zzaa bbb ",:space).should == ["zzaa", "bbb"]
220
+ parser.raw_results.should == [ "xx", "yy", "zz" ]
215
221
  end
222
+
216
223
 
217
224
  it "should remove tokens from the end (:space)" do
218
225
  parser = Parser.new(:tokenize => "xx yy zz")
@@ -361,19 +368,19 @@ module Appstats
361
368
  parser.parse("( ( a = b ) )").should == true
362
369
  parser.raw_results.should == [ "(", "(", { :context_key => "a"}, "=", { :context_value => "b"}, ")", ")" ]
363
370
  end
364
-
371
+
365
372
  it "should handle tokens with spaces" do
366
373
  parser = Parser.new(:rules => ":context", :repeating => true, :tokenize => "like 'not like'")
367
374
  parser.parse("a not like b").should == true
368
375
  parser.raw_results.should == [ { :context => "a"}, "not like", { :context => "b"} ]
369
376
  end
370
-
377
+
371
378
  it "should handle tokens with many spaces" do
372
379
  parser = Parser.new(:rules => ":context", :repeating => true, :tokenize => "like 'not like'")
373
380
  parser.parse("a not like b").should == true
374
381
  parser.raw_results.should == [ { :context => "a"}, "not like", { :context => "b"} ]
375
382
  end
376
-
383
+
377
384
 
378
385
  it "should tokenize letters only if spaces between them" do
379
386
  parser = Appstats::Parser.new(:rules => ":one :two", :tokenize => "( aa a1 )")
@@ -422,6 +429,11 @@ module Appstats
422
429
  parser.results.should == {:operation => "#", :action => "appstats_queries", :date => nil, :host => nil, :group_by => nil, :contexts => "action = abc AND contexts = 'def' || group_by like 'hik'" }
423
430
  end
424
431
 
432
+ it "should handle 'in' in context data" do
433
+ parser = Appstats::Parser.new(:rules => ":context", :repeating => true, :tokenize => "( ) and or || && = <= >= <> < > != like 'not like' in 'not in'")
434
+ parser.parse("invisible_member_names = Time Warner Cable")
435
+ parser.raw_results.should == [ {:context => "invisible_member_names"}, "=", {:context=>"Time Warner Cable"} ]
436
+ end
425
437
 
426
438
  end
427
439
 
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: appstats
3
3
  version: !ruby/object:Gem::Version
4
- hash: 77
4
+ hash: 75
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 22
9
- - 5
10
- version: 0.22.5
9
+ - 6
10
+ version: 0.22.6
11
11
  platform: ruby
12
12
  authors:
13
13
  - Andrew Forward
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2011-07-26 00:00:00 Z
18
+ date: 2011-08-22 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
21
  name: rails
@@ -62,7 +62,7 @@ dependencies:
62
62
  type: :runtime
63
63
  version_requirements: *id003
64
64
  - !ruby/object:Gem::Dependency
65
- name: rspec
65
+ name: rake
66
66
  prerelease: false
67
67
  requirement: &id004 !ruby/object:Gem::Requirement
68
68
  none: false
@@ -76,7 +76,7 @@ dependencies:
76
76
  type: :development
77
77
  version_requirements: *id004
78
78
  - !ruby/object:Gem::Dependency
79
- name: ZenTest
79
+ name: rspec
80
80
  prerelease: false
81
81
  requirement: &id005 !ruby/object:Gem::Requirement
82
82
  none: false
@@ -90,7 +90,7 @@ dependencies:
90
90
  type: :development
91
91
  version_requirements: *id005
92
92
  - !ruby/object:Gem::Dependency
93
- name: standalone_migrations
93
+ name: ZenTest
94
94
  prerelease: false
95
95
  requirement: &id006 !ruby/object:Gem::Requirement
96
96
  none: false
@@ -104,7 +104,7 @@ dependencies:
104
104
  type: :development
105
105
  version_requirements: *id006
106
106
  - !ruby/object:Gem::Dependency
107
- name: mysql
107
+ name: standalone_migrations
108
108
  prerelease: false
109
109
  requirement: &id007 !ruby/object:Gem::Requirement
110
110
  none: false
@@ -118,7 +118,7 @@ dependencies:
118
118
  type: :development
119
119
  version_requirements: *id007
120
120
  - !ruby/object:Gem::Dependency
121
- name: metric_fu
121
+ name: mysql
122
122
  prerelease: false
123
123
  requirement: &id008 !ruby/object:Gem::Requirement
124
124
  none: false
@@ -132,7 +132,7 @@ dependencies:
132
132
  type: :development
133
133
  version_requirements: *id008
134
134
  - !ruby/object:Gem::Dependency
135
- name: guard-rspec
135
+ name: metric_fu
136
136
  prerelease: false
137
137
  requirement: &id009 !ruby/object:Gem::Requirement
138
138
  none: false
@@ -146,7 +146,7 @@ dependencies:
146
146
  type: :development
147
147
  version_requirements: *id009
148
148
  - !ruby/object:Gem::Dependency
149
- name: autotest-fsevent
149
+ name: guard-rspec
150
150
  prerelease: false
151
151
  requirement: &id010 !ruby/object:Gem::Requirement
152
152
  none: false
@@ -160,7 +160,7 @@ dependencies:
160
160
  type: :development
161
161
  version_requirements: *id010
162
162
  - !ruby/object:Gem::Dependency
163
- name: rb-fsevent
163
+ name: autotest-fsevent
164
164
  prerelease: false
165
165
  requirement: &id011 !ruby/object:Gem::Requirement
166
166
  none: false
@@ -173,6 +173,20 @@ dependencies:
173
173
  version: "0"
174
174
  type: :development
175
175
  version_requirements: *id011
176
+ - !ruby/object:Gem::Dependency
177
+ name: rb-fsevent
178
+ prerelease: false
179
+ requirement: &id012 !ruby/object:Gem::Requirement
180
+ none: false
181
+ requirements:
182
+ - - ">="
183
+ - !ruby/object:Gem::Version
184
+ hash: 3
185
+ segments:
186
+ - 0
187
+ version: "0"
188
+ type: :development
189
+ version_requirements: *id012
176
190
  description: Provide usage statistics about how your application is being used
177
191
  email:
178
192
  - aforward@gmail.com
@@ -315,7 +329,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
315
329
  requirements: []
316
330
 
317
331
  rubyforge_project:
318
- rubygems_version: 1.8.5
332
+ rubygems_version: 1.8.6
319
333
  signing_key:
320
334
  specification_version: 3
321
335
  summary: Provide usage statistics about how your application is being used