我试着让haml在没有使用sinatra的情况下工作(据我所知,Heroku不允许安装宝石)
我到目前为止所做的事:
以下工作:
get '/test' do
Haml::Engine.new('%p test').render
end但以下几点并没有:
get '/test2' do
haml :my_template
end我知道错误:
NoMethodError -未定义的方法each' for nil:NilClass (haml):20:in呈现‘
./haml/lib/haml/engine.rb.lib:152:在“呈现”中
./haml/lib/haml/engine.rb.lib:152:in `instance_eval‘
./haml/lib/haml/engine.rb.lib:152:在“呈现”中.
还有其他文件需要吗?有什么想法吗?
发布于 2009-07-25 13:23:28
Heroku支持通过在项目根目录中创建.gems文件并将其添加到Git来安装gems。在下一次推送时,将安装所需的宝石。要安装Haml,文件将包含以下行:
haml --version '>= 2.2.0'更多信息可以在这里找到:http://docs.heroku.com/gems
发布于 2009-03-01 21:30:37
最明显的两种可能性(按概率排列):
发布于 2012-10-28 18:45:13
正如StuFF mc所指出的,为了回应petergassner的回答,现在正确的方法是使用应用程序的Gemfile。在那个Gemfile里你会做的
gem "haml", ">= 2.2.0"Heroku知道当你推动你的应用程序安装宝石在你的宝石文件。
请注意,如果您想使用sass和haml,那么您可能需要跳过几个圈才能完成这个设置。传统上haml的工作方式是将编译好的css文件写入磁盘,这在heroku的只读文件系统上是个问题。有人最终写了一个插件/创业板来解决这种情况(如sass on-herku或诸如此类)。
目前,haml-rails gem似乎使用资产管道来处理这个问题,但是如果您使用的是Sinatra,这可能不会对您起作用。因此,您要么希望查看其中一个宝石是否仍在运行,要么接受heroku对目前正在接受的建议。这篇文章也是针对rails的,但是您应该能够在没有太多困难的情况下为Sinatra适当地工作。(基本上,这里总结一下,heroku现在支持编写tmp目录,所以只要您可以配置sass gem和Sinatra应用程序来使用一些tmp位置,就应该是好的。)
https://stackoverflow.com/questions/600487
复制相似问题