Вопрос

Я пытаюсь заставить Haml работать без драгоценного камня с помощью Sinatra (насколько я знаю, Heroku не разрешает установку драгоценного камня)

Что я сделал до сих пор:

  • клонировать репозиторий Haml git внутри моего проекта

  • добавлять :требуется «haml/lib/haml.rb» для моего основного файла Sinatra

следующие работы:

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

но следующее не делает:

get '/test2' do
  haml :my_template
end

Я получаю ошибку:

NoMethodError — неопределенный метод each' for nil:NilClass (haml):20:inоказывать'

./haml/lib/haml/engine.rb:152:в `рендеринге'

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

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

Требуются ли еще какие-нибудь файлы?Есть идеи ?

Это было полезно?

Решение

Heroku поддерживает установку драгоценных камней, создавая .gems файл в корневом каталоге вашего проекта и добавьте его в Git.При следующем нажатии необходимые драгоценные камни будут установлены.Для установки Haml файл должен содержать следующую строку:

haml --version '>= 2.2.0'

Более подробную информацию можно найти здесь: http://docs.heroku.com/gems

Другие советы

Две наиболее очевидные возможности (в порядке вероятности):

  1. В каком-то коде Ruby в вашем файле Haml есть ошибка.Если вы можете попробовать тот же код за пределами Синатры, будет ли он там отображаться нормально?
  2. Файл my_template.haml либо отсутствует, либо имеет неправильное имя.

Как указал StuFF mc в ответ на ответ Петергасснера, правильный способ сделать это сейчас — использовать Gemfile вашего приложения.В этом Gemfile вы бы сделали

gem "haml", ">= 2.2.0"

Heroku знает, когда вы нажимаете свое приложение на установку драгоценных камней, упомянутых в вашем драгоценном файле.

Обратите внимание: если вы хотите использовать sass а также haml, вам, возможно, придется преодолеть пару препятствий, чтобы настроить эту настройку.Путь haml Раньше работа традиционно включала в себя написание скомпилированного css файлы на диск, что является проблемой в файловой системе Heroku, доступной только для чтения.Кто-то в конце концов написал плагин/гем для решения этой ситуации (sass-on-herku или что-то в этом роде).

В настоящее время haml-rails Кажется, что драгоценный камень позаботится об этом с помощью конвейера ресурсов, но если вы используете Sinatra, это, вероятно, вам не подойдет.Итак, вы либо захотите посмотреть, работает ли еще один из этих драгоценных камней, либо прислушайтесь к совету, который, похоже, дает Heroku. в настоящее время поддерживаю.Эта статья также посвящена Rails, но вы сможете без особых трудностей заставить все работать должным образом для Sinatra.(По сути, если подвести итог, то Heroku теперь поддерживает запись в каталог tmp, поэтому, если вы можете настроить как гем sass, так и приложение Sinatra на использование для этого некоторого местоположения tmp, у вас все будет хорошо.)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top