xref: /unit/test/unit/applications/lang/ruby.py (revision 2592:e079c44a8340)
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