statlysis 0.0.1 → 0.0.2

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.
Files changed (46) hide show
  1. data/.gitignore +3 -0
  2. data/Guardfile +14 -0
  3. data/README.markdown +77 -27
  4. data/Rakefile +1 -1
  5. data/lib/statlysis.rb +59 -101
  6. data/lib/statlysis/clock.rb +3 -3
  7. data/lib/statlysis/common.rb +4 -16
  8. data/lib/statlysis/configuration.rb +97 -2
  9. data/lib/statlysis/constants.rb +10 -0
  10. data/lib/statlysis/cron.rb +40 -42
  11. data/lib/statlysis/cron/count.rb +16 -58
  12. data/lib/statlysis/cron/count/dimensions.rb +7 -0
  13. data/lib/statlysis/cron/count/timely.rb +63 -0
  14. data/lib/statlysis/cron/top.rb +4 -104
  15. data/lib/statlysis/cron/top/hotest_items.rb +47 -0
  16. data/lib/statlysis/cron/top/lastest_visits.rb +53 -0
  17. data/lib/statlysis/cron_set.rb +26 -0
  18. data/lib/statlysis/dataset.rb +6 -0
  19. data/lib/statlysis/javascript/count.rb +3 -3
  20. data/lib/statlysis/multiple_dataset.rb +69 -0
  21. data/lib/statlysis/multiple_dataset/active_record.rb +36 -0
  22. data/lib/statlysis/multiple_dataset/mongoid.rb +54 -0
  23. data/lib/statlysis/rake.rb +6 -5
  24. data/lib/statlysis/similar.rb +11 -11
  25. data/lib/statlysis/timeseries.rb +12 -9
  26. data/lib/statlysis/utils.rb +40 -0
  27. data/statlysis.gemspec +13 -3
  28. data/test/config/database.yml +9 -0
  29. data/test/config/mongoid.yml +36 -0
  30. data/test/data/.gitkeep +0 -0
  31. data/test/data/code_gists_20130724.csv +1459 -0
  32. data/test/helper.rb +41 -3
  33. data/test/migrate/1_active_record.rb +8 -0
  34. data/test/models/.gitkeep +0 -0
  35. data/test/models/code_gist.rb +5 -0
  36. data/test/models/eoe_log.rb +53 -0
  37. data/test/test_daily_count.rb +22 -0
  38. data/test/test_mapreduce.rb +0 -13
  39. data/test/test_single_log_in_multiple_collections.rb +22 -0
  40. data/test/test_statlysis.rb +5 -50
  41. data/test/test_timeseries.rb +46 -0
  42. metadata +133 -12
  43. data/Gemfile.lock +0 -110
  44. data/LICENSE.txt +0 -20
  45. data/test/models/company.rb +0 -12
  46. data/test/models/employee.rb +0 -14
data/test/helper.rb CHANGED
@@ -1,3 +1,4 @@
1
+ require File.join(ENV['HOME'], 'utils/ruby/irb') rescue nil
1
2
  require 'rubygems'
2
3
  require 'bundler'
3
4
  begin
@@ -9,9 +10,46 @@ rescue Bundler::BundlerError => e
9
10
  end
10
11
  require 'test/unit'
11
12
 
12
- $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
13
- $LOAD_PATH.unshift(File.dirname(__FILE__))
13
+ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), '..', 'lib')
14
+ $LOAD_PATH.unshift File.dirname(__FILE__) # test dirs
15
+
16
+ # load mongoid setup
17
+ require 'mongoid'
18
+ Mongoid.load!(File.expand_path("../config/mongoid.yml", __FILE__), :production)
19
+ Mongoid.default_session.collections.select {|c| c.name !~ /system/ }.each(&:drop) # delete lastest data
20
+
14
21
  require 'statlysis'
15
22
 
16
- class Test::Unit::TestCase
23
+ # load rails
24
+ def Rails.root; Pathname.new(File.expand_path('../.', __FILE__)) end
25
+ require 'sqlite3'
26
+
27
+ # load ActiveRecord setup
28
+ Statlysis.set_database :statlysis
29
+ Statlysis.config.is_skip_database_index = true
30
+ ActiveRecord::Base.establish_connection(Statlysis.config.database_opts.merge("adapter" => "sqlite3"))
31
+ Dir[File.expand_path("../migrate/*.rb", __FILE__).to_s].each { |f| require f }
32
+ Dir[File.expand_path("../models/*.rb", __FILE__).to_s].each { |f| require f }
33
+
34
+ # load basic test data
35
+ # copied from http://stackoverflow.com/questions/4410794/ruby-on-rails-import-data-from-a-csv-file/4410880#4410880
36
+ require 'csv'
37
+ csv = CSV.parse(File.read(File.expand_path('../data/code_gists_20130724.csv', __FILE__)), :headers => true) # data from code.eoe.cn
38
+ csv.each {|row| CodeGist.create!(row.to_hash) }
39
+
40
+
41
+ Statlysis.setup do
42
+ hourly EoeLog, :time_column => :t
43
+
44
+ daily CodeGist
45
+
46
+ [EoeLog,
47
+ EoeLog.where(:do => 3),
48
+ Mongoid[/multiple_log_2013[0-9]{4}/],
49
+ Mongoid[/multiple_log_2013[0-9]{4}/].where(:ui => {"$ne" => 0})
50
+ ].each do |s|
51
+ daily s, :time_column => :t
52
+ end
53
+ cron = Statlysis.daily['mul'][1]
54
+ require 'pry-debugger';binding.pry
17
55
  end
@@ -0,0 +1,8 @@
1
+ class CreateActiveRecord < ActiveRecord::Migration
2
+ create_table :code_gists do |t|
3
+ t.string :description
4
+ t.integer :user_id
5
+ t.timestamps
6
+ t.string :author
7
+ end
8
+ end
File without changes
@@ -0,0 +1,5 @@
1
+ # encoding: UTF-8
2
+
3
+ class CodeGist < ActiveRecord::Base
4
+
5
+ end
@@ -0,0 +1,53 @@
1
+ # encoding: UTF-8
2
+
3
+ class EoeLog
4
+ include Mongoid::Document
5
+
6
+ field :ii, :type => Integer, :default => 0 # ip_int, request.remote_ip
7
+ field :do, :type => Integer, :default => 1 # request.domain
8
+ field :fp, :type => String, :default => '' # request.original_fullpath
9
+ field :ui, :type => Integer, :default => 0 # user_id
10
+ field :re, :type => String, :default => '' # refer
11
+
12
+ field :t, :type => DateTime, :default => Statlysis::DateTime1970 # timestamp
13
+
14
+ # request.headers['HTTP_USER_AGENT']
15
+ field :br, :type => Integer, :default => 0 # browser name
16
+ field :bv, :type => String, :default => '' # browser version
17
+ field :bo, :type => Integer, :default => 0 # os
18
+
19
+ index({t: -1, ui: 1}, {:background => true})
20
+ end
21
+ EoeLog.create
22
+
23
+
24
+ # Setup a single log that combined by multiple collections
25
+ {'07' => 1..31, '08' => 1..12}.map do |month, day_range|
26
+ day_range.map do |day|
27
+ # define model dynamically, e.g. MultipleLog20130729
28
+ date_str = "2013#{month}#{day.to_s.rjust(2, '0')}"
29
+ collection_class_name = "MultipleLog#{date_str}"
30
+ collection_name = collection_class_name.sub("MultipleLog", "multiple_log_")
31
+
32
+ # NOTE: Object.const_set(name, Class.new {}) cause failed with error 16256: "Invalid ns [statlysis_mongoid_test.]",
33
+ # and cann't Mongoid.create data
34
+ eval("
35
+ class #{collection_class_name}
36
+ include Mongoid::Document
37
+ self.default_collection_name = #{collection_name.to_json}
38
+ field :t, :type => DateTime
39
+ field :url, :type => String
40
+ index({t: -1}, {:background => true})
41
+ end
42
+ ")
43
+
44
+ collection_class = collection_class_name.constantize
45
+ t = Time.zone.parse(date_str)
46
+ 1.upto(day) do |i|
47
+ puts "#{month} #{day_range} #{day} #{i}" if ENV['DEBUG']
48
+ collection_class.create :t => (t.to_time+rand(60*60*24-1)).to_datetime, :url => '/'
49
+ end
50
+
51
+ collection_class.count
52
+ end
53
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'helper'
4
+
5
+ class TestDailyCount < Test::Unit::TestCase
6
+ def setup
7
+ @output = Statlysis.daily['code_gist'].first.output
8
+ end
9
+
10
+ def test_timely
11
+ o = @output.map {|i| i[:timely_c] }
12
+ r = (o - [5,11,0,1,8,2,3,4,16,10,26,13,7,9,20,15,30,33,14,6,12,17,19,59,65,84,62,114,69,52,61,67,154,70]).reject(&:zero?).blank?
13
+ assert_equal r, true
14
+ end
15
+
16
+ def test_totally
17
+ o = @output.map {|i| i[:totally_c] }
18
+ r = (o - [5,16,17,25,27,30,34,36,37,53,55,56,57,59,60,64,66,67,68,70,71,73,74,75,80,90,116,129,136,145,165,185,200,230,234,235,236,237,270,273,274,288,299,304,305,312,327,337,345,359,374,380,392,418,435,446,452,463,466,473,493,506,512,520,525,545,549,553,558,577,636,701,785,805,867,981,1050,1102,1163,1230,1384,1454,1455,1457,1458]).reject(&:zero?).blank?
19
+ assert_equal r, true
20
+ end
21
+
22
+ end
@@ -2,21 +2,8 @@
2
2
 
3
3
  require 'helper'
4
4
 
5
- Mongoid.connect_to "mongoid-mapreduce-test"
6
- Dir["#{File.dirname(__FILE__)}/models/*.rb"].each { |f| require f }
7
- Mongoid.default_session.collections.select {|c| c.name !~ /system/ }.each(&:drop)
8
-
9
5
  class TestMapReduce < Test::Unit::TestCase
10
- include Statlysis
11
-
12
6
  def setup
13
- # copied from git://github.com/joe1chen/mongoid-mapreduce.git
14
- @aapl = Company.create :name => 'Apple', :market => 'Technology', :quote => 401.82, :shares => 972_090_000
15
- @msft = Company.create :name => 'Microsoft', :market => 'Technology', :quote => 25.06, :shares => 8_380_000_000
16
- @sbux = Company.create :name => 'Starbucks', :market => 'Food', :quote => 38.60, :shares => 746_010_000
17
- Employee.create :name => 'Alan', :division => 'Software', :age => 30, :awards => 5, :rooms => [1,2], :active => true, :company => @aapl
18
- Employee.create :name => 'Bob', :division => 'Software', :age => 30, :awards => 4, :rooms => [3,4,5], :active => true, :company => @aapl
19
- Employee.create :name => 'Chris', :division => 'Hardware', :age => 30, :awards => 3, :rooms => [1,2,3,4], :active => false, :company => @aapl
20
7
  end
21
8
 
22
9
  def test_hotest_items_mapreduce
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+
3
+ require 'helper'
4
+
5
+ class TestSingleLogInMultipleCollections < Test::Unit::TestCase
6
+ def setup
7
+ @output = Statlysis.daily['multi'].first.output
8
+ end
9
+
10
+ def test_timely
11
+ o = @output.map {|i| i[:timely_c] }[0..30]
12
+ r = (o - [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31]).reject(&:zero?).blank?
13
+ assert_equal r, true
14
+ end
15
+
16
+ def test_totally
17
+ o = @output.map {|i| i[:totally_c] }[0..30]
18
+ r = (o - [1,3,6,10,15,21,28,36,45,55,66,78,91,105,120,136,153,171,190,210,231,253,276,300,325,351,378,406,435,465,496]).reject(&:zero?).blank?
19
+ assert_equal r, true
20
+ end
21
+
22
+ end
@@ -2,54 +2,15 @@
2
2
 
3
3
  require 'helper'
4
4
 
5
- def Rails.root; Pathname.new(ENV['RAILS_ROOT'] || "#{Dir.pwd}/../..") end
6
- raise "Please setup RAILS_ROOT shell env first!" if not File.exists?(Rails.root.join("config/database.yml"))
7
-
8
5
  class TestStatlysis < Test::Unit::TestCase
9
- include Statlysis
10
-
11
6
  def setup
12
- super
13
- @dt = DateTime.parse "20121221 +0800"
14
- @dt1 = DateTime.parse "20111221 +0800"
15
- @dt2 = DateTime.parse "20121221 +0800"
16
- Statlysis.set_database :statlysis
17
- @old_datetime = DateTime.parse("20130105")
18
- end
19
-
20
- def test_parse_datetime
21
- assert_equal [@dt], TimeSeries.parse(@dt), "抽取单个时间没通过"
22
- end
23
-
24
- def test_parse_special_datetime
25
- assert_equal 1, TimeSeries.parse(DateTime.parse('2012122110')).length, "抽取单个时间没通过"
26
- end
27
-
28
- def test_parse_range_in_hour
29
- # (@dt2 - @dt1).to_i == 366
30
- assert_equal 24, TimeSeries.parse(@dt1..(@dt1+1.day-1.second), :unit => :hour).length, "抽取小时的时间范围没通过"
31
- end
32
-
33
- def test_parse_range_in_day
34
- # (@dt2 - @dt1).to_i == 366
35
- assert_equal 366, TimeSeries.parse(@dt1..(@dt2-1.second)).length, "抽取天的时间范围没通过"
36
- end
37
-
38
- def test_parse_range_in_week
39
- # (@dt2 - @dt1).to_i / 7.0 == 52.285714285714285
40
- assert_equal 53, TimeSeries.parse(@dt1..(@dt2-1.second), :unit => :week).length, "抽取周的时间范围没通过"
41
- end
42
-
43
- def test_parse_range_in_201212_week
44
- w1 = DateTime.parse "20121201 +0800"
45
- w2 = DateTime.parse "20121231 +0800"
46
- assert_equal 6, TimeSeries.parse(w1..w2, :unit => :week).length, "2012十二月应该有六周"
7
+ @old_datetime = Time.zone.parse("20130105")
47
8
  end
48
9
 
49
10
  def test_setup_count_stat_table
50
11
  eval("class CodeGist < ActiveRecord::Base; end")
51
12
  t = Statlysis::Timely.new CodeGist.where(:user_id => 470700), :time_column => :created_at, :time_unit => :day
52
- t.setup_stat_table
13
+ t.setup_stat_model
53
14
  is_created = Statlysis.sequel.table_exists?(t.stat_table_name)
54
15
  Statlysis.sequel.drop_table t.stat_table_name
55
16
 
@@ -58,19 +19,13 @@ class TestStatlysis < Test::Unit::TestCase
58
19
 
59
20
  def test_setup_lastest_visits_stat_table
60
21
  tn = 'st_blog_lastest_visits_tests'
61
- lv = Statlysis::LastestVisits.new "FakeLogCollection", :stat_table_name => tn, :test => true, :default_time => @old_datetime
62
- lv.pattern_table_and_model tn
22
+ lv = Statlysis::LastestVisits.new EoeLog, :stat_table_name => tn, :test => true, :default_time => @old_datetime
23
+ h = Statlysis::Utils.setup_pattern_table_and_model tn
24
+ lv.stat_model = h[:model]
63
25
  is_sequel_model = lv.stat_model.respond_to?(:count)
64
26
  Statlysis.sequel.drop_table tn
65
27
 
66
28
  assert(is_sequel_model, "统计表#{lv.stat_table_name}没有成功创建")
67
29
  end
68
30
 
69
- def test_clock_set_time
70
- clock = Statlysis::Clock.new "mvj3", Time.now
71
- clock.update @old_datetime
72
- update_old_time = (@old_datetime != clock.current)
73
- assert(update_old_time, "Can't update old time")
74
- end
75
-
76
31
  end
@@ -3,4 +3,50 @@
3
3
  require 'helper'
4
4
 
5
5
  class TestTimeSeries < Test::Unit::TestCase
6
+ include Statlysis
7
+
8
+ def setup
9
+ super
10
+ @dt = Time.zone.parse "20121221 +0800"
11
+ @dt1 = Time.zone.parse "20111221 +0800"
12
+ @dt2 = Time.zone.parse "20121221 +0800"
13
+ @old_datetime = Time.zone.parse("20130105")
14
+ end
15
+
16
+ def test_parse_datetime
17
+ assert_equal [@dt], TimeSeries.parse(@dt), "抽取单个时间没通过"
18
+ end
19
+
20
+ def test_parse_special_datetime
21
+ assert_equal 1, TimeSeries.parse(Time.zone.parse('2012122110')).length, "抽取单个时间没通过"
22
+ end
23
+
24
+ def test_parse_range_in_hour
25
+ # (@dt2 - @dt1).to_i == 366
26
+ assert_equal 24, TimeSeries.parse(@dt1..(@dt1+1.day-1.second), :unit => :hour).length, "抽取小时的时间范围没通过"
27
+ end
28
+
29
+ def test_parse_range_in_day
30
+ # (@dt2 - @dt1).to_i == 366
31
+ assert_equal 366, TimeSeries.parse(@dt1..(@dt2-1.second)).length, "抽取天的时间范围没通过"
32
+ end
33
+
34
+ def test_parse_range_in_week
35
+ # (@dt2 - @dt1).to_i / 7.0 == 52.285714285714285
36
+ assert_equal 53, TimeSeries.parse(@dt1..(@dt2-1.second), :unit => :week).length, "抽取周的时间范围没通过"
37
+ end
38
+
39
+ def test_parse_range_in_201212_week
40
+ w1 = Time.zone.parse "20121201 +0800"
41
+ w2 = Time.zone.parse "20121231 +0800"
42
+ assert_equal 6, TimeSeries.parse(w1..w2, :unit => :week).length, "2012十二月应该有六周"
43
+ end
44
+
45
+ def test_clock_set_time
46
+ clock = Statlysis::Clock.new "parse_EoeLog", Time.now
47
+ clock.update @old_datetime
48
+ update_old_time = (@old_datetime != clock.current)
49
+ assert(update_old_time, "Can't update old time")
50
+ end
51
+
6
52
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: statlysis
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-10 00:00:00.000000000 Z
12
+ date: 2013-07-26 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -66,7 +66,7 @@ dependencies:
66
66
  requirements:
67
67
  - - ! '>='
68
68
  - !ruby/object:Gem::Version
69
- version: '0'
69
+ version: 3.0.0
70
70
  type: :runtime
71
71
  prerelease: false
72
72
  version_requirements: !ruby/object:Gem::Requirement
@@ -74,7 +74,7 @@ dependencies:
74
74
  requirements:
75
75
  - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
- version: '0'
77
+ version: 3.0.0
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: activerecord
80
80
  requirement: !ruby/object:Gem::Requirement
@@ -155,7 +155,103 @@ dependencies:
155
155
  - - ! '>='
156
156
  - !ruby/object:Gem::Version
157
157
  version: '0'
158
- description: statistical analysis in ruby dsl
158
+ - !ruby/object:Gem::Dependency
159
+ name: bson_ext
160
+ requirement: !ruby/object:Gem::Requirement
161
+ none: false
162
+ requirements:
163
+ - - ! '>='
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :runtime
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ none: false
170
+ requirements:
171
+ - - ! '>='
172
+ - !ruby/object:Gem::Version
173
+ version: '0'
174
+ - !ruby/object:Gem::Dependency
175
+ name: origin
176
+ requirement: !ruby/object:Gem::Requirement
177
+ none: false
178
+ requirements:
179
+ - - ! '>='
180
+ - !ruby/object:Gem::Version
181
+ version: '0'
182
+ type: :runtime
183
+ prerelease: false
184
+ version_requirements: !ruby/object:Gem::Requirement
185
+ none: false
186
+ requirements:
187
+ - - ! '>='
188
+ - !ruby/object:Gem::Version
189
+ version: '0'
190
+ - !ruby/object:Gem::Dependency
191
+ name: short_inspect
192
+ requirement: !ruby/object:Gem::Requirement
193
+ none: false
194
+ requirements:
195
+ - - ! '>='
196
+ - !ruby/object:Gem::Version
197
+ version: '0'
198
+ type: :runtime
199
+ prerelease: false
200
+ version_requirements: !ruby/object:Gem::Requirement
201
+ none: false
202
+ requirements:
203
+ - - ! '>='
204
+ - !ruby/object:Gem::Version
205
+ version: '0'
206
+ - !ruby/object:Gem::Dependency
207
+ name: sqlite3
208
+ requirement: !ruby/object:Gem::Requirement
209
+ none: false
210
+ requirements:
211
+ - - ! '>='
212
+ - !ruby/object:Gem::Version
213
+ version: '0'
214
+ type: :development
215
+ prerelease: false
216
+ version_requirements: !ruby/object:Gem::Requirement
217
+ none: false
218
+ requirements:
219
+ - - ! '>='
220
+ - !ruby/object:Gem::Version
221
+ version: '0'
222
+ - !ruby/object:Gem::Dependency
223
+ name: pry-debugger
224
+ requirement: !ruby/object:Gem::Requirement
225
+ none: false
226
+ requirements:
227
+ - - ! '>='
228
+ - !ruby/object:Gem::Version
229
+ version: '0'
230
+ type: :development
231
+ prerelease: false
232
+ version_requirements: !ruby/object:Gem::Requirement
233
+ none: false
234
+ requirements:
235
+ - - ! '>='
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ - !ruby/object:Gem::Dependency
239
+ name: guard-test
240
+ requirement: !ruby/object:Gem::Requirement
241
+ none: false
242
+ requirements:
243
+ - - ! '>='
244
+ - !ruby/object:Gem::Version
245
+ version: '0'
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ none: false
250
+ requirements:
251
+ - - ! '>='
252
+ - !ruby/object:Gem::Version
253
+ version: '0'
254
+ description: Statistical & Analysis in Ruby DSL
159
255
  email: mvjome@gmail.com
160
256
  executables: []
161
257
  extensions: []
@@ -164,33 +260,52 @@ files:
164
260
  - .document
165
261
  - .gitignore
166
262
  - Gemfile
167
- - Gemfile.lock
168
- - LICENSE.txt
263
+ - Guardfile
169
264
  - README.markdown
170
265
  - Rakefile
171
266
  - lib/statlysis.rb
172
267
  - lib/statlysis/clock.rb
173
268
  - lib/statlysis/common.rb
174
269
  - lib/statlysis/configuration.rb
270
+ - lib/statlysis/constants.rb
175
271
  - lib/statlysis/cron.rb
176
272
  - lib/statlysis/cron/count.rb
273
+ - lib/statlysis/cron/count/dimensions.rb
274
+ - lib/statlysis/cron/count/timely.rb
177
275
  - lib/statlysis/cron/top.rb
276
+ - lib/statlysis/cron/top/hotest_items.rb
277
+ - lib/statlysis/cron/top/lastest_visits.rb
278
+ - lib/statlysis/cron_set.rb
279
+ - lib/statlysis/dataset.rb
178
280
  - lib/statlysis/formula.rb
179
281
  - lib/statlysis/javascript/count.rb
180
282
  - lib/statlysis/map_reduce.rb
283
+ - lib/statlysis/multiple_dataset.rb
284
+ - lib/statlysis/multiple_dataset/active_record.rb
285
+ - lib/statlysis/multiple_dataset/mongoid.rb
181
286
  - lib/statlysis/rake.rb
182
287
  - lib/statlysis/results.rb
183
288
  - lib/statlysis/similar.rb
184
289
  - lib/statlysis/timeseries.rb
290
+ - lib/statlysis/utils.rb
185
291
  - statlysis.gemspec
292
+ - test/config/database.yml
293
+ - test/config/mongoid.yml
294
+ - test/data/.gitkeep
295
+ - test/data/code_gists_20130724.csv
186
296
  - test/helper.rb
187
- - test/models/company.rb
188
- - test/models/employee.rb
297
+ - test/migrate/1_active_record.rb
298
+ - test/models/.gitkeep
299
+ - test/models/code_gist.rb
300
+ - test/models/eoe_log.rb
301
+ - test/test_daily_count.rb
189
302
  - test/test_mapreduce.rb
303
+ - test/test_single_log_in_multiple_collections.rb
190
304
  - test/test_statlysis.rb
191
305
  - test/test_timeseries.rb
192
306
  homepage: https://github.com/eoecn/statlysis
193
- licenses: []
307
+ licenses:
308
+ - MIT
194
309
  post_install_message:
195
310
  rdoc_options: []
196
311
  require_paths:
@@ -201,16 +316,22 @@ required_ruby_version: !ruby/object:Gem::Requirement
201
316
  - - ! '>='
202
317
  - !ruby/object:Gem::Version
203
318
  version: '0'
319
+ segments:
320
+ - 0
321
+ hash: 59716176471030881
204
322
  required_rubygems_version: !ruby/object:Gem::Requirement
205
323
  none: false
206
324
  requirements:
207
325
  - - ! '>='
208
326
  - !ruby/object:Gem::Version
209
327
  version: '0'
328
+ segments:
329
+ - 0
330
+ hash: 59716176471030881
210
331
  requirements: []
211
332
  rubyforge_project:
212
- rubygems_version: 1.8.25
333
+ rubygems_version: 1.8.23
213
334
  signing_key:
214
335
  specification_version: 3
215
- summary: statistical analysis in ruby dsl
336
+ summary: Statistical & Analysis in Ruby DSL
216
337
  test_files: []