Используйте __dir__
, чтобы получить каталог файла Ruby.Из документов :
Возвращает канонизированный абсолютный путь к каталогу файла, из которого вызывается этот метод.Это означает, что символические ссылки в пути разрешены.Если __FILE__
равно нулю, возвращается ноль.Возвращаемое значение равно File.dirname(File.realpath(__FILE__))
Так что в вашем примере вы можете сделать что-то вроде:
script = File.join(__dir__, '..', 'create.sh')
exit_code = system("sh #{script")
Вы также можете установить cwd (текущий рабочий каталог) с помощью system
:
system("create.sh", chdir: __dir__)
Или:
Dir.chdir(__dir__) { system('create.sh') }