brighter_planet_metadata 0.0.16 → 0.1.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 +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
|