Class: NginxTestHelper::Config

Inherits:
Object
  • Object
show all
Includes:
EnvMethods
Defined in:
lib/nginx_test_helper/config.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Methods included from EnvMethods

included

Methods included from EnvMethods::ClassMethods

#nginx_address, #nginx_executable, #nginx_host, #nginx_port, #nginx_tests_tmp_dir, #nginx_workers

Constructor Details

#initialize(config_id, configuration) ⇒ Config

Returns a new instance of Config.



10
11
12
13
14
15
16
# File 'lib/nginx_test_helper/config.rb', line 10

def initialize(config_id, configuration)
  @config_id = config_id
  @configuration = NginxConfiguration.default_configuration.merge(configuration).merge(Config.files_and_dirs(config_id))

  Config.create_dirs
  create_configuration_file
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(m, *args, &block) ⇒ Object

Raises:

  • (NameError)


28
29
30
31
# File 'lib/nginx_test_helper/config.rb', line 28

def method_missing(m, *args, &block)
  raise NameError, "undefined local variable, method or configuration '#{m}'" unless configuration.has_key?(m.to_sym)
  configuration[m.to_sym]
end

Instance Attribute Details

#config_idObject (readonly)

Returns the value of attribute config_id.



8
9
10
# File 'lib/nginx_test_helper/config.rb', line 8

def config_id
  @config_id
end

#configurationObject (readonly)

Returns the value of attribute configuration.



8
9
10
# File 'lib/nginx_test_helper/config.rb', line 8

def configuration
  @configuration
end

Class Method Details

.create_dirsObject



45
46
47
48
# File 'lib/nginx_test_helper/config.rb', line 45

def create_dirs
  FileUtils.mkdir_p("#{nginx_tests_tmp_dir}/logs") unless File.directory?("#{nginx_tests_tmp_dir}/logs")
  FileUtils.mkdir_p("#{nginx_tests_tmp_dir}/client_body_temp") unless File.directory?("#{nginx_tests_tmp_dir}/client_body_temp")
end

.delete_config_and_log_files(config_id) ⇒ Object



60
61
62
63
64
65
66
67
# File 'lib/nginx_test_helper/config.rb', line 60

def delete_config_and_log_files(config_id)
  items = files_and_dirs(config_id)

  File.delete(items[:configuration_filename]) if File.exist?(items[:configuration_filename])
  File.delete(items[:access_log]) if File.exist?(items[:access_log])
  File.delete(items[:error_log]) if File.exist?(items[:error_log])
  FileUtils.rm_rf(items[:client_body_temp]) if File.exist?(items[:client_body_temp])
end

.files_and_dirs(config_id) ⇒ Object



50
51
52
53
54
55
56
57
58
# File 'lib/nginx_test_helper/config.rb', line 50

def files_and_dirs(config_id)
  {
    :configuration_filename => File.expand_path("#{nginx_tests_tmp_dir}/#{config_id}.conf"),
    :pid_file => File.expand_path("#{nginx_tests_tmp_dir}/nginx.pid"),
    :access_log => File.expand_path("#{nginx_tests_tmp_dir}/logs/access-#{config_id}.log"),
    :error_log => File.expand_path("#{nginx_tests_tmp_dir}/logs/error-#{config_id}.log"),
    :client_body_temp => File.expand_path("#{nginx_tests_tmp_dir}/client_body_temp")
  }
end

Instance Method Details

#create_configuration_fileObject



18
19
20
21
22
# File 'lib/nginx_test_helper/config.rb', line 18

def create_configuration_file
  configuration_template = configuration.delete(:configuration_template)
  template = ERB.new configuration_template || NginxConfiguration.template_configuration
  File.open(configuration[:configuration_filename], 'w') {|f| f.write(template.result(get_binding)) }
end

#get_bindingObject



40
41
42
# File 'lib/nginx_test_helper/config.rb', line 40

def get_binding
  binding
end

#respond_to?(m) ⇒ Boolean

Returns:

  • (Boolean)


24
25
26
# File 'lib/nginx_test_helper/config.rb', line 24

def respond_to?(m)
  super(m) || configuration.has_key?(m.to_sym)
end

#write_directive(name, value, comment = nil) ⇒ Object



33
34
35
36
37
38
# File 'lib/nginx_test_helper/config.rb', line 33

def write_directive(name, value, comment=nil)
  directive = []
  directive << %(##{comment}) unless comment.nil?
  directive << %(#{"#" if value.nil?}#{name} "#{value}";)
  directive.join("\n")
end