emitter 0.11.2 → 0.12.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +0 -8
- data/README.markdown +50 -0
- data/Rakefile +1 -0
- data/emitter.gemspec +5 -2
- data/lib/emitter.rb +14 -8
- data/lib/emitter/version.rb +1 -1
- data/spec/emitter_spec.rb +5 -1
- data/spec/spec_helper.rb +1 -2
- metadata +52 -75
- data/README.rdoc +0 -17
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
|
data/README.markdown
ADDED
@@ -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
data/emitter.gemspec
CHANGED
@@ -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
|
-
|
27
|
+
|
28
|
+
s.add_development_dependency 'activerecord', '~>3'
|
29
|
+
s.add_development_dependency 'bueller'
|
30
|
+
s.add_development_dependency 'sniff'
|
28
31
|
end
|
data/lib/emitter.rb
CHANGED
@@ -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 '
|
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
|
data/lib/emitter/version.rb
CHANGED
data/spec/emitter_spec.rb
CHANGED
@@ -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.
|
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!
|
data/spec/spec_helper.rb
CHANGED
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.
|
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-
|
16
|
+
date: 2012-08-03 00:00:00.000000000Z
|
17
17
|
dependencies:
|
18
18
|
- !ruby/object:Gem::Dependency
|
19
|
-
name:
|
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:
|
25
|
+
version: '0'
|
26
26
|
type: :runtime
|
27
27
|
prerelease: false
|
28
|
-
version_requirements:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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:
|
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: '
|
124
|
+
version: '3'
|
125
|
+
type: :development
|
126
|
+
prerelease: false
|
127
|
+
version_requirements: *2166527600
|
162
128
|
- !ruby/object:Gem::Dependency
|
163
|
-
name:
|
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: :
|
136
|
+
type: :development
|
171
137
|
prerelease: false
|
172
|
-
version_requirements:
|
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.
|
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.
|
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:
|
data/README.rdoc
DELETED
@@ -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.
|