Class: Orchestration::Environment

Inherits:
Object
  • Object
show all
Defined in:
lib/orchestration/environment.rb

Overview

rubocop:disable Metrics/ClassLength

Instance Method Summary collapse

Constructor Details

#initialize(options = {}) ⇒ Environment

Returns a new instance of Environment.



6
7
8
# File 'lib/orchestration/environment.rb', line 6

def initialize(options = {})
  @environment = options.fetch(:environment, nil)
end

Instance Method Details

#app_nameObject



100
101
102
# File 'lib/orchestration/environment.rb', line 100

def app_name
  settings.get('docker.repository')
end

#app_portObject



96
97
98
# File 'lib/orchestration/environment.rb', line 96

def app_port
  ENV.fetch('PUBLISH_PORT', ENV.fetch('WEB_PORT', '3000')).to_i
end

#database_configuration_pathObject



47
48
49
# File 'lib/orchestration/environment.rb', line 47

def database_configuration_path
  root.join('config', 'database.yml')
end

#database_urlObject



21
22
23
24
25
26
27
28
29
30
# File 'lib/orchestration/environment.rb', line 21

def database_url
  case environment
  when 'development'
    ENV.fetch('DEVELOPMENT_DATABASE_URL', nil) || ENV.fetch('DATABASE_URL', nil)
  when 'test'
    ENV.fetch('TEST_DATABASE_URL', nil) || ENV.fetch('DATABASE_URL', nil)
  else
    ENV.fetch('DATABASE_URL', nil)
  end
end

#database_volumeObject



122
123
124
# File 'lib/orchestration/environment.rb', line 122

def database_volume
  'database'
end

#default_app_nameObject



83
84
85
86
87
88
89
90
# File 'lib/orchestration/environment.rb', line 83

def default_app_name
  default = docker_filter(root.basename.to_s, underscore: true)
  return default unless defined?(Rails)
  # Edge case if Rails is used as a dependency but we are not a Rails app:
  return default if rails_application == Object

  docker_filter(rails_application.name.underscore, underscore: true)
end

#docker_api_versionObject



63
64
65
# File 'lib/orchestration/environment.rb', line 63

def docker_api_version
  '3.7'
end

#docker_compose_config(env = nil) ⇒ Object



73
74
75
76
# File 'lib/orchestration/environment.rb', line 73

def docker_compose_config(env = nil)
  env ||= environment
  YAML.safe_load(File.read(docker_compose_path(env)))
end

#docker_compose_config?(env = nil) ⇒ Boolean

Returns:

  • (Boolean)


78
79
80
81
# File 'lib/orchestration/environment.rb', line 78

def docker_compose_config?(env = nil)
  env ||= environment
  docker_compose_path(env).file?
end

#docker_compose_path(env = nil) ⇒ Object



67
68
69
70
71
# File 'lib/orchestration/environment.rb', line 67

def docker_compose_path(env = nil)
  env ||= 'development'

  orchestration_root.join("docker-compose.#{env}.yml")
end

#environmentObject



10
11
12
13
14
# File 'lib/orchestration/environment.rb', line 10

def environment
  return @environment unless @environment.nil?

  ENV.fetch('RAILS_ENV', nil) || ENV.fetch('RACK_ENV', nil) || 'development'
end

#mongo_urlObject



32
33
34
35
36
37
38
39
40
41
# File 'lib/orchestration/environment.rb', line 32

def mongo_url
  case environment
  when 'development'
    ENV.fetch('DEVELOPMENT_MONGO_URL') { ENV.fetch('MONGO_URL', nil) }
  when 'test'
    ENV.fetch('TEST_MONGO_URL') { ENV.fetch('MONGO_URL', nil) }
  else
    ENV.fetch('MONGO_URL', nil)
  end
end

#mongo_volumeObject



126
127
128
# File 'lib/orchestration/environment.rb', line 126

def mongo_volume
  'mongo'
end

#mongoid_configuration_pathObject



43
44
45
# File 'lib/orchestration/environment.rb', line 43

def mongoid_configuration_path
  root.join('config', 'mongoid.yml')
end

#orchestration_configuration_pathObject



59
60
61
# File 'lib/orchestration/environment.rb', line 59

def orchestration_configuration_path
  root.join('.orchestration.yml')
end

#orchestration_dir_nameObject



118
119
120
# File 'lib/orchestration/environment.rb', line 118

def orchestration_dir_name
  'orchestration'
end

#orchestration_rootObject



114
115
116
# File 'lib/orchestration/environment.rb', line 114

def orchestration_root
  root.join(orchestration_dir_name)
end

#rabbitmq_configuration_pathObject



51
52
53
# File 'lib/orchestration/environment.rb', line 51

def rabbitmq_configuration_path
  root.join('config', 'rabbitmq.yml')
end

#rabbitmq_urlObject



92
93
94
# File 'lib/orchestration/environment.rb', line 92

def rabbitmq_url
  ENV.fetch('RABBITMQ_URL', nil)
end

#redis_configuration_pathObject



55
56
57
# File 'lib/orchestration/environment.rb', line 55

def redis_configuration_path
  root.join('config', 'redis.yml')
end

#rootObject



108
109
110
111
112
# File 'lib/orchestration/environment.rb', line 108

def root
  defined?(Rails) && Rails.root ? Rails.root : Pathname.new(Dir.pwd)
rescue NoMethodError
  Pathname.new(Dir.pwd)
end

#settingsObject



104
105
106
# File 'lib/orchestration/environment.rb', line 104

def settings
  Settings.new(orchestration_configuration_path)
end

#web_serverObject



16
17
18
19
# File 'lib/orchestration/environment.rb', line 16

def web_server
  # Used at installation time only
  ENV.fetch('server', 'puma')
end