我用它来启动我的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.
我该怎么做才能解决这个问题?
答案 0 :(得分:1)
您尝试阅读的路径 - assets/page/structure/_head.haml
相对于工作目录,而不是源文件目录。当你在同一目录下时,它可以工作,因为这两个目录是相同的。
为了能够从不同的目录运行代码,您需要使用绝对路径。您可以使用File::expand_path
,File::dirname
和__FILE__
将相对路径转换为绝对路径:
= Haml::Engine.new(File.read(File.expand_path 'assets/page/structure/_head.haml', File.dirname(__FILE__))).render