Wie zu verwenden haml mit heroku?
Frage
Ich versuche, haml arbeiten ohne Edelstein mit sinatra (Heroku nicht zulässt, dass gem install, soweit ich weiß)
Was ich bisher getan habe:
Klon der haml git-repo in meinem Projekt
hinzufügen :require 'haml/lib/haml.rb' zu meinem sinatra-main-Datei
die folgenden Werke:
get '/test' do
Haml::Engine.new('%p test').render
end
aber die folgenden nicht:
get '/test2' do
haml :my_template
end
Ich bekomme die Fehlermeldung :
NoMethodError - undefined-Methode each' for nil:NilClass
(haml):20:in
render'
./haml/lib/haml/Motor.rb:152:in `render'
./haml/lib/haml/Motor.rb:152:in `instance_eval'
./haml/lib/haml/Motor.rb:152:in `render' ...
Gibt es irgendeine andere Dateien zu benötigen ?Irgendwelche Ideen ?
Lösung
Heroku unterstützt die Installation von gems durch die Schaffung einer .gems
Datei in Ihr Projekt in das root-Verzeichnis und das hinzufügen von Git.Auf Ihr Nächstes schieben Sie die Edelsteine erforderlich, es wird installiert werden.Installieren Sie die Haml-Datei enthält diese Zeile:
haml --version '>= 2.2.0'
Mehr Informationen können hier gefunden werden: http://docs.heroku.com/gems
Andere Tipps
Die beiden offensichtlichsten Möglichkeiten (in der Reihenfolge der Wahrscheinlichkeit):
- Es ist ein Fehler in der Ruby-Code in Ihrer Haml Datei. Wenn Sie den gleichen Code außerhalb von Sinatra versuchen können, ist es in Ordnung, da machen?
- Die Datei my_template.haml ist entweder nicht da oder falsch benannt.
Wie StuFF mc angedeutet hat, in Reaktion auf petergassner Antwort der richtige Weg, dies jetzt zu tun, ist die Verwendung der app Gemfile.In das Gemfile Sie tun würde
gem "haml", ">= 2.2.0"
Heroku weiß, wenn Sie drücken Sie Ihre app-installieren Sie die Edelsteine erwähnt in Ihrem gemfile.
Beachten Sie, dass, wenn Sie verwenden möchten sass
sowie haml
, Sie können springen müssen durch ein paar Reifen zu bekommen, die.Der Weg haml
verwendet, um zu arbeiten traditionell beteiligt, die kompiliert css
Dateien auf die Festplatte, das ist ein problem bei heroku ist nur Lesen Dateisystem.Jemand schließlich schrieb ein plugin/Edelstein zu lösen diese situation (sass-auf-herku oder so).
Derzeit, die haml-rails
Juwel scheint das zu kümmern, diese mit der asset-pipeline, aber wenn Sie mit Sinatra, dies wahrscheinlich nicht für Sie arbeiten.Also, werden Sie entweder wollen, um zu sehen, ob einer dieser Edelsteine ist immer noch in Betrieb ist, oder nehmen Sie den Hinweis, dass heroku scheint derzeit werden espousing.Dieser Artikel ist auch Schienen-spezifische, aber Sie sollten in der Lage sein, um die Dinge richtig arbeiten für Sinatra, ohne zu viel Schwierigkeit.(Im Grunde um zusammenzufassen, der Punkt hier, heroku unterstützt jetzt das schreiben, um ein tmp-Verzeichnis, so lange wie Sie können konfigurieren die sass-Juwel und die Sinatra-app zu verwenden, einige tmp Ort, Sie sollten gut sein.)