merlin 0.0.8 → 0.0.9

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.
@@ -1,3 +1,5 @@
1
+ require 'yaml'
2
+
1
3
  module Merlin
2
4
  class Configuration
3
5
  attr_reader :raw
@@ -28,13 +30,43 @@ module Merlin
28
30
 
29
31
  response = connection.get "/config/#{@environment}.json"
30
32
  if response.status == 200
31
- response.body
33
+ result = response.body
34
+ dump_config(result) unless production_or_staging
35
+ result
32
36
  else
33
37
  {}
34
38
  end
39
+ rescue Faraday::Error::ConnectionFailed => e
40
+ if production_or_staging
41
+ raise e
42
+ else
43
+ restore_config
44
+ end
35
45
  end
36
46
 
37
- private
47
+ def production_or_staging
48
+ ["production", "staging"].include?(::Rails.env)
49
+ end
50
+
51
+ def dump_config(config)
52
+ print_message "ONLINE - dump config in '#{dump_filepath}'."
53
+ File.open(dump_filepath, "w") { |file| file.puts(YAML.dump(config)) }
54
+ end
55
+
56
+ def restore_config
57
+ print_message "OFFLINE - restore config from '#{dump_filepath}'."
58
+ File.open(dump_filepath, "r") { |file| YAML.load(file) }
59
+ end
60
+
61
+ def print_message(message)
62
+ merlin_message = "MERLIN: #{message}"
63
+ Rails.logger.warn(merlin_message)
64
+ puts merlin_message
65
+ end
66
+
67
+ def dump_filepath
68
+ File.join(::Rails.root, "tmp", "merlin_offline_dump.yml")
69
+ end
38
70
 
39
71
  def merlin_server
40
72
  @local_raw['merlin']
@@ -1,3 +1,3 @@
1
1
  module Merlin
2
- VERSION = "0.0.8"
2
+ VERSION = "0.0.9"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: merlin
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.8
4
+ version: 0.0.9
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-09-25 00:00:00.000000000 Z
12
+ date: 2012-11-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rails