11911So.canty@f5.comimport shutil 21911So.canty@f5.com 32491Szelenkov@nginx.comfrom unit.applications.proto import ApplicationProto 41730Szelenkov@nginx.comfrom unit.option import option 51911So.canty@f5.comfrom unit.utils import public_dir 61019Szelenkov@nginx.com 71019Szelenkov@nginx.com 82491Szelenkov@nginx.comclass ApplicationRuby(ApplicationProto): 92491Szelenkov@nginx.com def __init__(self, application_type='ruby'): 102491Szelenkov@nginx.com self.application_type = application_type 111116Szelenkov@nginx.com 121911So.canty@f5.com def prepare_env(self, script): 131911So.canty@f5.com shutil.copytree( 142330Szelenkov@nginx.com f'{option.test_dir}/ruby/{script}', 152330Szelenkov@nginx.com f'{option.temp_dir}/ruby/{script}', 161911So.canty@f5.com ) 171911So.canty@f5.com 182330Szelenkov@nginx.com public_dir(f'{option.temp_dir}/ruby/{script}') 191911So.canty@f5.com 201303St.nateldemoura@f5.com def load(self, script, name='config.ru', **kwargs): 211911So.canty@f5.com self.prepare_env(script) 221911So.canty@f5.com 232330Szelenkov@nginx.com script_path = f'{option.temp_dir}/ruby/{script}' 241019Szelenkov@nginx.com 251912So.canty@f5.com app = { 261912So.canty@f5.com "type": self.get_application_type(), 271912So.canty@f5.com "processes": {"spare": 0}, 281912So.canty@f5.com "working_directory": script_path, 292330Szelenkov@nginx.com "script": f'{script_path}/{name}', 301912So.canty@f5.com } 311912So.canty@f5.com 321912So.canty@f5.com for key in [ 331912So.canty@f5.com 'hooks', 341912So.canty@f5.com ]: 351912So.canty@f5.com if key in kwargs: 361912So.canty@f5.com app[key] = kwargs[key] 371912So.canty@f5.com 381050Szelenkov@nginx.com self._load_conf( 391019Szelenkov@nginx.com { 40*2592Szelenkov@nginx.com "listeners": {"*:8080": {"pass": f"applications/{script}"}}, 411912So.canty@f5.com "applications": {script: app}, 421303St.nateldemoura@f5.com }, 432330Szelenkov@nginx.com **kwargs, 441019Szelenkov@nginx.com ) 45