Class: NginxTestHelper::Config
- Inherits:
-
Object
- Object
- NginxTestHelper::Config
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
#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
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_id ⇒ Object
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
|
#configuration ⇒ Object
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_dirs ⇒ Object
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_file ⇒ Object
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_binding ⇒ Object
40
41
42
|
# File 'lib/nginx_test_helper/config.rb', line 40
def get_binding
binding
end
|
#respond_to?(m) ⇒ 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, =nil)
directive = []
directive << %(##{}) unless .nil?
directive << %(#{"#" if value.nil?}#{name} "#{value}";)
directive.join("\n")
end
|