从不同的目录编译haml

时间:2014-07-24 00:31:34

标签: haml

我用它来启动我的haml编译:

/install-location/haml /myproject/index.haml /myproject/index.html

当我在haml文件的目录中运行时运行正常,但当我更改到另一个目录时,我得到:

Exception on line 3: No such file or directory @ rb_sysopen - assets/page/structure/_head.haml
  Use --trace for backtrace.

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

您尝试阅读的路径 - assets/page/structure/_head.haml相对于工作目录,而不是源文件目录。当你在同一目录下时,它可以工作,因为这两个目录是相同的。

为了能够从不同的目录运行代码,您需要使用绝对路径。您可以使用File::expand_pathFile::dirname__FILE__将相对路径转换为绝对路径:

= Haml::Engine.new(File.read(File.expand_path 'assets/page/structure/_head.haml', File.dirname(__FILE__))).render