Class: PopulateEnv::Heroku::Manifest
- Inherits:
-
Object
- Object
- PopulateEnv::Heroku::Manifest
- Defined in:
- lib/populate_env/heroku/manifest.rb
Instance Method Summary collapse
- #attribute_definitions_for(environment) ⇒ Object
-
#initialize(path) ⇒ Manifest
constructor
A new instance of Manifest.
Constructor Details
#initialize(path) ⇒ Manifest
Returns a new instance of Manifest.
6 7 8 |
# File 'lib/populate_env/heroku/manifest.rb', line 6 def initialize(path) @path = path end |
Instance Method Details
#attribute_definitions_for(environment) ⇒ Object
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/populate_env/heroku/manifest.rb', line 10 def attribute_definitions_for(environment) begin data = JSON.parse(@path.read, symbolize_names: true) env_vars = data.fetch(:env, {}) env_vars.merge!(data.dig(:environments, environment.to_sym, :env) || {}) env_vars.map do |key, value| if value.is_a?(Hash) default = value.delete(:value) value.merge!(name: key, default: default) AttributeDefinition.new(value) else AttributeDefinition.new(name: key, default: value) end end rescue Errno::ENOENT fail "Manifest file #{@path.to_s.inspect} not found" rescue JSON::ParserError fail "Could not parse JSON in #{@path.to_s.inspect}" end end |