emitter 0.11.2 → 0.12.1

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.
data/Gemfile CHANGED
@@ -2,14 +2,6 @@ source :rubygems
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'sniff', :path => ENV['LOCAL_SNIFF'] if ENV['LOCAL_SNIFF']
6
- gem 'data_miner', :path => ENV['LOCAL_DATA_MINER'] if ENV['LOCAL_DATA_MINER']
7
- gem 'earth', :path => ENV['LOCAL_EARTH'] if ENV['LOCAL_EARTH']
8
-
9
- gem 'activerecord', '~>3'
10
- gem 'bueller'
11
- gem 'sniff', '>=0.11.0' unless ENV['LOCAL_SNIFF']
12
-
13
5
  if RUBY_VERSION < "1.9"
14
6
  gem 'fastercsv'
15
7
  end
@@ -0,0 +1,50 @@
1
+ # emitter
2
+
3
+ Base module for Brighter Planet's emitters. See the [Brighter Planet developer page](http://brighterplanet.github.com) for details on Brighter Planet's development environment.
4
+
5
+ ## Installation
6
+
7
+ $ gem install emitter
8
+
9
+ ## Usage
10
+
11
+ # my_emitter.rb
12
+ require 'emitter'
13
+
14
+ class MyEmitter
15
+ include BrighterPlanet::Emitter
16
+ end
17
+
18
+ ### Required modules
19
+
20
+ Your emitter must define some modules under `lib/my_emitter/`, they are:
21
+ * `lib/my_emitter/impact_model.rb` - `module MyEmitter::ImpactModel` - defines the [Leap](http://rubygems.org/gems/leap) decisions that calculate an impact.
22
+ * `lib/my_emitter/characterization.rb` - `module MyEmitter::Characterization` - defines the [Characteristics](http://rubygems.org/gems/charisma) that describe the model's inputs.
23
+ * `lib/my_emitter/data.rb` - `module MyEmitter::Data` - defines the [schema](http://rubygems.org/gems/mini\_record) definitions for the emitter and [DataMiner](http://rubygems.org/gems/data\_miner) processes that fetch and store data for the emitter.
24
+ * `lib/my_emitter/relationships.rb` - `module MyEmitter::Relationships` - defines the ActiveRecord relationships between the emitter and other [Earth](http://rubygems.org/gems/earth) models.
25
+ * `lib/my_emitter/summarization.rb` - `moduel MyEmitter::Summarization` - defines phrases that describe various attributes ([SummaryJudgement descriptors](http://rubygems.org/gems/summary\_judgement)) about an emitter that are displayed on CM1's methodology pages.
26
+
27
+ ## Tools
28
+
29
+ You can use the [bp gem](http://github.com/brighterplanet/bp) to generate the skeleton for a new emitter.
30
+
31
+ ## Magic
32
+
33
+ Emitter, once included, will perform a couple tasks automatically:
34
+
35
+ 1. It converts committees into characterizations that are not already characterized.
36
+ 1. It adds `auto_upgrade!` and `run_data_miner_on_parent_associations!` tasks to DataMiner so that a call to `MyEmitter.run_data_miner!` will update the emitter's schema and run DataMiner tasks on any belongs\_to associations.
37
+
38
+ ## Note on Patches/Pull Requests
39
+
40
+ * Fork the project.
41
+ * Make your feature addition or bug fix.
42
+ * Add tests for it. This is important so I don't break it in a
43
+ future version unintentionally.
44
+ * Commit, do not mess with rakefile, version, or history.
45
+ (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
46
+ * Send me a pull request. Bonus points for topic branches.
47
+
48
+ ## Copyright
49
+
50
+ Copyright 2010, 2011 Brighter Planet, Inc. See LICENSE and LICENSE-PREAMBLE for details.
data/Rakefile CHANGED
@@ -1,3 +1,4 @@
1
+ require 'bundler/setup'
1
2
  require 'bundler/gem_tasks'
2
3
 
3
4
  require 'bueller'
@@ -15,14 +15,17 @@ Gem::Specification.new do |s|
15
15
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
16
16
  s.require_paths = ["lib"]
17
17
 
18
+ s.add_dependency 'active_record_inline_schema'
18
19
  s.add_dependency 'activesupport', '>=2.3.10'
19
20
  s.add_dependency 'charisma'
20
21
  s.add_dependency 'data_miner', '>=2' unless ENV['LOCAL_DATA_MINER']
21
- s.add_dependency 'earth', '>=0.5.1' unless ENV['LOCAL_EARTH']
22
22
  s.add_dependency 'falls_back_on'
23
23
  s.add_dependency 'leap', '>=0.5.4'
24
24
  s.add_dependency 'summary_judgement'
25
25
  s.add_dependency 'timeframe'
26
26
  s.add_dependency 'weighted_average'
27
- s.add_dependency 'active_record_inline_schema'
27
+
28
+ s.add_development_dependency 'activerecord', '~>3'
29
+ s.add_development_dependency 'bueller'
30
+ s.add_development_dependency 'sniff'
28
31
  end
@@ -1,11 +1,10 @@
1
+ require 'active_record_inline_schema'
1
2
  require 'active_support'
2
3
  require 'active_support/core_ext'
3
- require 'leap'
4
4
  require 'charisma'
5
- require 'data_miner'
6
- require 'summary_judgement'
7
5
  require 'falls_back_on'
8
- require 'active_record_inline_schema'
6
+ require 'leap'
7
+ require 'summary_judgement'
9
8
 
10
9
  require 'emitter/measurement'
11
10
 
@@ -18,6 +17,13 @@ module BrighterPlanet
18
17
  relationships
19
18
  summarization
20
19
  }
20
+
21
+ def self.extended(target)
22
+ common_name = target.name.demodulize.underscore
23
+ REQUIRED_COMPONENTS.each do |component|
24
+ require "#{common_name}/#{component}"
25
+ end
26
+ end
21
27
 
22
28
  # "included" not "self.included"
23
29
  # why?
@@ -31,10 +37,6 @@ module BrighterPlanet
31
37
  # here self is the emitter module
32
38
  common_name = self.name.demodulize.underscore
33
39
  common_camel = common_name.camelcase
34
-
35
- REQUIRED_COMPONENTS.each do |component|
36
- require "#{common_name}/#{component}"
37
- end
38
40
 
39
41
  base.instance_variable_set :@impact_scope, @impact_scope if @impact_scope
40
42
 
@@ -82,6 +84,10 @@ module BrighterPlanet
82
84
  def impact_scope
83
85
  @impact_scope
84
86
  end
87
+
88
+ def emitter
89
+ name.demodulize
90
+ end
85
91
  end
86
92
  end
87
93
  end
@@ -1,3 +1,3 @@
1
1
  module Emitter
2
- VERSION = "0.11.2"
2
+ VERSION = "0.12.1"
3
3
  end
@@ -29,12 +29,16 @@ describe BrighterPlanet::Emitter do
29
29
  expect do
30
30
  require 'biplane'
31
31
  Aircraft.send :include, BrighterPlanet::Biplane
32
- end.should_not raise_error
32
+ end.not_to raise_error
33
33
  end
34
34
 
35
35
  it 'should state its own scope' do
36
36
  Airship.impact_scope.should == 'Anthropogenic impacts resulting from the inflation, launching, and acceleration of dirigibles'
37
37
  end
38
+
39
+ it 'should state its emitter name' do
40
+ Airship.emitter.should == 'Airship'
41
+ end
38
42
 
39
43
  it 'should have extra data_miner steps' do
40
44
  Airship.data_miner_script.steps[0].description.should == :auto_upgrade!
@@ -1,6 +1,5 @@
1
- require 'rubygems'
2
1
  require 'bundler/setup'
3
2
  require 'sniff'
4
- Sniff.init File.join(File.dirname(__FILE__), '..', '..')
3
+ Sniff.init File.expand_path('../..', __FILE__)
5
4
 
6
5
  require 'emitter'
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: emitter
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.11.2
4
+ version: 0.12.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,27 +13,33 @@ authors:
13
13
  autorequire:
14
14
  bindir: bin
15
15
  cert_chain: []
16
- date: 2012-04-18 00:00:00.000000000 Z
16
+ date: 2012-08-03 00:00:00.000000000Z
17
17
  dependencies:
18
18
  - !ruby/object:Gem::Dependency
19
- name: activesupport
20
- requirement: !ruby/object:Gem::Requirement
19
+ name: active_record_inline_schema
20
+ requirement: &2166533340 !ruby/object:Gem::Requirement
21
21
  none: false
22
22
  requirements:
23
23
  - - ! '>='
24
24
  - !ruby/object:Gem::Version
25
- version: 2.3.10
25
+ version: '0'
26
26
  type: :runtime
27
27
  prerelease: false
28
- version_requirements: !ruby/object:Gem::Requirement
28
+ version_requirements: *2166533340
29
+ - !ruby/object:Gem::Dependency
30
+ name: activesupport
31
+ requirement: &2166532720 !ruby/object:Gem::Requirement
29
32
  none: false
30
33
  requirements:
31
34
  - - ! '>='
32
35
  - !ruby/object:Gem::Version
33
36
  version: 2.3.10
37
+ type: :runtime
38
+ prerelease: false
39
+ version_requirements: *2166532720
34
40
  - !ruby/object:Gem::Dependency
35
41
  name: charisma
36
- requirement: !ruby/object:Gem::Requirement
42
+ requirement: &2166532140 !ruby/object:Gem::Requirement
37
43
  none: false
38
44
  requirements:
39
45
  - - ! '>='
@@ -41,15 +47,10 @@ dependencies:
41
47
  version: '0'
42
48
  type: :runtime
43
49
  prerelease: false
44
- version_requirements: !ruby/object:Gem::Requirement
45
- none: false
46
- requirements:
47
- - - ! '>='
48
- - !ruby/object:Gem::Version
49
- version: '0'
50
+ version_requirements: *2166532140
50
51
  - !ruby/object:Gem::Dependency
51
52
  name: data_miner
52
- requirement: !ruby/object:Gem::Requirement
53
+ requirement: &2166531300 !ruby/object:Gem::Requirement
53
54
  none: false
54
55
  requirements:
55
56
  - - ! '>='
@@ -57,31 +58,10 @@ dependencies:
57
58
  version: '2'
58
59
  type: :runtime
59
60
  prerelease: false
60
- version_requirements: !ruby/object:Gem::Requirement
61
- none: false
62
- requirements:
63
- - - ! '>='
64
- - !ruby/object:Gem::Version
65
- version: '2'
66
- - !ruby/object:Gem::Dependency
67
- name: earth
68
- requirement: !ruby/object:Gem::Requirement
69
- none: false
70
- requirements:
71
- - - ! '>='
72
- - !ruby/object:Gem::Version
73
- version: 0.5.1
74
- type: :runtime
75
- prerelease: false
76
- version_requirements: !ruby/object:Gem::Requirement
77
- none: false
78
- requirements:
79
- - - ! '>='
80
- - !ruby/object:Gem::Version
81
- version: 0.5.1
61
+ version_requirements: *2166531300
82
62
  - !ruby/object:Gem::Dependency
83
63
  name: falls_back_on
84
- requirement: !ruby/object:Gem::Requirement
64
+ requirement: &2166530760 !ruby/object:Gem::Requirement
85
65
  none: false
86
66
  requirements:
87
67
  - - ! '>='
@@ -89,15 +69,10 @@ dependencies:
89
69
  version: '0'
90
70
  type: :runtime
91
71
  prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- none: false
94
- requirements:
95
- - - ! '>='
96
- - !ruby/object:Gem::Version
97
- version: '0'
72
+ version_requirements: *2166530760
98
73
  - !ruby/object:Gem::Dependency
99
74
  name: leap
100
- requirement: !ruby/object:Gem::Requirement
75
+ requirement: &2166530020 !ruby/object:Gem::Requirement
101
76
  none: false
102
77
  requirements:
103
78
  - - ! '>='
@@ -105,15 +80,10 @@ dependencies:
105
80
  version: 0.5.4
106
81
  type: :runtime
107
82
  prerelease: false
108
- version_requirements: !ruby/object:Gem::Requirement
109
- none: false
110
- requirements:
111
- - - ! '>='
112
- - !ruby/object:Gem::Version
113
- version: 0.5.4
83
+ version_requirements: *2166530020
114
84
  - !ruby/object:Gem::Dependency
115
85
  name: summary_judgement
116
- requirement: !ruby/object:Gem::Requirement
86
+ requirement: &2166529420 !ruby/object:Gem::Requirement
117
87
  none: false
118
88
  requirements:
119
89
  - - ! '>='
@@ -121,15 +91,10 @@ dependencies:
121
91
  version: '0'
122
92
  type: :runtime
123
93
  prerelease: false
124
- version_requirements: !ruby/object:Gem::Requirement
125
- none: false
126
- requirements:
127
- - - ! '>='
128
- - !ruby/object:Gem::Version
129
- version: '0'
94
+ version_requirements: *2166529420
130
95
  - !ruby/object:Gem::Dependency
131
96
  name: timeframe
132
- requirement: !ruby/object:Gem::Requirement
97
+ requirement: &2166528860 !ruby/object:Gem::Requirement
133
98
  none: false
134
99
  requirements:
135
100
  - - ! '>='
@@ -137,15 +102,10 @@ dependencies:
137
102
  version: '0'
138
103
  type: :runtime
139
104
  prerelease: false
140
- version_requirements: !ruby/object:Gem::Requirement
141
- none: false
142
- requirements:
143
- - - ! '>='
144
- - !ruby/object:Gem::Version
145
- version: '0'
105
+ version_requirements: *2166528860
146
106
  - !ruby/object:Gem::Dependency
147
107
  name: weighted_average
148
- requirement: !ruby/object:Gem::Requirement
108
+ requirement: &2166528240 !ruby/object:Gem::Requirement
149
109
  none: false
150
110
  requirements:
151
111
  - - ! '>='
@@ -153,28 +113,40 @@ dependencies:
153
113
  version: '0'
154
114
  type: :runtime
155
115
  prerelease: false
156
- version_requirements: !ruby/object:Gem::Requirement
116
+ version_requirements: *2166528240
117
+ - !ruby/object:Gem::Dependency
118
+ name: activerecord
119
+ requirement: &2166527600 !ruby/object:Gem::Requirement
157
120
  none: false
158
121
  requirements:
159
- - - ! '>='
122
+ - - ~>
160
123
  - !ruby/object:Gem::Version
161
- version: '0'
124
+ version: '3'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: *2166527600
162
128
  - !ruby/object:Gem::Dependency
163
- name: active_record_inline_schema
164
- requirement: !ruby/object:Gem::Requirement
129
+ name: bueller
130
+ requirement: &2166527140 !ruby/object:Gem::Requirement
165
131
  none: false
166
132
  requirements:
167
133
  - - ! '>='
168
134
  - !ruby/object:Gem::Version
169
135
  version: '0'
170
- type: :runtime
136
+ type: :development
171
137
  prerelease: false
172
- version_requirements: !ruby/object:Gem::Requirement
138
+ version_requirements: *2166527140
139
+ - !ruby/object:Gem::Dependency
140
+ name: sniff
141
+ requirement: &2166526400 !ruby/object:Gem::Requirement
173
142
  none: false
174
143
  requirements:
175
144
  - - ! '>='
176
145
  - !ruby/object:Gem::Version
177
146
  version: '0'
147
+ type: :development
148
+ prerelease: false
149
+ version_requirements: *2166526400
178
150
  description: A framework for modelling the impact of real-world entities.
179
151
  email:
180
152
  - andy@rossmeissl.net
@@ -191,7 +163,7 @@ files:
191
163
  - Gemfile
192
164
  - LICENSE
193
165
  - LICENSE-PREAMBLE
194
- - README.rdoc
166
+ - README.markdown
195
167
  - Rakefile
196
168
  - emitter.gemspec
197
169
  - lib/emitter.rb
@@ -224,15 +196,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
224
196
  - - ! '>='
225
197
  - !ruby/object:Gem::Version
226
198
  version: '0'
199
+ segments:
200
+ - 0
201
+ hash: -4363865138047719689
227
202
  required_rubygems_version: !ruby/object:Gem::Requirement
228
203
  none: false
229
204
  requirements:
230
205
  - - ! '>='
231
206
  - !ruby/object:Gem::Version
232
207
  version: '0'
208
+ segments:
209
+ - 0
210
+ hash: -4363865138047719689
233
211
  requirements: []
234
212
  rubyforge_project:
235
- rubygems_version: 1.8.21
213
+ rubygems_version: 1.8.11
236
214
  signing_key:
237
215
  specification_version: 3
238
216
  summary: A framework for modelling the impact of real-world entities.
@@ -252,4 +230,3 @@ test_files:
252
230
  - spec/fixtures/dirigible/lib/dirigible/relationships.rb
253
231
  - spec/fixtures/dirigible/lib/dirigible/summarization.rb
254
232
  - spec/spec_helper.rb
255
- has_rdoc:
@@ -1,17 +0,0 @@
1
- = emitter
2
-
3
- Software framework for Brighter Planet's impact modeling libraries. See http://carbon.brighterplanet.com
4
-
5
- == Note on Patches/Pull Requests
6
-
7
- * Fork the project.
8
- * Make your feature addition or bug fix.
9
- * Add tests for it. This is important so I don't break it in a
10
- future version unintentionally.
11
- * Commit, do not mess with rakefile, version, or history.
12
- (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull)
13
- * Send me a pull request. Bonus points for topic branches.
14
-
15
- == Copyright
16
-
17
- Copyright 2010, 2011 Brighter Planet, Inc. See LICENSE and LICENSE-PREAMBLE for details.