Class: Calatrava::Configuration
- Inherits:
-
Object
- Object
- Calatrava::Configuration
- Includes:
- Rake::DSL
- Defined in:
- lib/calatrava/configuration.rb
Constant Summary collapse
- @@extras =
[]
Class Method Summary collapse
Instance Method Summary collapse
- #config_for(environment) ⇒ Object
- #config_result_dir ⇒ Object
- #config_template_dir ⇒ Object
- #config_yaml ⇒ Object
- #evaluate_template(template_path, configuration) ⇒ Object
-
#initialize ⇒ Configuration
constructor
A new instance of Configuration.
- #install_tasks ⇒ Object
- #path(file) ⇒ Object
- #runtime(key, value) ⇒ Object
- #templates ⇒ Object
Constructor Details
#initialize ⇒ Configuration
Returns a new instance of Configuration.
13 14 15 |
# File 'lib/calatrava/configuration.rb', line 13 def initialize @runtime = {} end |
Class Method Details
.extra(&configurator) ⇒ Object
9 10 11 |
# File 'lib/calatrava/configuration.rb', line 9 def self.extra(&configurator) @@extras << configurator end |
Instance Method Details
#config_for(environment) ⇒ Object
30 31 32 33 |
# File 'lib/calatrava/configuration.rb', line 30 def config_for(environment) @@extras.each { |e| e.call(self) } @runtime.merge(YAML::load(File.open(config_yaml))[environment]) end |
#config_result_dir ⇒ Object
17 18 19 |
# File 'lib/calatrava/configuration.rb', line 17 def config_result_dir "config/result" end |
#config_template_dir ⇒ Object
23 24 25 |
# File 'lib/calatrava/configuration.rb', line 23 def config_template_dir "config/templates" end |
#config_yaml ⇒ Object
20 21 22 |
# File 'lib/calatrava/configuration.rb', line 20 def config_yaml "config/environments.yml" end |
#evaluate_template(template_path, configuration) ⇒ Object
39 40 41 42 43 44 |
# File 'lib/calatrava/configuration.rb', line 39 def evaluate_template(template_path, configuration) file_path = File.join(config_result_dir, File.basename(template_path).gsub(".erb", '')) puts "Config: #{File.basename(template_path)} -> #{File.basename(file_path)}" result = ERB.new(IO.read(template_path)).result(binding) IO.write(file_path, result) end |
#install_tasks ⇒ Object
53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/calatrava/configuration.rb', line 53 def install_tasks directory config_result_dir %w{local development test automation production}.each do |environment| desc "Create config files for #{environment} environment" task environment.to_sym => [:clean, config_result_dir] do configuration = config_for(environment) templates.each do |template| evaluate_template(template, configuration) end artifact_dir(config_result_dir, environment) end end task :clean do rm_rf config_result_dir end end |
#path(file) ⇒ Object
46 47 48 49 50 51 |
# File 'lib/calatrava/configuration.rb', line 46 def path(file) env = ENV['CALATRAVA_ENV'] || "development" puts "CALATRAVA_ENV = '#{env}'" full_path = artifact_path(File.join(env, file)) full_path end |
#runtime(key, value) ⇒ Object
35 36 37 |
# File 'lib/calatrava/configuration.rb', line 35 def runtime(key, value) @runtime[key] = value end |
#templates ⇒ Object
26 27 28 |
# File 'lib/calatrava/configuration.rb', line 26 def templates Rake::FileList["#{config_template_dir}/*.erb"] end |