Class: WebServerConfigGenerator::SubUriProject

Inherits:
Object
  • Object
show all
Defined in:
lib/web_server_config_generator/sub_uri_project.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(server_name, env_and_projects, web_config_generator) ⇒ SubUriProject

Returns a new instance of SubUriProject.



5
6
7
8
9
10
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 5

def initialize(server_name, env_and_projects, web_config_generator)
  @server_name = server_name
  @env = env_and_projects[:env]
  @projects = env_and_projects[:projects]
  @web_config_generator = web_config_generator
end

Instance Attribute Details

#envObject

Returns the value of attribute env.



3
4
5
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 3

def env
  @env
end

#projectsObject

Returns the value of attribute projects.



3
4
5
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 3

def projects
  @projects
end

#server_nameObject

Returns the value of attribute server_name.



3
4
5
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 3

def server_name
  @server_name
end

Instance Method Details

#generate_conf_file_contents(options) ⇒ Object



46
47
48
49
50
51
52
53
54
55
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 46

def generate_conf_file_contents(options)
  port = self.generate_port_from_env(options[:env])
  full_path_to_dir = File.expand_path "#{@web_config_generator.web_server_sub_uri_apps_dir}/#{projects_relative_project_path}"
  root = full_path_to_dir
  
  NginxConf.new(:port => port, :server_names => [server_name],
                :root => root, :environment => options[:env],
                :sub_uri_root_app => root_link_target_name_in_symlink_dir,
                :base_uri_names => projects.map { |p| File.basename(p.relative_root_url_for_env(env)) }).contents
end

#generate_port_from_env(env) ⇒ Object



25
26
27
28
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 25

def generate_port_from_env(env)
  pseudo_random_number = projects.inject(0) { |sum, p| sum + p.generate_port_from_env(env) }
  WebServerConfigGenerator::STARTING_PORT + (pseudo_random_number % WebServerConfigGenerator::PORT_POOL_SIZE)
end

#projects_relative_project_pathObject



30
31
32
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 30

def projects_relative_project_path
  server_name
end


38
39
40
41
42
43
44
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 38

def root_link_target_name_in_symlink_dir
  if root_project
    File.basename(root_project.relative_root_url_for_env(env))
  else
    puts "\nWarning: Couldn't find root app in #{self}.  Specify a root app in one of the configuration files if you want to be redirected to that app when visiting '/'"
  end
end

#root_projectObject



34
35
36
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 34

def root_project
  projects.detect { |p| p.relative_root_url_root_for_env(env) }
end

#server_name_from_env(env) ⇒ Object



17
18
19
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 17

def server_name_from_env(env)
  server_name
end

#server_namesObject



21
22
23
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 21

def server_names
  [server_name]
end

#to_sObject Also known as: to_str



12
13
14
# File 'lib/web_server_config_generator/sub_uri_project.rb', line 12

def to_s
  server_name.dup
end