1import shutil 2 3from unit.applications.proto import ApplicationProto 4from unit.option import option 5from unit.utils import public_dir 6 7 8class ApplicationRuby(ApplicationProto): 9 def __init__(self, application_type='ruby'): 10 self.application_type = application_type 11 12 def prepare_env(self, script): 13 shutil.copytree( 14 f'{option.test_dir}/ruby/{script}', 15 f'{option.temp_dir}/ruby/{script}', 16 ) 17 18 public_dir(f'{option.temp_dir}/ruby/{script}') 19 20 def load(self, script, name='config.ru', **kwargs): 21 self.prepare_env(script) 22 23 script_path = f'{option.temp_dir}/ruby/{script}' 24 25 app = { 26 "type": self.get_application_type(), 27 "processes": {"spare": 0}, 28 "working_directory": script_path, 29 "script": f'{script_path}/{name}', 30 } 31 32 for key in [ 33 'hooks', 34 ]: 35 if key in kwargs: 36 app[key] = kwargs[key] 37 38 self._load_conf( 39 { 40 "listeners": {"*:8080": {"pass": f"applications/{script}"}}, 41 "applications": {script: app}, 42 }, 43 **kwargs, 44 ) 45