cubicle 0.1.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.
@@ -0,0 +1,73 @@
1
+ class Defect
2
+ #include MongoMapper::Document
3
+
4
+ #key :defect_id, String
5
+ #key :manufacture_date, String
6
+ #key :manufacture_time, Time
7
+ #key :product, Product
8
+ #key :plant, Plant
9
+ #key :operator, String
10
+ #key :outcome, String
11
+ #key :cost, Float
12
+ #key :root_cause, String
13
+
14
+ def self.collection
15
+ Cubicle.mongo.database["defects"]
16
+ end
17
+
18
+ def self.create(attributes)
19
+ self.collection.insert(attributes)
20
+ end
21
+
22
+ def self.create_test_data
23
+ Defect.create :defect_id=>"1",
24
+ :manufacture_date=>"2010-01-01",
25
+ :manufacture_time=>"2010-01-01".to_time,
26
+ :product=>{:name=>"Sad Day Moonshine",:category=>"Alcohol"},
27
+ :plant=>{:name=>"Plant1",:address=>{:region=>"West",:location=>"San Francisco, Ca"}},
28
+ :operator=>"Franny",
29
+ :outcome=>"Repaired",
30
+ :cost=>0.78,
31
+ :root_cause=>:act_of_god
32
+
33
+ Defect.create :defect_id=>"2",
34
+ :manufacture_date=>"2010-01-05",
35
+ :manufacture_time=>"2010-01-05".to_time,
36
+ :product=>{:name=>"Evil's Pickling Spice",:category=>"Baking"},
37
+ :plant=>{:name=>"Plant2",:address=>{:region=>"Midwest",:location=>"Des Moines, Ia"}},
38
+ :operator=>"Seymour",
39
+ :outcome=>"Discarded",
40
+ :cost=>0.02,
41
+ :root_cause=>:operator_error
42
+
43
+ Defect.create :defect_id=>"3",
44
+ :manufacture_date=>"2010-02-01",
45
+ :manufacture_time=>"2010-02-01".to_time,
46
+ :product=>{:name=>"Sad Day Moonshine",:category=>"Alcohol"},
47
+ :plant=>{:name=>"Plant1",:address=>{:region=>"West",:location=>"San Francisco, Ca"}},
48
+ :operator=>"Zooey",
49
+ :outcome=>"Consumed",
50
+ :cost=>2.94,
51
+ :root_cause=>:poor_judgment
52
+
53
+ Defect.create :defect_id=>"4",
54
+ :manufacture_date=>"2009-12-09",
55
+ :manufacture_time=>"2009-12-09".to_time,
56
+ :product=>{:name=>"Brush Fire Bottle Rockets",:category=>"Fireworks"},
57
+ :plant=>{:name=>"Plant19",:address=>{:region=>"South",:location=>"Burmingham, Al"}},
58
+ :operator=>"Buddy",
59
+ :outcome=>"Repaired",
60
+ :cost=>0.43,
61
+ :root_cause=>:act_of_god
62
+
63
+ Defect.create :defect_id=>"5",
64
+ :manufacture_date=>"2010-01-01",
65
+ :manufacture_time=>"2010-01-01".to_time,
66
+ :product=>{:name=>"Sad Day Moonshine",:category=>"Alcohol"},
67
+ :plant=>{:name=>"Plant3",:address=>{:region=>"West",:location=>"Oakland, Ca"}},
68
+ :operator=>"Franny",
69
+ :outcome=>"Repaired",
70
+ :cost=>12.19,
71
+ :root_cause=>:defective_materials
72
+ end
73
+ end
@@ -0,0 +1,62 @@
1
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
2
+
3
+ dir = File.dirname(__FILE__)
4
+ require File.join(dir,"..","lib","cubicle")
5
+ require 'active_support/test_case'
6
+ require "shoulda"
7
+ require "logger"
8
+ require File.join(dir,"models","defect")
9
+ Cubicle.register_cubicle_directory(File.join(dir,"cubicles"))
10
+
11
+
12
+ module ActiveSupport
13
+ class TestCase
14
+ def setup
15
+ dir = File.expand_path(File.dirname(__FILE__))
16
+ logdir = File.join(dir,'log')
17
+ Dir.mkdir(logdir) unless File.directory?(logdir)
18
+ Cubicle.mongo.setup(YAML.load_file(File.join(dir,'config', 'database.yml')), "test", {
19
+ :logger => Logger.new(File.join(logdir,'test.log')),
20
+ :passenger => false
21
+ })
22
+ end
23
+ def teardown
24
+ Cubicle.mongo.database.collections.each do |coll|
25
+ coll.drop
26
+ end
27
+ Time.reset #Return Time.now to its original state
28
+ end
29
+
30
+ # Make sure that each test case has a teardown
31
+ # method to clear the db after each test.
32
+ def inherited(base)
33
+ base.define_method teardown do
34
+ super
35
+ end
36
+ base.define_method setup do
37
+ super
38
+ end
39
+ end
40
+ end
41
+ end
42
+ #This seems like an odd approach - why not just alias now, you ask
43
+ #well, I did, and for whatever reason, got stack overflows
44
+ #whenever I'd try to run the test suite. So...um...this doesn't
45
+ #overflow the stack, so it will do.
46
+ class Time
47
+ @@old_now = method(:now)
48
+ class << self
49
+ def now=(new_now)
50
+ @@new_now = new_now.to_time
51
+ def Time.now
52
+ @@new_now
53
+ end
54
+ end
55
+
56
+ def reset
57
+ def Time.now
58
+ @@old_now.call
59
+ end
60
+ end
61
+ end
62
+ end
metadata ADDED
@@ -0,0 +1,144 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: cubicle
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 0
9
+ version: 0.1.0
10
+ platform: ruby
11
+ authors:
12
+ - Nathan Stults
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2010-03-13 00:00:00 -08:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: activesupport
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
25
+ - - ">="
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 2
29
+ - 3
30
+ version: "2.3"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: mongo
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ segments:
41
+ - 0
42
+ - 18
43
+ - 3
44
+ version: 0.18.3
45
+ type: :runtime
46
+ version_requirements: *id002
47
+ - !ruby/object:Gem::Dependency
48
+ name: shoulda
49
+ prerelease: false
50
+ requirement: &id003 !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "="
53
+ - !ruby/object:Gem::Version
54
+ segments:
55
+ - 2
56
+ - 10
57
+ - 3
58
+ version: 2.10.3
59
+ type: :development
60
+ version_requirements: *id003
61
+ description: Cubicle provides a dsl and aggregation caching framework for automating the generation, execution and caching of map reduce queries when using MongoDB in Ruby. Cubicle also includes a MongoMapper plugin for quickly performing ad-hoc, multi-level group-by queries against a MongoMapper model.
62
+ email: hereiam@sonic.net
63
+ executables: []
64
+
65
+ extensions: []
66
+
67
+ extra_rdoc_files:
68
+ - LICENSE.txt
69
+ - README.rdoc
70
+ files:
71
+ - CHANGELOG.rdoc
72
+ - LICENSE.txt
73
+ - README.rdoc
74
+ - Rakefile
75
+ - cubicle.gemspec
76
+ - lib/cubicle.rb
77
+ - lib/cubicle/aggregation.rb
78
+ - lib/cubicle/calculated_measure.rb
79
+ - lib/cubicle/data.rb
80
+ - lib/cubicle/data_level.rb
81
+ - lib/cubicle/date_time.rb
82
+ - lib/cubicle/dimension.rb
83
+ - lib/cubicle/measure.rb
84
+ - lib/cubicle/member.rb
85
+ - lib/cubicle/member_list.rb
86
+ - lib/cubicle/mongo_environment.rb
87
+ - lib/cubicle/mongo_mapper/aggregate_plugin.rb
88
+ - lib/cubicle/query.rb
89
+ - lib/cubicle/ratio.rb
90
+ - lib/cubicle/support.rb
91
+ - lib/cubicle/version.rb
92
+ - test/config/database.yml
93
+ - test/cubicle/cubicle_aggregation_test.rb
94
+ - test/cubicle/cubicle_data_level_test.rb
95
+ - test/cubicle/cubicle_data_test.rb
96
+ - test/cubicle/cubicle_query_test.rb
97
+ - test/cubicle/cubicle_test.rb
98
+ - test/cubicle/mongo_mapper/aggregate_plugin_test.rb
99
+ - test/cubicles/defect_cubicle.rb
100
+ - test/log/test.log
101
+ - test/models/defect.rb
102
+ - test/test_helper.rb
103
+ has_rdoc: true
104
+ homepage: http://github.com/PlasticLizard/cubicle
105
+ licenses: []
106
+
107
+ post_install_message:
108
+ rdoc_options:
109
+ - --charset=UTF-8
110
+ require_paths:
111
+ - lib
112
+ required_ruby_version: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ segments:
117
+ - 0
118
+ version: "0"
119
+ required_rubygems_version: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ segments:
124
+ - 0
125
+ version: "0"
126
+ requirements: []
127
+
128
+ rubyforge_project:
129
+ rubygems_version: 1.3.6
130
+ signing_key:
131
+ specification_version: 3
132
+ summary: Pseudo-Multi Dimensional analysis / simplified aggregation for MongoDB in Ruby (NOLAP ;))
133
+ test_files:
134
+ - test/cubicle/cubicle_aggregation_test.rb
135
+ - test/cubicle/cubicle_data_level_test.rb
136
+ - test/cubicle/cubicle_data_test.rb
137
+ - test/cubicle/cubicle_query_test.rb
138
+ - test/cubicle/cubicle_test.rb
139
+ - test/cubicle/mongo_mapper/aggregate_plugin_test.rb
140
+ - test/cubicles/defect_cubicle.rb
141
+ - test/models/defect.rb
142
+ - test/test_helper.rb
143
+ - examples/cubicles/poker_hand_cubicle.rb
144
+ - examples/models/poker_hand.rb