Module: Jira::Auto::Tool::Helpers::EnvironmentBasedValue
- Included in:
- Jira::Auto::Tool, Ticket
- Defined in:
- lib/jira/auto/tool/helpers/environment_based_value.rb
Instance Method Summary collapse
- #corresponding_environment_variable_defined?(caller_method_name = caller_locations(1, 1).first.base_label) ⇒ Boolean
- #define_environment_variable_name_constant(method_name) ⇒ Object
- #define_holds_a_secret_predicate(method_name, holds_a_secret) ⇒ Object
-
#define_overridable_environment_based_value(method_name, holds_a_secret) ⇒ Object
TODO: overly complex - simplify by moving this to the Config and define a Configurable module.
- #define_predicate(method_name) ⇒ Object
- #define_reader(method_name) ⇒ Object
- #define_reader_accepting_default_value(method_name) ⇒ Object
- #define_writer(method_name) ⇒ Object
- #fetch_corresponding_environment_variable(caller_method_name = caller_locations(1, 1).first.base_label) ⇒ Object
- #instance_variable_name(method_name) ⇒ Object
Instance Method Details
#corresponding_environment_variable_defined?(caller_method_name = caller_locations(1, 1).first.base_label) ⇒ Boolean
86 87 88 89 90 91 92 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 86 def corresponding_environment_variable_defined?(caller_method_name = caller_locations(1, 1).first.base_label) environment_variable_name = caller_method_name.upcase log.debug { "corresponding_environment_variable_defined?(#{environment_variable_name})" } ENV.key?(environment_variable_name) end |
#define_environment_variable_name_constant(method_name) ⇒ Object
59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 59 def define_environment_variable_name_constant(method_name) constant_name = method_name.to_s.upcase class_eval " # This module and constant will be interpolated as follows:\n # class Environment\n # CONSTANT_NAME = \"CONSTANT_NAME\"\n # end\n class Environment\n \#{constant_name} = \#{constant_name.inspect}\n end\n EOCONSTANT\nend\n", __FILE__, __LINE__ + 1 |
#define_holds_a_secret_predicate(method_name, holds_a_secret) ⇒ Object
36 37 38 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 36 def define_holds_a_secret_predicate(method_name, holds_a_secret) define_method(:"#{method_name}_holds_a_secret?") { holds_a_secret } end |
#define_overridable_environment_based_value(method_name, holds_a_secret) ⇒ Object
TODO: overly complex - simplify by moving this to the Config and define a Configurable module
9 10 11 12 13 14 15 16 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 9 def define_overridable_environment_based_value(method_name, holds_a_secret) define_reader(method_name) define_predicate(method_name) define_reader_accepting_default_value(method_name) define_writer(method_name) define_environment_variable_name_constant(method_name) define_holds_a_secret_predicate(method_name, holds_a_secret) end |
#define_predicate(method_name) ⇒ Object
30 31 32 33 34 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 30 def define_predicate(method_name) define_method(:"#{method_name}_defined?") do self.class.corresponding_environment_variable_defined?(method_name.to_s) end end |
#define_reader(method_name) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 18 def define_reader(method_name) define_method(method_name) do self.class.instance_variable_name(method_name) if config.key?(method_name) config[method_name] else self.class.fetch_corresponding_environment_variable(method_name.to_s) end end end |
#define_reader_accepting_default_value(method_name) ⇒ Object
40 41 42 43 44 45 46 47 48 49 50 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 40 def define_reader_accepting_default_value(method_name) define_method(:"#{method_name}_when_defined_else") do |value| if config.key?(method_name) config[method_name] elsif self.class.corresponding_environment_variable_defined?(method_name.to_s) send(method_name) else value end end end |
#define_writer(method_name) ⇒ Object
52 53 54 55 56 57 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 52 def define_writer(method_name) define_method(:"#{method_name}=") do |value| log.debug { "#{method_name}= #{value.inspect}" } config[method_name] = value end end |
#fetch_corresponding_environment_variable(caller_method_name = caller_locations(1, 1).first.base_label) ⇒ Object
72 73 74 75 76 77 78 79 80 81 82 83 84 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 72 def fetch_corresponding_environment_variable( caller_method_name = caller_locations(1, 1).first.base_label ) environment_variable_name = caller_method_name.upcase value = ENV.fetch(environment_variable_name) do |name| raise KeyError, "Missing #{name} environment variable!" end log.debug { "fetch_corresponding_environment_variable(#{environment_variable_name}) - #{value.inspect}" } value end |
#instance_variable_name(method_name) ⇒ Object
94 95 96 |
# File 'lib/jira/auto/tool/helpers/environment_based_value.rb', line 94 def instance_variable_name(method_name) "@#{method_name}" end |