Pregunta

Intento hacer que haml funcione sin la gema con sinatra (Heroku no permite la instalación de gemas, que yo sepa)

Lo que he hecho hasta ahora:

  • clonar el repositorio haml git dentro de mi proyecto

  • add: requiere 'haml / lib / haml.rb' a mi archivo principal de sinatra

los siguientes trabajos:

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

pero lo siguiente no:

get '/test2' do
  haml :my_template
end

Me sale el error:

NoMethodError: método no definido each 'for nil: NilClass (haml): 20: in render '

./haml/lib/haml/engine.rb:152:in 'render'

./haml/lib/haml/engine.rb:152:in en 'instancia_eval'

./haml/lib/haml/engine.rb:152:in 'render' ...

¿Hay otros archivos para requerir? ¿Alguna idea?

¿Fue útil?

Solución

Heroku admite la instalación de gemas creando un archivo .gems en el directorio raíz de su proyecto y agregándolo a Git. En su próximo empuje se instalarán las gemas requeridas allí. Para instalar Haml, el archivo contendría esta línea:

haml --version '>= 2.2.0'

Puede encontrar más información aquí: http://docs.heroku.com/gems

Otros consejos

Las dos posibilidades más obvias (en orden de probabilidad):

  1. Hay un error en algún código Ruby en su archivo Haml. Si puede probar el mismo código fuera de Sinatra, ¿funciona bien allí?
  2. El archivo my_template.haml no está allí o tiene un nombre incorrecto.

Como ha indicado StuFF mc, en respuesta a la respuesta de petergassner, la forma correcta de hacerlo ahora es utilizar el Gemfile de su aplicación. En ese Gemfile harías

gem "haml", ">= 2.2.0"

Heroku sabe cuándo presionas tu aplicación para instalar las gemas mencionadas en tu gemfile.

Tenga en cuenta que si desea utilizar sass y haml , es posible que deba saltar un par de aros para configurarlo. La forma en que haml solía funcionar tradicionalmente implicaba escribir los archivos compilados css en el disco, lo cual es un problema en el sistema de archivos de solo lectura de heroku. Alguien finalmente escribió un plugin / gema para resolver esta situación (sass-on-herku o algo así).

Actualmente, la gema haml-rails parece ocuparse de esto utilizando la canalización de activos, pero si está utilizando Sinatra, es probable que esto no funcione para usted. Por lo tanto, querrá ver si una de esas gemas aún está en funcionamiento o tomar el consejo de que heroku parece actualmente defiende . Este artículo también es específico para los rieles, pero debería poder hacer que las cosas funcionen adecuadamente para Sinatra sin demasiada dificultad. (Básicamente, para resumir el punto aquí, heroku ahora admite escribir en un directorio tmp, por lo que siempre que pueda configurar tanto la gema sass como la aplicación Sinatra para usar alguna ubicación tmp para esto, debería ser bueno).

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top