fwissr 1.0.1 → 1.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,15 @@
1
- ---
2
- SHA1:
3
- metadata.gz: 7b60e1c93fd5fdd4b3d8b81f044bf954eebe4983
4
- data.tar.gz: 540b15881e2030ec311ea5872e77e8704a98f4d4
5
- SHA512:
6
- metadata.gz: f66e1dc7a1ceca8a2ca76b45ea97a02d2eaaf28d25f6e12b20e1789c83ea039fa13192502fd3bb2bbc70e1c07c2d2c5e90efa084bd82ca5b9a4d3db5f9be1ea1
7
- data.tar.gz: 147b2802a910e2aba9ae169c6bd8769ec6c584699ad337e005039d339f9a0a6e155745bc206be8acac5e37bbd1299ec0d92d2a6e22b34eeeda5a3a3e2976b3fe
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjAwYWY0ZDQ1ODQwZWM2ZGY5MDEwZDFlMmUwODM5OGYzYWU0ZWEzZQ==
5
+ data.tar.gz: !binary |-
6
+ NzNiZjU0MzQwOTRiZDkzYzIwNGNhMDMyODk3OGU5MjFmYzg0MjZkMw==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ ODU1NmM4ZDFhZjU2NmMzMmQ3YTVmMzZjY2UyMjVlMTI4ODJlYzc4MmJjOTY4
10
+ NjVlMDFjY2VmMTBhZGUyZDcyZDE3ODBlMzhkZjNlZjU1YWU3OTJiYTAwYjAz
11
+ M2VjOGNjYjQxYzgzYjU2NTQ0MGE5NWJlNjQ3NjU0MGMzN2Y4ZGU=
12
+ data.tar.gz: !binary |-
13
+ MDA0NmIzM2RlYzI1Mzg0NjE0NGY3M2ZlOTc2YTEyODUxODVjMWE3YzMwMjVm
14
+ MzgxODAwYzhjYzcyMzZjOGQ3MGE0MmNjMDJhNzViMWExZGE0MDRkMzc0OGMx
15
+ OTU4YWFmZjgwYTRiNjJkOTMwNTRiZWE5MzFhMTJkZGE0YzQyMzE=
@@ -17,17 +17,14 @@ require 'fwissr/source'
17
17
  require 'fwissr/registry'
18
18
 
19
19
  #
20
- # Global Registry
21
- # ===============
20
+ # Fwissr loads all conf files in directories: +/etc/fwissr/+ and +~/.fwissr/+
22
21
  #
23
- # Fwissr loads all conf files in main directories: +/etc/fwissr/+ and +~/.fwissr/+
22
+ # Two conf files are handled differently: +/etc/fwissr/fwissr.json+ and +~/.fwissr/fwissr.json+
24
23
  #
25
- # Two conf files are treated differently: +/etc/fwissr/fwissr.json+ and +~/.fwissr/fwissr.json+
24
+ # These two main conf files are 'top_level' ones and so their settings are added to registry root. They can
25
+ # too contain a +fwissr_sources+ setting that is used to setup additional sources.
26
26
  #
27
- # These two main conf files are 'top_level' ones and so their settings are added to global registry root. They can
28
- # too contain a +fwissr_sources+ setting that is then used to setup additional sources.
29
- #
30
- # Global registry is accessed with Fwissr#[] method
27
+ # Registry is accessed with Fwissr#[] method
31
28
  #
32
29
  # @example +/etc/fwissr/fwissr.json+ file:
33
30
  #
@@ -38,7 +35,7 @@ require 'fwissr/registry'
38
35
  # { 'mongodb': 'mongodb://db1.example.net/my_app', 'collection': 'config', 'refresh': true },
39
36
  # ],
40
37
  # 'fwissr_refresh_period': 30
41
- # }
38
+ # }
42
39
  #
43
40
  module Fwissr
44
41
 
@@ -55,13 +52,19 @@ module Fwissr
55
52
  attr_writer :main_conf_path, :main_user_conf_path
56
53
 
57
54
  # Main config files directory
55
+ #
58
56
  # @api private
57
+ #
58
+ # @return [String] Directory path
59
59
  def main_conf_path
60
60
  @main_conf_path ||= DEFAULT_MAIN_CONF_PATH
61
61
  end
62
62
 
63
63
  # User's specific config files directory
64
+ #
64
65
  # @api private
66
+ #
67
+ # @return [String] Directory path
65
68
  def main_user_conf_path
66
69
  @main_user_conf_path ||= File.join(Fwissr.find_home, DEFAULT_MAIN_USER_CONF_DIR)
67
70
  end
@@ -70,6 +73,8 @@ module Fwissr
70
73
  #
71
74
  # @note Borrowed from rubygems
72
75
  # @api private
76
+ #
77
+ # @return [String] Directory path
73
78
  def find_home
74
79
  ['HOME', 'USERPROFILE'].each do |homekey|
75
80
  return ENV[homekey] if ENV[homekey]
@@ -91,6 +96,7 @@ module Fwissr
91
96
  end
92
97
 
93
98
  # Parse command line arguments
99
+ #
94
100
  # @api private
95
101
  def parse_args!(argv)
96
102
  args = {
@@ -149,8 +155,11 @@ module Fwissr
149
155
  args
150
156
  end
151
157
 
152
- # Load global registry
158
+ # Load registry
159
+ #
153
160
  # @api private
161
+ #
162
+ # @return [Hash] Registry
154
163
  def global_registry
155
164
  @global_registry ||= begin
156
165
  result = Fwissr::Registry.new('refresh_period' => self.main_conf['fwissr_refresh_period'])
@@ -179,7 +188,10 @@ module Fwissr
179
188
  end
180
189
 
181
190
  # Main config
191
+ #
182
192
  # @api private
193
+ #
194
+ # @return [Hash] Configuration from main +fwissr.json+ files
183
195
  def main_conf
184
196
  @main_conf ||= begin
185
197
  result = { }
@@ -197,34 +209,42 @@ module Fwissr
197
209
  end
198
210
 
199
211
  # Main config file
212
+ #
200
213
  # @api private
214
+ #
215
+ # @return [String] File path
201
216
  def main_conf_file
202
217
  @main_conf_file ||= File.join(self.main_conf_path, MAIN_CONF_FILE)
203
218
  end
204
219
 
205
220
  # Main user's config file
221
+ #
206
222
  # @api private
223
+ #
224
+ # @return [String] File path
207
225
  def main_user_conf_file
208
226
  @main_user_conf_file ||= File.join(self.main_user_conf_path, MAIN_CONF_FILE)
209
227
  end
210
228
 
211
- # Global registry accessor
229
+ # Registry accessor
212
230
  #
213
- # @param key [String] setting key
214
- # @return [Object] setting value
231
+ # @param key [String] Setting key
232
+ # @return [Object] Setting value
215
233
  def [](key)
216
234
  self.global_registry[key]
217
235
  end
218
236
 
219
237
  alias :get :[]
220
238
 
221
- # Dumps global registry keys
239
+ # Dumps registry keys
222
240
  #
223
241
  # @return [Array] Keys list
224
242
  def keys
225
243
  self.global_registry.keys
226
244
  end
227
245
 
246
+ # Dumps registry
247
+ #
228
248
  # @return [Hash] The entire registry
229
249
  def dump
230
250
  self.global_registry.dump
@@ -237,9 +257,10 @@ module Fwissr
237
257
 
238
258
  # Parse a configuration file
239
259
  #
240
- # @param conf_file_path [String] Configuration file path
241
- # @return [Hash] Parse configuration
242
260
  # @api private
261
+ #
262
+ # @param conf_file_path [String] Configuration file path
263
+ # @return [Hash] Parsed configuration
243
264
  def parse_conf_file(conf_file_path)
244
265
  conf_file_ext = File.extname(conf_file_path)
245
266
 
@@ -259,14 +280,26 @@ module Fwissr
259
280
  end
260
281
  end
261
282
 
283
+ # Merge two conf files
284
+ #
262
285
  # @note Borrowed from rails
263
286
  # @api private
287
+ #
288
+ # @param to_hash [Hash] Merge to this conf
289
+ # @param other_hash [Hash] Merge this conf
290
+ # @return [Hash] Merged configuration
264
291
  def merge_conf(to_hash, other_hash)
265
292
  self.merge_conf!(to_hash.dup, other_hash)
266
293
  end
267
294
 
295
+ # Merge two conf files (in place)
296
+ #
268
297
  # @note Borrowed from rails
269
298
  # @api private
299
+ #
300
+ # @param to_hash [Hash] Merge to this conf
301
+ # @param other_hash [Hash] Merge this conf
302
+ # @return [Hash] Merged configuration
270
303
  def merge_conf!(to_hash, other_hash)
271
304
  other_hash.each_pair do |k,v|
272
305
  tv = to_hash[k]
@@ -276,7 +309,11 @@ module Fwissr
276
309
  end
277
310
 
278
311
  # Simple deep freezer
312
+ #
279
313
  # @api private
314
+ #
315
+ # @param obj [Object] Object to freeze
316
+ # @return [Object] Deep frozen object
280
317
  def deep_freeze(obj)
281
318
  if obj.is_a?(Hash)
282
319
  obj.each do |k, v|
@@ -11,8 +11,10 @@ module Fwissr
11
11
  # API
12
12
  #
13
13
 
14
+ # [Integer] Refresh period
14
15
  attr_reader :refresh_period
15
16
 
17
+ # Init
16
18
  def initialize(options = { })
17
19
  @refresh_period = options['refresh_period'] || DEFAULT_REFRESH_PERIOD
18
20
 
@@ -54,6 +56,7 @@ module Fwissr
54
56
  # Get a registry key value
55
57
  #
56
58
  # @param key [String] Key
59
+ # @return [Object] Value
57
60
  def get(key)
58
61
  # split key
59
62
  key_ary = key.split('/')
@@ -99,6 +102,8 @@ module Fwissr
99
102
  end
100
103
 
101
104
  # @api private
105
+ #
106
+ # @return [true,false] Is there at least one refreshable source ?
102
107
  def have_refreshable_source?
103
108
  @semaphore.synchronize do
104
109
  !@sources.find { |source| source.can_refresh? }.nil?
@@ -160,6 +165,7 @@ module Fwissr
160
165
  end
161
166
 
162
167
  # Helper for #keys
168
+ #
163
169
  # @api private
164
170
  def _keys(result, key_ary, hash)
165
171
  hash.each do |key, value|
@@ -5,6 +5,10 @@ class Fwissr::Source
5
5
  autoload :Mongodb, 'fwissr/source/mongodb'
6
6
 
7
7
  class << self
8
+ # Instanciate source from settings
9
+ #
10
+ # @param settings [Hash] Source settings
11
+ # @return [Fwissr::Source::File, Fwissr::Source::Mongodb] Source instance
8
12
  def from_settings(settings)
9
13
  raise "Unexpected source settings class: #{settings.inspect}" unless settings.is_a?(Hash)
10
14
 
@@ -23,8 +27,10 @@ class Fwissr::Source
23
27
  # API
24
28
  #
25
29
 
30
+ # [Hash] Source options
26
31
  attr_reader :options
27
32
 
33
+ # Init
28
34
  def initialize(options = { })
29
35
  @options = options
30
36
 
@@ -38,7 +44,7 @@ class Fwissr::Source
38
44
 
39
45
  # Source can be refreshed ?
40
46
  #
41
- # @return [Boolean] Is it a refreshable source ?
47
+ # @return [true,false] Is it a refreshable source ?
42
48
  def can_refresh?
43
49
  @options && (@options['refresh'] == true)
44
50
  end
@@ -59,6 +65,7 @@ class Fwissr::Source
59
65
  # Fetch conf from source
60
66
  #
61
67
  # @abstract MUST be implemented by child class
68
+ #
62
69
  # @return [Hash] The source's configuration
63
70
  def fetch_conf
64
71
  raise "not implemented"
@@ -30,8 +30,10 @@ class Fwissr::Source::File < Fwissr::Source
30
30
  end # class << self
31
31
 
32
32
 
33
+ # [Array] Files names corresponding to 'top level' configurations
33
34
  TOP_LEVEL_CONF_FILES = [ 'fwissr' ].freeze
34
35
 
36
+ # [String] File path
35
37
  attr_reader :path
36
38
 
37
39
  #
@@ -71,7 +73,12 @@ class Fwissr::Source::File < Fwissr::Source
71
73
  # PRIVATE
72
74
  #
73
75
 
76
+ # Merge two conf files
77
+ #
74
78
  # @api private
79
+ #
80
+ # @param result [Hash] Merge to that existing conf
81
+ # @param conf_file_path [String] File path
75
82
  def merge_conf_file!(result, conf_file_path)
76
83
  # parse conf file
77
84
  conf = Fwissr.parse_conf_file(conf_file_path)
@@ -17,8 +17,10 @@ class Fwissr::Source::Mongodb < Fwissr::Source
17
17
  # @api private
18
18
  class Connection
19
19
 
20
+ # [String] Database name
20
21
  attr_reader :db_name
21
22
 
23
+ # Init
22
24
  def initialize(uri)
23
25
  raise "URI is missing: #{uri}" if (uri.nil? || uri == '')
24
26
 
@@ -59,6 +61,9 @@ class Fwissr::Source::Mongodb < Fwissr::Source
59
61
  end
60
62
 
61
63
  # Database collection
64
+ #
65
+ # @param col_name [String] Collection name
66
+ # @return [Object] Collection handler
62
67
  def collection(col_name)
63
68
  @collections[col_name] ||= begin
64
69
  case @kind
@@ -71,6 +76,9 @@ class Fwissr::Source::Mongodb < Fwissr::Source
71
76
  end
72
77
 
73
78
  # Returns an Enumerator for all documents from given collection
79
+ #
80
+ # @param col_name [String] Collection name
81
+ # @return [Enumerator] Collection enumerator
74
82
  def fetch(col_name)
75
83
  case @kind
76
84
  when :moped, :mongo
@@ -79,6 +87,9 @@ class Fwissr::Source::Mongodb < Fwissr::Source
79
87
  end
80
88
 
81
89
  # Insert document in collection
90
+ #
91
+ # @param col_name [String] Collection name
92
+ # @param doc [Hash] Document to insert
82
93
  def insert(col_name, doc)
83
94
  case @kind
84
95
  when :moped, :mongo
@@ -87,6 +98,8 @@ class Fwissr::Source::Mongodb < Fwissr::Source
87
98
  end
88
99
 
89
100
  # Create a collection
101
+ #
102
+ # @param col_name [String] Collection name
90
103
  def create_collection(col_name)
91
104
  case @kind
92
105
  when :moped
@@ -97,6 +110,8 @@ class Fwissr::Source::Mongodb < Fwissr::Source
97
110
  end
98
111
 
99
112
  # Drop database
113
+ #
114
+ # @param db_name [String] Database name
100
115
  def drop_database(db_name)
101
116
  case @kind
102
117
  when :moped
@@ -127,7 +142,12 @@ class Fwissr::Source::Mongodb < Fwissr::Source
127
142
  self.new(conn, settings['collection'], options)
128
143
  end
129
144
 
145
+ # Get a memoized connection
146
+ #
130
147
  # @api private
148
+ #
149
+ # @param uri [String] Connection URI
150
+ # @return [Fwissr::Source::Mongodb::Connection] Connection handler
131
151
  def connection_for_uri(uri)
132
152
  @connections ||= { }
133
153
  @connections[uri] ||= Fwissr::Source::Mongodb::Connection.new(uri)
@@ -135,7 +155,7 @@ class Fwissr::Source::Mongodb < Fwissr::Source
135
155
 
136
156
  end # class << self
137
157
 
138
-
158
+ # [Array] Collection names corresponding to 'top level' configurations
139
159
  TOP_LEVEL_COLLECTIONS = [ 'fwissr' ].freeze
140
160
 
141
161
  attr_reader :conn, :collection_name
@@ -1,3 +1,4 @@
1
1
  module Fwissr
2
- VERSION = '1.0.1'
2
+ # [String] Fwissr version
3
+ VERSION = '1.0.2'
3
4
  end
metadata CHANGED
@@ -1,46 +1,54 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: fwissr
3
- version: !ruby/object:Gem::Version
4
- version: 1.0.1
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.2
5
5
  platform: ruby
6
- authors:
6
+ authors:
7
7
  - Fotonauts Team
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
-
12
- date: 2013-12-03 00:00:00 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
11
+ date: 2013-12-05 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
15
14
  name: yajl-ruby
16
- prerelease: false
17
- requirement: &id001 !ruby/object:Gem::Requirement
18
- requirements:
19
- - &id002
20
- - ">="
21
- - !ruby/object:Gem::Version
22
- version: "0"
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ! '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
23
20
  type: :runtime
24
- version_requirements: *id001
25
- - !ruby/object:Gem::Dependency
26
- name: rspec
27
21
  prerelease: false
28
- requirement: &id003 !ruby/object:Gem::Requirement
29
- requirements:
30
- - *id002
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ! '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rspec
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ! '>='
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
31
34
  type: :development
32
- version_requirements: *id003
33
- description: " A simple configuration registry tool by Fotonauts.\n"
34
- email:
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ! '>='
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ description: ! ' A simple configuration registry tool by Fotonauts.
42
+
43
+ '
44
+ email:
35
45
  - aymerick@fotonauts.com
36
46
  - oct@fotonauts.com
37
- executables:
47
+ executables:
38
48
  - fwissr
39
49
  extensions: []
40
-
41
50
  extra_rdoc_files: []
42
-
43
- files:
51
+ files:
44
52
  - LICENSE
45
53
  - Rakefile
46
54
  - README.md
@@ -53,26 +61,25 @@ files:
53
61
  - lib/fwissr.rb
54
62
  homepage: https://github.com/fotonauts/fwissr
55
63
  licenses: []
56
-
57
64
  metadata: {}
58
-
59
65
  post_install_message:
60
66
  rdoc_options: []
61
-
62
- require_paths:
67
+ require_paths:
63
68
  - lib
64
- required_ruby_version: !ruby/object:Gem::Requirement
65
- requirements:
66
- - *id002
67
- required_rubygems_version: !ruby/object:Gem::Requirement
68
- requirements:
69
- - *id002
69
+ required_ruby_version: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - ! '>='
72
+ - !ruby/object:Gem::Version
73
+ version: '0'
74
+ required_rubygems_version: !ruby/object:Gem::Requirement
75
+ requirements:
76
+ - - ! '>='
77
+ - !ruby/object:Gem::Version
78
+ version: '0'
70
79
  requirements: []
71
-
72
80
  rubyforge_project:
73
81
  rubygems_version: 2.1.11
74
82
  signing_key:
75
83
  specification_version: 4
76
84
  summary: Fwissr
77
85
  test_files: []
78
-