Question

J'essaie de faire fonctionner HML sans la gemme avec Sinatra (Heroku n'autorise pas l'installation de gem, pour autant que je sache)

Ce que j'ai fait jusqu'à présent:

  • clonez le repo hait git dans mon projet

  • add: nécessite "haml / lib / haml.rb" dans mon fichier principal sinatra

les travaux suivants:

get '/test' do
  Haml::Engine.new('%p test').render
end

mais ce qui suit ne le fait pas:

get '/test2' do
  haml :my_template
end

je reçois le message d'erreur:

NoMethodError - Méthode non définie each 'pour nil: NilClass (haml): 20: dans render '

./ haml / lib / haml / engine.rb: 152: dans `render '

./ haml / lib / haml / engine.rb: 152: dans `instance_eval '

./ haml / lib / haml / engine.rb: 152: dans `render ' ...

Y a-t-il d'autres fichiers à exiger? Des idées?

Était-ce utile?

La solution

Heroku prend en charge l’installation de gems en créant un fichier .gems dans le répertoire racine de votre projet et en l’ajoutant à Git. Lors de votre prochaine poussée, les gemmes requises seront installées. Pour installer Haml, le fichier contiendrait cette ligne:

haml --version '>= 2.2.0'

Pour plus d'informations, cliquez ici: http://docs.heroku.com/gems

Autres conseils

Les deux possibilités les plus évidentes (par ordre de probabilité):

  1. Il y a une erreur dans certains codes Ruby dans votre fichier Haml. Si vous pouvez essayer le même code en dehors de Sinatra, est-ce que le rendu est correct?
  2. Le fichier my_template.haml n'est pas présent ou nommé de manière incorrecte.

Comme StuFF mc l'a indiqué, en réponse à la réponse de Petergassner, la bonne façon de procéder consiste à utiliser le fichier Gemfile de votre application. Dans ce Gemfile, vous feriez

gem "haml", ">= 2.2.0"

Heroku sait quand vous poussez votre application pour installer les gemmes mentionnées dans votre fichier gem.

Notez que si vous souhaitez utiliser sass ainsi que haml , vous devrez peut-être passer en revue quelques étapes pour obtenir cette configuration. La façon dont haml fonctionnait de manière traditionnelle impliquait d'écrire les fichiers css compilés sur le disque, ce qui posait un problème pour le système de fichiers en lecture seule de heroku. Quelqu'un a finalement écrit un plugin / un joyau pour résoudre cette situation (sass-on-herku ou autre).

Actuellement, la gem haml-rails semble résoudre ce problème à l'aide du pipeline d'actifs, mais si vous utilisez Sinatra, cela ne fonctionnera probablement pas pour vous. Vous voudrez donc savoir si l’un de ces joyaux est toujours opérationnel ou prendre note de l’avis que heroku semble épousez actuellement . Cet article est également spécifique aux rails, mais vous devriez pouvoir faire fonctionner les choses correctement pour Sinatra sans trop de difficulté. (Fondamentalement, pour résumer le point ici, heroku prend désormais en charge l'écriture dans un répertoire tmp, aussi longtemps que vous pouvez configurer le sass gem et l'application Sinatra pour qu'ils utilisent un emplacement tmp pour cela, vous devriez être bon.)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top