Как передать значение атрибута с двойной косой чертой в шаблон - PullRequest
0 голосов
/ 31 мая 2018

Я пытаюсь разработать кулинарную книгу, которая будет поддерживать платформу Windows и Linux.У меня возникли проблемы при работе с шаблоном.Итак, в основном я пытаюсь поставить сценарий оболочки, который будет иметь команду export с путем.Но я не могу получить точное значение сценария оболочки на окнах.

Атрибут:

root_path = value_for_platform(
  'windows' => { 'default' => "D:\\" },
  'default' => '/opt'
)
xyz_path = value_for_platform(
  'windows' => { 'default' => "#{root_path}xyz_app\\tool\\bin\\xyz.bat" },
  'default' => "#{root_path}/xyz_app//tool//bin//xyz"
)

Рецепт:

template File.join(root_path, '/tmp/xyz_path.sh') do
  source 'xyz_path.sh.erb'
  mode '0755'
  variables({
    :xyz_path => xyz_path
  })
end

Шаблон

#!/bin/bash

export xyz_path = <%= @xyz_path %>

Ожидание в Windows

#!/bin/bash

export xyz_path = D:\\xyz_app\\tool\\bin\\xyz.bat

Реальность в Windows

#!/bin/bash

export xyz_path = D:\xyz_app\tool\bin\xyz.bat

1 Ответ

0 голосов
/ 31 мая 2018

Используйте 4 обратной косой черты, чтобы получить то, что вы хотите.

root_path = value_for_platform(
  'windows' => { 'default' => "D:\\\\" },
  'default' => '/opt'
)
xyz_path = value_for_platform(
  'windows' => { 'default' => "#{root_path}xyz_app\\\\tool\\\\bin\\\\xyz.bat" },
  'default' => "#{root_path}/xyz_app//tool//bin//xyz"
)

Поскольку обратная косая черта является escape-символом, первая обратная косая черта избегает второго, поэтому вам нужно повторить это дважды, чтобы получить две обратных косых черты ввыход

...