Моя файловая структура выглядит следующим образом:Рендер относительную HAML с помощью охранника
Guardfile
resolution1/menu/page1.haml
resolution1/menu/some_partial.haml
resolution2/...
resolution3/...
Теперь внутри page1.haml У меня есть строка, которая будет оказывать частичное HAML внутри него (я не использую Rails)
= Haml::Engine.new(File.read("./some_partial.haml")).render
Он терпит неудачу с:
Error: No such file or directory @ rb_sysopen - ./some_partial.haml
, потому что мой рабочий каталог, где находится Guardfile. Обходной, который должен работать был такой:
= Haml::Engine.new(File.read("#{__dir__}/some_partial.haml")).render
или если я чувствую себя отчаянной, даже это (чтобы получить абсолютный путь к файлу)
= Haml::Engine.new(File.read("#{File.expand_path(File.dirname(__FILE__))}/some_partial.haml")).render
Однако, это не работает, как я хотел к.
File.expand_path(File.dirname(__FILE__))
вместо того, чтобы дать мой абсолютный путь к файлу (без учета рабочего каталога), он просто дает мне абсолютный путь к моей рабочей директории.
Я могу, конечно, поместить путь, который будет работать, но я не хочу включать мое целевое разрешение в каждый рендер.
Мой Guardfile
guard :haml, output: '../package/www' do
watch(/^.+(\.haml)$/)
end
Я использую для Windows, черт моей жизни. Какие-либо предложения? Мне просто нужно получить файл из файла в том же каталоге.
Ты потрясающий. –