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