Pergunta

I tentar obter haml trabalhando sem a jóia com Sinatra (não Heroku não permite instalar o gem, tanto quanto eu sei)

O que eu fiz até agora:

  • clone do haml git repo dentro de meu projeto

  • adicionar: require 'haml / lib / haml.rb' para o meu arquivo principal Sinatra

As seguintes obras:

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

mas a seguir não:

get '/test2' do
  haml :my_template
end

Eu recebo o erro:

NoMethodError - método indefinido each' for nil:NilClass (haml):20:inrender '

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

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

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

Existe quaisquer outros arquivos para exigir? Alguma idéia?

Foi útil?

Solução

Heroku suporta a instalação pedras preciosas, criando um arquivo .gems no diretório raiz do seu projeto e adicioná-lo ao Git. Em sua próxima empurrar as pedras necessárias lá será instalado. Para instalar Haml o arquivo deverá conter a seguinte linha:

haml --version '>= 2.2.0'

Mais informação pode ser encontrada aqui: http://docs.heroku.com/gems

Outras dicas

Os dois mais possibilidades óbvias (em ordem de probabilidade):

  1. Há um erro em algum código Ruby em seu arquivo Haml. Se você pode tentar o mesmo fora código de Sinatra, ele tornar OK lá?
  2. O my_template.haml arquivo é ou não existe ou incorretamente identificado.

Como o material mc indicou, em resposta a resposta de petergassner, a maneira correta de fazer isso agora é usar Gemfile do seu aplicativo. Nesse Gemfile você faria

gem "haml", ">= 2.2.0"

Heroku sabe quando você empurrar seu aplicativo para instalar as gemas mencionados em sua Gemfile.

Note que se você quiser usar sass, bem como haml, você pode precisar de saltar através de um par de aros para obter essa configuração. O haml maneira usado para trabalho tradicionalmente envolvida escrever os arquivos css compilados no disco, que é um problema em heroku é somente leitura do sistema de arquivos. Alguém finalmente escreveu um plugin / gem para resolver esta situação (Sass-on-herku ou algo assim).

Atualmente, a gema haml-rails parece cuidar deste usando o pipeline de ativos, mas se você estiver usando Sinatra, isso provavelmente não vai funcionar para você. Então, você quer quer ver se uma dessas jóias ainda está em operação, ou tomar o conselho que heroku parece atualmente ser defendendo . Este artigo também é trilhos específico, mas você deve ser capaz de conseguir que as coisas funcionem adequadamente para Sinatra sem muita dificuldade. (Basicamente, para resumir o ponto aqui, heroku faz agora suporta a gravação para um diretório tmp, por isso, enquanto você pode configurar o gem Sass eo app Sinatra usar algum local tmp para isso, você deve ser bom.)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top