right_support 1.4.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -20,7 +20,7 @@
20
20
  # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
21
  # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
22
 
23
- if_require_succeeds('net/ssh') do
23
+ if require_succeeds?('net/ssh')
24
24
  module RightSupport::Validation
25
25
  # Validation methods pertaining to the Secure Shell (SSH) protocol.
26
26
  module SSH
@@ -68,4 +68,4 @@ if_require_succeeds('net/ssh') do
68
68
  end
69
69
  end
70
70
  end
71
- end
71
+ end
@@ -7,10 +7,10 @@ spec = Gem::Specification.new do |s|
7
7
  s.required_ruby_version = Gem::Requirement.new(">= 1.8.7")
8
8
 
9
9
  s.name = 'right_support'
10
- s.version = '1.4.1'
11
- s.date = '2012-05-01'
10
+ s.version = '2.0.0'
11
+ s.date = '2012-03-23'
12
12
 
13
- s.authors = ['Tony Spataro', 'Sergey Sergyenko', 'Ryan Williamson', 'Lee Kirchhoff']
13
+ s.authors = ['Tony Spataro', 'Sergey Sergyenko', 'Ryan Williamson', 'Lee Kirchhoff', 'Sergey Enin']
14
14
  s.email = 'support@rightscale.com'
15
15
  s.homepage= 'https://github.com/rightscale/right_support'
16
16
 
metadata CHANGED
@@ -1,24 +1,25 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: right_support
3
3
  version: !ruby/object:Gem::Version
4
- hash: 5
4
+ hash: 15
5
5
  prerelease: false
6
6
  segments:
7
- - 1
8
- - 4
9
- - 1
10
- version: 1.4.1
7
+ - 2
8
+ - 0
9
+ - 0
10
+ version: 2.0.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Tony Spataro
14
14
  - Sergey Sergyenko
15
15
  - Ryan Williamson
16
16
  - Lee Kirchhoff
17
+ - Sergey Enin
17
18
  autorequire:
18
19
  bindir: bin
19
20
  cert_chain: []
20
21
 
21
- date: 2012-05-01 00:00:00 -07:00
22
+ date: 2012-03-23 00:00:00 -07:00
22
23
  default_executable:
23
24
  dependencies: []
24
25
 
@@ -34,12 +35,10 @@ files:
34
35
  - LICENSE
35
36
  - README.rdoc
36
37
  - lib/right_support.rb
37
- - lib/right_support/config.rb
38
- - lib/right_support/config/feature_set.rb
39
- - lib/right_support/config/recursive_true_class.rb
40
- - lib/right_support/config/yaml_config.rb
41
38
  - lib/right_support/crypto.rb
42
39
  - lib/right_support/crypto/signed_hash.rb
40
+ - lib/right_support/data.rb
41
+ - lib/right_support/data/uuid.rb
43
42
  - lib/right_support/db.rb
44
43
  - lib/right_support/db/cassandra_model.rb
45
44
  - lib/right_support/log.rb
@@ -49,22 +48,22 @@ files:
49
48
  - lib/right_support/log/multiplexer.rb
50
49
  - lib/right_support/log/null_logger.rb
51
50
  - lib/right_support/log/system_logger.rb
52
- - lib/right_support/log/tag_logger.rb
53
51
  - lib/right_support/net.rb
54
52
  - lib/right_support/net/address_helper.rb
55
- - lib/right_support/net/balancing.rb
56
- - lib/right_support/net/balancing/health_check.rb
57
- - lib/right_support/net/balancing/round_robin.rb
58
- - lib/right_support/net/balancing/sticky_policy.rb
59
53
  - lib/right_support/net/dns.rb
60
54
  - lib/right_support/net/http_client.rb
55
+ - lib/right_support/net/lb.rb
56
+ - lib/right_support/net/lb/health_check.rb
57
+ - lib/right_support/net/lb/round_robin.rb
58
+ - lib/right_support/net/lb/sticky.rb
61
59
  - lib/right_support/net/request_balancer.rb
62
60
  - lib/right_support/net/ssl.rb
63
61
  - lib/right_support/net/ssl/open_ssl_patch.rb
64
62
  - lib/right_support/net/string_encoder.rb
65
63
  - lib/right_support/rack.rb
66
- - lib/right_support/rack/custom_logger.rb
64
+ - lib/right_support/rack/log_setter.rb
67
65
  - lib/right_support/rack/request_logger.rb
66
+ - lib/right_support/rack/request_tracker.rb
68
67
  - lib/right_support/ruby.rb
69
68
  - lib/right_support/ruby/easy_singleton.rb
70
69
  - lib/right_support/ruby/object_extensions.rb
@@ -1,95 +0,0 @@
1
- #
2
- # Copyright (c) 2012 RightScale Inc
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
-
23
- module RightSupport::Config
24
-
25
- # Returns new instance of FeatureSet class,
26
- # with loaded from config_source configuration
27
- #
28
- # === Parameters
29
- # config_source(IO|String):: File` path, IO or raw yaml.
30
- #
31
- # === Return
32
- # (FeatureSet):: new instance of FeatureSet class
33
- def self.features(config_source)
34
- return FeatureSet.new(config_source)
35
- end
36
-
37
- class FeatureSet
38
-
39
- attr_accessor :configuration_source
40
- attr_accessor :configuration
41
-
42
- # Create features configuration object
43
- #
44
- # === Parameters
45
- # cfg_source(IO|String):: File path, IO or raw yaml.
46
- def initialize(cfg_source)
47
- @configuration = load(cfg_source)
48
- end
49
-
50
- # Returns configuration value
51
- #
52
- # === Parameters
53
- # feature_group(String):: Feature group name
54
- # feature(String|nil):: Feature name
55
- #
56
- # === Return
57
- # (String|Boolean):: Configuration value
58
- def [](feature_group, feature=nil)
59
- return_value = true
60
- if @configuration[feature_group]
61
- if feature == nil
62
- return_value = @configuration[feature_group]
63
- else
64
- return_value = @configuration[feature_group][feature]
65
- end
66
- else
67
- return_value = RecursiveTrueClass.new
68
- end
69
- return_value = true if return_value == nil
70
- return_value
71
- end
72
-
73
- # Load configuration source
74
- #
75
- # === Parameters
76
- # something(IO|String|Hash):: File path, IO, raw YAML string, or a pre-loaded Hash
77
- #
78
- # === Return
79
- # (Hash|nil):: Loaded yaml file
80
- #
81
- # === Raise
82
- # (ArgumentError):: If configuration source can`t be loaded
83
- def load(something)
84
- return_value = nil
85
- @configuration_source = something
86
- raise ArgumentError, "Can't coerce #{something} into YAML/Hash" unless (return_value = YAMLConfig.read(something))
87
- return_value
88
- end
89
-
90
- end
91
-
92
- # Temporary alias for FeatureSet class, to avoid disrupting downstream development
93
- Feature = FeatureSet
94
-
95
- end
@@ -1,62 +0,0 @@
1
- #
2
- # Copyright (c) 2012 RightScale Inc
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
- require 'yaml'
23
-
24
- module RightSupport::Config
25
-
26
- # Helper that encapsulates logic for loading YAML configuration hashes from various sources
27
- # which can include strings, IO objects, or already-loaded YAML in the form of a Hash.
28
- module YAMLConfig
29
-
30
- class << self
31
-
32
- # Load yaml source
33
- #
34
- # === Parameters
35
- # something(IO|String|Hash):: File path, IO, raw YAML string, or a pre-loaded Hash
36
- #
37
- # === Returns
38
- # (Boolean|Hash):: Loaded yaml file or false if a RuntimeError occurred while loading
39
- def read(something)
40
- return_value = false
41
-
42
- begin
43
- if something.kind_of?(Hash)
44
- return_value = something
45
- elsif File.exists?(something)
46
- return_value = YAML.load_file(something)
47
- else
48
- return_value = YAML.load(something)
49
- end
50
- raise unless return_value.kind_of?(Hash)
51
- rescue
52
- return_value = false
53
- end
54
-
55
- return_value
56
- end
57
-
58
- end
59
-
60
- end
61
-
62
- end
@@ -1,72 +0,0 @@
1
- #
2
- # Copyright (c) 2011 RightScale Inc
3
- #
4
- # Permission is hereby granted, free of charge, to any person obtaining
5
- # a copy of this software and associated documentation files (the
6
- # "Software"), to deal in the Software without restriction, including
7
- # without limitation the rights to use, copy, modify, merge, publish,
8
- # distribute, sublicense, and/or sell copies of the Software, and to
9
- # permit persons to whom the Software is furnished to do so, subject to
10
- # the following conditions:
11
- #
12
- # The above copyright notice and this permission notice shall be
13
- # included in all copies or substantial portions of the Software.
14
- #
15
- # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
- # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
- # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
- # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
- # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
- # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
- # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
-
23
- require 'logger'
24
-
25
- module RightSupport::Log
26
- # A logger that prepends a tag to every message that is emitted. Can be used to
27
- # correlate logs with a Web session ID, transaction ID or other context.
28
- #
29
- # The user of this logger is responsible for calling #tag= to set the tag as
30
- # appropriate, e.g. in a Web request around-filter.
31
- #
32
- # This logger uses thread-local storage (TLS) to provide tagging on a per-thread
33
- # basis; however, it does not account for EventMachine, neverblock, the use of
34
- # Ruby fibers, or any other phenomenon that can "hijack" a thread's call stack.
35
- #
36
- class TagLogger < FilterLogger
37
- # Prepend the current tag to the log message; return the same severity and
38
- # the modified message.
39
- #
40
- # === Parameters
41
- # severity(Integer):: one of the severity constants defined by Logger
42
- # messgae(String):: the log message
43
- #
44
- # === Return
45
- # Returns a pair consisting of the filtered [severity, message].
46
- #
47
- def filter(severity, message)
48
- @tls_id ||= "tag_logger_#{self.object_id}"
49
- tag = Thread.current[@tls_id] || ''
50
- if tag
51
- return [severity, tag + message]
52
- else
53
- return [severity, message]
54
- end
55
- end
56
-
57
- attr_reader :tag
58
-
59
- # Set the tag for this logger.
60
- #
61
- # === Parameters
62
- # tag(String|nil):: the new tag, or nil to remove the tag
63
- #
64
- # === Return
65
- # String:: returns the new tag
66
- def tag=(tag)
67
- @tag = tag
68
- @tls_id ||= "tag_logger_#{self.object_id}"
69
- Thread.current[@tls_id] = @tag
70
- end
71
- end
72
- end