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:inrender'

./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 ?

War es hilfreich?

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):

  1. 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?
  2. 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.)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top