brighter_planet_metadata 0.0.16 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Gemfile +6 -2
- data/Rakefile +0 -13
- data/brighter_planet_metadata.gemspec +1 -11
- data/lib/brighter_planet_metadata/metadata.rb +17 -45
- data/lib/brighter_planet_metadata/version.rb +1 -1
- data/lib/brighter_planet_metadata.rb +1 -1
- data/test/helper.rb +6 -29
- data/test/test_fallback.rb +4 -9
- data/test/test_live_remote.rb +5 -12
- data/test/test_memory_leak.rb +1 -3
- data/test/test_real.rb +1 -3
- metadata +14 -85
- data/lib/brighter_planet_metadata/cm1_authority.rb +0 -40
- data/lib/brighter_planet_metadata/data1_authority.rb +0 -25
- data/test/test_live_cm1.rb +0 -60
- data/test/test_live_data1.rb +0 -72
data/Gemfile
CHANGED
data/Rakefile
CHANGED
@@ -10,16 +10,3 @@ Rake::TestTask.new(:test) do |test|
|
|
10
10
|
end
|
11
11
|
|
12
12
|
task :default => :test
|
13
|
-
|
14
|
-
begin
|
15
|
-
require 'rake/rdoctask'
|
16
|
-
Rake::RDocTask.new do |rdoc|
|
17
|
-
rdoc.rdoc_dir = 'rdoc'
|
18
|
-
rdoc.title = 'remote_table'
|
19
|
-
rdoc.options << '--line-numbers' << '--inline-source'
|
20
|
-
rdoc.rdoc_files.include('README*')
|
21
|
-
rdoc.rdoc_files.include('lib/**/*.rb')
|
22
|
-
end
|
23
|
-
rescue LoadError
|
24
|
-
puts "Rdoc is not available"
|
25
|
-
end
|
@@ -5,7 +5,6 @@ require "brighter_planet_metadata/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "brighter_planet_metadata"
|
7
7
|
s.version = BrighterPlanetMetadata::VERSION
|
8
|
-
s.platform = Gem::Platform::RUBY
|
9
8
|
s.authors = ["Seamus Abshere", "Andy Rossmeissl"]
|
10
9
|
s.email = ["seamus@abshere.net"]
|
11
10
|
s.homepage = "https://github.com/brighterplanet/brighter_planet_metadata"
|
@@ -18,17 +17,8 @@ Gem::Specification.new do |s|
|
|
18
17
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
19
18
|
s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
|
20
19
|
s.require_paths = ["lib"]
|
21
|
-
s.add_dependency 'eat'
|
22
20
|
s.add_dependency 'activesupport', '>=2.3.4'
|
23
21
|
s.add_dependency 'i18n' # activesupport?
|
24
22
|
s.add_dependency 'cache_method'
|
25
|
-
s.
|
26
|
-
s.add_development_dependency 'fakeweb'
|
27
|
-
s.add_development_dependency 'test-unit'
|
28
|
-
s.add_development_dependency 'fakefs'
|
29
|
-
s.add_development_dependency 'earth'
|
30
|
-
s.add_development_dependency 'rake'
|
31
|
-
unless RUBY_VERSION > '1.9'
|
32
|
-
s.add_development_dependency 'fastercsv' # earth
|
33
|
-
end
|
23
|
+
s.add_dependency 'multi_json'
|
34
24
|
end
|
@@ -1,14 +1,13 @@
|
|
1
1
|
require 'singleton'
|
2
|
-
require '
|
2
|
+
require 'uri'
|
3
|
+
require 'net/http'
|
4
|
+
require 'multi_json'
|
3
5
|
require 'active_support'
|
4
6
|
require 'active_support/version'
|
5
|
-
|
6
|
-
active_support/
|
7
|
-
active_support/
|
8
|
-
|
9
|
-
}.each do |active_support_3_requirement|
|
10
|
-
require active_support_3_requirement
|
11
|
-
end if ::ActiveSupport::VERSION::MAJOR == 3
|
7
|
+
if ::ActiveSupport::VERSION::MAJOR >= 3
|
8
|
+
require 'active_support/core_ext'
|
9
|
+
require 'active_support/inflector/inflections'
|
10
|
+
end
|
12
11
|
|
13
12
|
::ActiveSupport::Inflector.inflections do |inflect|
|
14
13
|
inflect.uncountable %w{ aircraft bts_aircraft }
|
@@ -23,10 +22,10 @@ module BrighterPlanet
|
|
23
22
|
include ::Singleton
|
24
23
|
LIVE_URL = {
|
25
24
|
'datasets' => 'http://data.brighterplanet.com/datasets.json',
|
26
|
-
'emitters' => 'http://
|
27
|
-
'certified_emitters' => 'http://certified.
|
25
|
+
'emitters' => 'http://impact.brighterplanet.com/emitters.json',
|
26
|
+
'certified_emitters' => 'http://certified.impact.brighterplanet.com/emitters.json',
|
28
27
|
'resources' => 'http://data.brighterplanet.com/resources.json',
|
29
|
-
'protocols' => 'http://
|
28
|
+
'protocols' => 'http://impact.brighterplanet.com/protocols.json',
|
30
29
|
}.freeze
|
31
30
|
|
32
31
|
# sabshere 2/4/11 obv these have to be updated with some regularity
|
@@ -66,56 +65,29 @@ module BrighterPlanet
|
|
66
65
|
# Clear out any cached values
|
67
66
|
def refresh
|
68
67
|
# instance_variables.each { |ivar_name| instance_variable_set ivar_name, nil }
|
69
|
-
|
68
|
+
cache_method_clear :authoritative_value_or_fallback
|
70
69
|
end
|
71
70
|
|
72
71
|
# for cache_method
|
73
|
-
|
74
|
-
|
75
|
-
HASH
|
72
|
+
def as_cache_key
|
73
|
+
'BrighterPlanet::Metadata.instance'
|
76
74
|
end
|
77
75
|
|
78
76
|
private
|
79
|
-
|
80
|
-
autoload :Cm1Authority, 'brighter_planet_metadata/cm1_authority'
|
81
|
-
def cm1_authority
|
82
|
-
Cm1Authority.instance
|
83
|
-
end
|
84
|
-
|
85
|
-
autoload :Data1Authority, 'brighter_planet_metadata/data1_authority'
|
86
|
-
def data1_authority
|
87
|
-
Data1Authority.instance
|
88
|
-
end
|
89
|
-
|
90
|
-
def authorities
|
91
|
-
[ cm1_authority, data1_authority ]
|
92
|
-
end
|
93
|
-
|
77
|
+
|
94
78
|
def deep_copy_of_authoritative_value_or_fallback(k)
|
95
|
-
|
96
|
-
case v
|
97
|
-
when ::Hash
|
98
|
-
::Hash[(v.map { |k, vv| [ k.to_s.dup, vv.to_s.dup] })]
|
99
|
-
when ::Array
|
100
|
-
v.map { |vv| vv.to_s.dup }
|
101
|
-
when ::String, ::Symbol
|
102
|
-
v.to_s.dup
|
103
|
-
else
|
104
|
-
raise "i only handle arrays of strings, hashes of strings, and strings"
|
105
|
-
end
|
79
|
+
authoritative_value_or_fallback(k).clone
|
106
80
|
end
|
107
81
|
|
108
82
|
# Used internally to pull a live list of emitters/datasets/etc. or fall back to a static one.
|
109
83
|
def authoritative_value_or_fallback(k)
|
110
84
|
k = k.to_s
|
111
|
-
if
|
112
|
-
authority.send k
|
113
|
-
elsif ::ENV['BRIGHTER_PLANET_METADATA_FALLBACKS_ONLY'] == 'true'
|
85
|
+
if ::ENV['BRIGHTER_PLANET_METADATA_FALLBACKS_ONLY'] == 'true'
|
114
86
|
$stderr.puts %{ENV['BRIGHTER_PLANET_METADATA_FALLBACKS_ONLY'] == 'true', so using fallback value for '#{k}'}
|
115
87
|
FALLBACK[k]
|
116
88
|
else
|
117
89
|
begin
|
118
|
-
hsh = ::
|
90
|
+
hsh = ::MultiJson.decode ::Net::HTTP.get(::URI.parse(LIVE_URL[k]))
|
119
91
|
kk = (k == 'certified_emitters') ? 'emitters' : k # the live certified response will contain an 'emitters' key
|
120
92
|
raise unless hsh.has_key? kk
|
121
93
|
hsh[kk]
|
data/test/helper.rb
CHANGED
@@ -2,44 +2,21 @@ require 'rubygems'
|
|
2
2
|
require 'bundler'
|
3
3
|
Bundler.setup
|
4
4
|
require 'test/unit'
|
5
|
-
require '
|
6
|
-
require 'fakefs/safe'
|
5
|
+
require 'webmock/test_unit'
|
7
6
|
require 'fileutils'
|
8
|
-
require 'active_support/string_inquirer'
|
9
7
|
$LOAD_PATH.unshift(File.dirname(__FILE__))
|
10
8
|
$LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
|
11
9
|
require 'brighter_planet_metadata'
|
10
|
+
|
12
11
|
class Test::Unit::TestCase
|
13
12
|
def setup
|
14
13
|
BrighterPlanet.metadata.refresh
|
15
|
-
|
16
|
-
|
17
|
-
Rails.application.certified = false
|
18
|
-
Rails.root = '/var/www/myapp'
|
19
|
-
Rails.env = ActiveSupport::StringInquirer.new 'development'
|
14
|
+
WebMock.enable!
|
15
|
+
WebMock.disable_net_connect!
|
20
16
|
end
|
21
17
|
def teardown
|
22
|
-
|
23
|
-
|
24
|
-
FakeWeb.allow_net_connect = true
|
25
|
-
Rails.application.certified = false
|
26
|
-
Rails.root = nil
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
require 'singleton'
|
31
|
-
require 'active_support/core_ext/module'
|
32
|
-
module Rails
|
33
|
-
mattr_accessor :root, :env
|
34
|
-
def self.application
|
35
|
-
FakeApplication.instance
|
36
|
-
end
|
37
|
-
class FakeApplication
|
38
|
-
include ::Singleton
|
39
|
-
attr_writer :certified
|
40
|
-
def certified?
|
41
|
-
@certified == true
|
42
|
-
end
|
18
|
+
WebMock.reset!
|
19
|
+
WebMock.disable!
|
43
20
|
end
|
44
21
|
end
|
45
22
|
|
data/test/test_fallback.rb
CHANGED
@@ -3,19 +3,14 @@ require 'helper'
|
|
3
3
|
class TestFallback < Test::Unit::TestCase
|
4
4
|
def setup
|
5
5
|
super
|
6
|
-
FakeWeb.clean_registry
|
7
|
-
FakeWeb.allow_net_connect = false
|
8
6
|
[
|
9
7
|
'http://data.brighterplanet.com/datasets.json',
|
10
|
-
'http://
|
11
|
-
'http://certified.
|
8
|
+
'http://impact.brighterplanet.com/emitters.json',
|
9
|
+
'http://certified.impact.brighterplanet.com/emitters.json',
|
12
10
|
'http://data.brighterplanet.com/resources.json',
|
13
|
-
'http://
|
11
|
+
'http://impact.brighterplanet.com/protocols.json',
|
14
12
|
].each do |url|
|
15
|
-
|
16
|
-
url,
|
17
|
-
:status => ["500", "Urg"],
|
18
|
-
:body => nil
|
13
|
+
WebMock.stub_request(:get, url).to_return(:status => 500)
|
19
14
|
end
|
20
15
|
end
|
21
16
|
|
data/test/test_live_remote.rb
CHANGED
@@ -1,29 +1,22 @@
|
|
1
1
|
require 'helper'
|
2
2
|
|
3
|
-
require 'active_support/json/encoding'
|
4
|
-
|
5
3
|
class TestLiveRemote < Test::Unit::TestCase
|
6
4
|
def setup
|
7
5
|
super
|
8
|
-
FakeWeb.clean_registry
|
9
|
-
FakeWeb.allow_net_connect = false
|
10
6
|
{
|
11
7
|
'http://data.brighterplanet.com/datasets.json' => { 'datasets' => %w{ LiveRemoteDataset } },
|
12
|
-
'http://
|
13
|
-
'http://certified.
|
8
|
+
'http://impact.brighterplanet.com/emitters.json' => { 'emitters' => %w{ LiveRemoteEmitter } },
|
9
|
+
'http://certified.impact.brighterplanet.com/emitters.json' => { 'emitters' => %w{ LiveRemoteCertifiedEmitter } },
|
14
10
|
'http://data.brighterplanet.com/resources.json' => { 'resources' => %w{ LiveRemoteResource } },
|
15
|
-
'http://
|
11
|
+
'http://impact.brighterplanet.com/protocols.json' => { 'protocols' => { 'fooprotocol' => 'Foo Protocol' } },
|
16
12
|
}.each do |url, hsh|
|
17
|
-
|
18
|
-
url,
|
19
|
-
:status => ["200", "OK"],
|
20
|
-
:body => hsh.to_json
|
13
|
+
WebMock.stub_request(:get, url).to_return(:status => 200, :body => MultiJson.encode(hsh))
|
21
14
|
end
|
22
15
|
end
|
23
16
|
|
24
17
|
def test_refresh
|
25
18
|
assert ::BrighterPlanet.metadata.emitters.include?('LiveRemoteEmitter')
|
26
|
-
|
19
|
+
WebMock.stub_request(:get, 'http://impact.brighterplanet.com/emitters.json').to_return(:status => 200, :body => MultiJson.encode({ 'emitters' => %w{LiveRemoteRefreshedEmitter}}))
|
27
20
|
|
28
21
|
# still the old value because it's cached...
|
29
22
|
assert ::BrighterPlanet.metadata.emitters.include?('LiveRemoteEmitter')
|
data/test/test_memory_leak.rb
CHANGED
@@ -3,9 +3,7 @@ require 'helper'
|
|
3
3
|
class TestMemoryLeak < Test::Unit::TestCase
|
4
4
|
def setup
|
5
5
|
super
|
6
|
-
|
7
|
-
FakeWeb.allow_net_connect = false
|
8
|
-
FakeWeb.register_uri :get, 'http://carbon.brighterplanet.com/emitters.json', :status => ["500", "Urg"], :body => nil
|
6
|
+
WebMock.stub_request(:get, 'http://impact.brighterplanet.com/emitters.json').to_return(:status => 500)
|
9
7
|
end
|
10
8
|
|
11
9
|
def test_attack_array
|
data/test/test_real.rb
CHANGED
@@ -2,10 +2,8 @@ require 'helper'
|
|
2
2
|
|
3
3
|
class TestReal < Test::Unit::TestCase
|
4
4
|
def setup
|
5
|
-
|
5
|
+
WebMock.disable!
|
6
6
|
BrighterPlanet.metadata.refresh
|
7
|
-
FakeWeb.clean_registry
|
8
|
-
FakeWeb.allow_net_connect = true
|
9
7
|
$old_fallback = BrighterPlanet::Metadata::FALLBACK
|
10
8
|
silence_warnings { BrighterPlanet::Metadata.const_set 'FALLBACK', Hash.new([]) }
|
11
9
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brighter_planet_metadata
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,22 +10,11 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date:
|
13
|
+
date: 2012-03-08 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
|
-
- !ruby/object:Gem::Dependency
|
16
|
-
name: eat
|
17
|
-
requirement: &2155032520 !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
|
-
requirements:
|
20
|
-
- - ! '>='
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: '0'
|
23
|
-
type: :runtime
|
24
|
-
prerelease: false
|
25
|
-
version_requirements: *2155032520
|
26
15
|
- !ruby/object:Gem::Dependency
|
27
16
|
name: activesupport
|
28
|
-
requirement: &
|
17
|
+
requirement: &2169290140 !ruby/object:Gem::Requirement
|
29
18
|
none: false
|
30
19
|
requirements:
|
31
20
|
- - ! '>='
|
@@ -33,10 +22,10 @@ dependencies:
|
|
33
22
|
version: 2.3.4
|
34
23
|
type: :runtime
|
35
24
|
prerelease: false
|
36
|
-
version_requirements: *
|
25
|
+
version_requirements: *2169290140
|
37
26
|
- !ruby/object:Gem::Dependency
|
38
27
|
name: i18n
|
39
|
-
requirement: &
|
28
|
+
requirement: &2169289720 !ruby/object:Gem::Requirement
|
40
29
|
none: false
|
41
30
|
requirements:
|
42
31
|
- - ! '>='
|
@@ -44,10 +33,10 @@ dependencies:
|
|
44
33
|
version: '0'
|
45
34
|
type: :runtime
|
46
35
|
prerelease: false
|
47
|
-
version_requirements: *
|
36
|
+
version_requirements: *2169289720
|
48
37
|
- !ruby/object:Gem::Dependency
|
49
38
|
name: cache_method
|
50
|
-
requirement: &
|
39
|
+
requirement: &2169289260 !ruby/object:Gem::Requirement
|
51
40
|
none: false
|
52
41
|
requirements:
|
53
42
|
- - ! '>='
|
@@ -55,73 +44,18 @@ dependencies:
|
|
55
44
|
version: '0'
|
56
45
|
type: :runtime
|
57
46
|
prerelease: false
|
58
|
-
version_requirements: *
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: brighter_planet_deploy
|
61
|
-
requirement: &2155030140 !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
|
-
requirements:
|
64
|
-
- - ! '>='
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
version: '0'
|
67
|
-
type: :development
|
68
|
-
prerelease: false
|
69
|
-
version_requirements: *2155030140
|
70
|
-
- !ruby/object:Gem::Dependency
|
71
|
-
name: fakeweb
|
72
|
-
requirement: &2155029500 !ruby/object:Gem::Requirement
|
73
|
-
none: false
|
74
|
-
requirements:
|
75
|
-
- - ! '>='
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
type: :development
|
79
|
-
prerelease: false
|
80
|
-
version_requirements: *2155029500
|
47
|
+
version_requirements: *2169289260
|
81
48
|
- !ruby/object:Gem::Dependency
|
82
|
-
name:
|
83
|
-
requirement: &
|
49
|
+
name: multi_json
|
50
|
+
requirement: &2169288800 !ruby/object:Gem::Requirement
|
84
51
|
none: false
|
85
52
|
requirements:
|
86
53
|
- - ! '>='
|
87
54
|
- !ruby/object:Gem::Version
|
88
55
|
version: '0'
|
89
|
-
type: :
|
90
|
-
prerelease: false
|
91
|
-
version_requirements: *2155028640
|
92
|
-
- !ruby/object:Gem::Dependency
|
93
|
-
name: fakefs
|
94
|
-
requirement: &2155023600 !ruby/object:Gem::Requirement
|
95
|
-
none: false
|
96
|
-
requirements:
|
97
|
-
- - ! '>='
|
98
|
-
- !ruby/object:Gem::Version
|
99
|
-
version: '0'
|
100
|
-
type: :development
|
101
|
-
prerelease: false
|
102
|
-
version_requirements: *2155023600
|
103
|
-
- !ruby/object:Gem::Dependency
|
104
|
-
name: earth
|
105
|
-
requirement: &2155022580 !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
|
-
requirements:
|
108
|
-
- - ! '>='
|
109
|
-
- !ruby/object:Gem::Version
|
110
|
-
version: '0'
|
111
|
-
type: :development
|
112
|
-
prerelease: false
|
113
|
-
version_requirements: *2155022580
|
114
|
-
- !ruby/object:Gem::Dependency
|
115
|
-
name: rake
|
116
|
-
requirement: &2155021260 !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
|
-
requirements:
|
119
|
-
- - ! '>='
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: '0'
|
122
|
-
type: :development
|
56
|
+
type: :runtime
|
123
57
|
prerelease: false
|
124
|
-
version_requirements: *
|
58
|
+
version_requirements: *2169288800
|
125
59
|
description: What emitters (carbon models), resources (data classes), datasets, etc.
|
126
60
|
we offer.
|
127
61
|
email:
|
@@ -138,14 +72,10 @@ files:
|
|
138
72
|
- bin/brighter_planet_metadata
|
139
73
|
- brighter_planet_metadata.gemspec
|
140
74
|
- lib/brighter_planet_metadata.rb
|
141
|
-
- lib/brighter_planet_metadata/cm1_authority.rb
|
142
|
-
- lib/brighter_planet_metadata/data1_authority.rb
|
143
75
|
- lib/brighter_planet_metadata/metadata.rb
|
144
76
|
- lib/brighter_planet_metadata/version.rb
|
145
77
|
- test/helper.rb
|
146
78
|
- test/test_fallback.rb
|
147
|
-
- test/test_live_cm1.rb
|
148
|
-
- test/test_live_data1.rb
|
149
79
|
- test/test_live_remote.rb
|
150
80
|
- test/test_memory_leak.rb
|
151
81
|
- test/test_real.rb
|
@@ -169,15 +99,14 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
169
99
|
version: '0'
|
170
100
|
requirements: []
|
171
101
|
rubyforge_project: brighter_planet_metadata
|
172
|
-
rubygems_version: 1.8.
|
102
|
+
rubygems_version: 1.8.15
|
173
103
|
signing_key:
|
174
104
|
specification_version: 3
|
175
105
|
summary: Names of Brighter Planet things
|
176
106
|
test_files:
|
177
107
|
- test/helper.rb
|
178
108
|
- test/test_fallback.rb
|
179
|
-
- test/test_live_cm1.rb
|
180
|
-
- test/test_live_data1.rb
|
181
109
|
- test/test_live_remote.rb
|
182
110
|
- test/test_memory_leak.rb
|
183
111
|
- test/test_real.rb
|
112
|
+
has_rdoc:
|
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
module BrighterPlanet
|
3
|
-
class Metadata
|
4
|
-
class Cm1Authority
|
5
|
-
include ::Singleton
|
6
|
-
def authority?(method_id)
|
7
|
-
return unless defined?(::Rails) and ::Rails.env.production? and brighter_planet_server?
|
8
|
-
method_id = method_id.to_s
|
9
|
-
if method_id == 'certified_emitters'
|
10
|
-
::Rails.application.certified?
|
11
|
-
else
|
12
|
-
respond_to? method_id
|
13
|
-
end
|
14
|
-
end
|
15
|
-
def emitters
|
16
|
-
ary = []
|
17
|
-
::ObjectSpace.each_object(::BrighterPlanet::Emitter) do |obj|
|
18
|
-
ary.push obj.name.demodulize
|
19
|
-
end
|
20
|
-
ary
|
21
|
-
end
|
22
|
-
def certified_emitters
|
23
|
-
emitters
|
24
|
-
end
|
25
|
-
def protocols
|
26
|
-
emitters.map(&:constantize).map(&:protocols).flatten.uniq.inject({}) do |memo, p|
|
27
|
-
memo[p] = ::File.read(::File.join(::Rails.root, 'app', 'views', 'protocols', 'names', "_#{p}.html.erb")).strip
|
28
|
-
memo
|
29
|
-
end
|
30
|
-
end
|
31
|
-
private
|
32
|
-
def brighter_planet_server?
|
33
|
-
require 'brighter_planet_deploy'
|
34
|
-
::BrighterPlanet.deploy.servers.me.service == 'Cm1'
|
35
|
-
rescue ::Exception
|
36
|
-
false
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
module BrighterPlanet
|
3
|
-
class Metadata
|
4
|
-
class Data1Authority
|
5
|
-
include ::Singleton
|
6
|
-
def authority?(method_id)
|
7
|
-
return unless defined?(::Rails) and ::Rails.env.production? and brighter_planet_server?
|
8
|
-
respond_to? method_id
|
9
|
-
end
|
10
|
-
def resources
|
11
|
-
::Earth.resources.sort
|
12
|
-
end
|
13
|
-
def datasets
|
14
|
-
::Dir[::File.expand_path(::File.join(::Rails.root, 'app', 'models', '**', '*.rb'))].select { |f| ::File.read(f) =~ /class [\:A-Za-z0-9]+ < Dataset/ }.map { |path| ::File.basename(path, '.rb').camelcase }.sort
|
15
|
-
end
|
16
|
-
private
|
17
|
-
def brighter_planet_server?
|
18
|
-
require 'brighter_planet_deploy'
|
19
|
-
::BrighterPlanet.deploy.servers.me.service == 'Data1'
|
20
|
-
rescue ::Exception
|
21
|
-
false
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/test/test_live_cm1.rb
DELETED
@@ -1,60 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
|
3
|
-
module BrighterPlanet
|
4
|
-
module Emitter
|
5
|
-
end
|
6
|
-
module LiveCm1Emitter
|
7
|
-
extend BrighterPlanet::Emitter
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
class TestLiveCm1 < Test::Unit::TestCase
|
12
|
-
def setup
|
13
|
-
super
|
14
|
-
FakeFS.activate!
|
15
|
-
Rails.env = ActiveSupport::StringInquirer.new 'production'
|
16
|
-
Rails.root = '/data/edge/current'
|
17
|
-
FileUtils.mkdir_p '/data/edge/current/config/brighter_planet_deploy'
|
18
|
-
FileUtils.mkdir_p '/data/edge/current/public/brighter_planet_deploy'
|
19
|
-
File.open('/data/edge/current/config/brighter_planet_deploy/service', 'w') { |f| f.write 'Cm1' }
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_self_awareness
|
23
|
-
assert ::Rails.env.production?
|
24
|
-
assert_equal 'Cm1', ::BrighterPlanet.deploy.servers.me.service
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_authority
|
28
|
-
assert ::BrighterPlanet::Metadata::Cm1Authority.instance.authority?('emitters')
|
29
|
-
|
30
|
-
# you don't have authority to say what's certified...
|
31
|
-
assert !::BrighterPlanet::Metadata::Cm1Authority.instance.authority?('certified_emitters')
|
32
|
-
|
33
|
-
# now you do
|
34
|
-
Rails.application.certified = true
|
35
|
-
assert ::BrighterPlanet::Metadata::Cm1Authority.instance.authority?('certified_emitters')
|
36
|
-
ensure
|
37
|
-
Rails.application.certified = false
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_emitters
|
41
|
-
assert_equal %w{LiveCm1Emitter}, ::BrighterPlanet.metadata.emitters
|
42
|
-
end
|
43
|
-
|
44
|
-
def test_what_must_come_from_other_sources
|
45
|
-
assert_equal ::BrighterPlanet::Metadata::FALLBACK['resources'], ::BrighterPlanet.metadata.resources
|
46
|
-
end
|
47
|
-
|
48
|
-
# note: you still get a list of certified emitters! the point is that you, as the edge server, don't decide which ones they are
|
49
|
-
# in other words, nothing is ever certified unless Rails.application.certified?
|
50
|
-
def test_certified_emitters_as_if_on_edge
|
51
|
-
assert_equal ::BrighterPlanet::Metadata::FALLBACK['certified_emitters'], ::BrighterPlanet.metadata.certified_emitters
|
52
|
-
end
|
53
|
-
|
54
|
-
def test_certified_emitters_as_if_on_certified
|
55
|
-
Rails.application.certified = true
|
56
|
-
assert_equal %w{LiveCm1Emitter}, ::BrighterPlanet.metadata.certified_emitters
|
57
|
-
ensure
|
58
|
-
Rails.application.certified = false
|
59
|
-
end
|
60
|
-
end
|
data/test/test_live_data1.rb
DELETED
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'helper'
|
2
|
-
require 'earth'
|
3
|
-
|
4
|
-
class FakeEarth
|
5
|
-
def self.resources
|
6
|
-
[ 'LiveData1Resource' ]
|
7
|
-
end
|
8
|
-
end
|
9
|
-
|
10
|
-
class TestLiveData1 < Test::Unit::TestCase
|
11
|
-
def setup
|
12
|
-
super
|
13
|
-
FakeFS.activate!
|
14
|
-
|
15
|
-
# faking resources
|
16
|
-
eval %{
|
17
|
-
::OldEarth = ::Earth
|
18
|
-
::Earth = ::FakeEarth
|
19
|
-
}
|
20
|
-
|
21
|
-
# faking deploy
|
22
|
-
Rails.env = ActiveSupport::StringInquirer.new 'production'
|
23
|
-
Rails.root = '/var/www/data1/current'
|
24
|
-
FileUtils.mkdir_p '/var/www/data1/current/config/brighter_planet_deploy'
|
25
|
-
FileUtils.mkdir_p '/var/www/data1/current/public/brighter_planet_deploy'
|
26
|
-
File.open('/var/www/data1/current/config/brighter_planet_deploy/service', 'w') { |f| f.write 'Data1' }
|
27
|
-
|
28
|
-
# FAKING DATASETS
|
29
|
-
eval "class ::Dataset; end"
|
30
|
-
fake_dataset_path = File.join ::Rails.root, 'app', 'models', 'live_data1_dataset.rb'
|
31
|
-
FileUtils.mkdir_p File.dirname(fake_dataset_path)
|
32
|
-
File.open(fake_dataset_path, 'w') { |f| f.write "class ::LiveData1Dataset < Dataset; end"}
|
33
|
-
eval File.read(fake_dataset_path) unless defined?(::LiveData1Dataset)
|
34
|
-
end
|
35
|
-
|
36
|
-
def teardown
|
37
|
-
super
|
38
|
-
eval %{
|
39
|
-
::Earth = ::OldEarth
|
40
|
-
}
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_self_awareness
|
44
|
-
assert ::Rails.env.production?
|
45
|
-
assert_equal 'Data1', ::BrighterPlanet.deploy.servers.me.service
|
46
|
-
end
|
47
|
-
|
48
|
-
def test_authority
|
49
|
-
assert ::BrighterPlanet.metadata.send(:data1_authority).authority?('resources')
|
50
|
-
end
|
51
|
-
|
52
|
-
def test_resources
|
53
|
-
assert_equal %w{LiveData1Resource}, ::BrighterPlanet.metadata.resources
|
54
|
-
end
|
55
|
-
|
56
|
-
def test_datasets
|
57
|
-
assert_equal %w{LiveData1Dataset}, ::BrighterPlanet.metadata.datasets
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_what_must_come_from_other_sources
|
61
|
-
assert_equal ::BrighterPlanet::Metadata::FALLBACK['emitters'], ::BrighterPlanet.metadata.emitters
|
62
|
-
end
|
63
|
-
|
64
|
-
def test_inflection
|
65
|
-
assert_equal 'GreenhouseGases', 'GreenhouseGas'.pluralize
|
66
|
-
assert_equal 'greenhouse_gases', 'greenhouse_gas'.pluralize
|
67
|
-
assert_equal 'GreenhouseGas', 'GreenhouseGases'.singularize
|
68
|
-
assert_equal 'Aircraft', 'Aircraft'.pluralize
|
69
|
-
assert_equal 'aircraft', 'aircraft'.pluralize
|
70
|
-
assert_equal 'Aircraft', 'Aircraft'.singularize
|
71
|
-
end
|
72
|
-
end
|