Rails 3 не загружает обработчик HAML - PullRequest
6 голосов
/ 03 июня 2011

У меня возникли некоторые проблемы с Rails 3 и HAML в моем приложении: по какой-то причине Rails, похоже, не загружает обработчик для работы с файлами haml. Каждое действие выдает сообщение об ошибке, подобное этому:


Шаблон отсутствует

Отсутствует шаблон contact_search / index с {: format => [: html],: handlers => [: rjs,: rhtml,: rxml,: builder,: erb],: locale => [: en,: en ]} в путях просмотра "/ var / www / osphonebook / app / views", "/var/www/osphonebook/vendor/bundle/ruby/1.8/gems/devise-1.3.4/app/views"


Посмотрите на опции "обработчики": нет: haml ...

Дело в том, что это происходит только в производственном режиме на сервере, настроенном моей компанией. На режимах разработки и тестирования работает нормально. Кроме того, если я запускаю приложение в производственном режиме на своем ПК для разработки, оно работает.

Некоторая информация о сервере:

ОБНОВЛЕНИЕ (6/6/2011): обновлено до Ruby 1.9 , и оно все еще не работает.

ruby 1.9.2p0 (2010-08-18 revision 29036) [i486-linux]

Gems included by the bundle:
abstract (1.0.0)
actionmailer (3.0.7)
actionpack (3.0.7)
activemodel (3.0.7)
activerecord (3.0.7)
activeresource (3.0.7)
activesupport (3.0.7)
arel (2.0.10)
bcrypt-ruby (2.1.4)
builder (2.1.2)
bundler (1.0.14)
devise (1.3.4)
erubis (2.6.6)
haml (3.1.1)
i18n (0.5.0)
kgio (2.4.1)
mail (2.2.19)
mime-types (1.16)
orm_adapter (0.0.5)
pg (0.11.0)
polyglot (0.3.1)
rack (1.2.3)
rack-mount (0.6.14)
rack-test (0.5.7)
rails (3.0.7)
railties (3.0.7)
rake (0.8.7)
sass (3.1.2)
sqlite3 (1.3.3)
thor (0.14.6)
treetop (1.4.9)
tzinfo (0.3.27)
unicorn (3.6.2)
warden (1.0.4)

Если потребуется дополнительная информация, пожалуйста, прокомментируйте вопрос, и я обновлю его. Спасибо за любую помощь.

Ответы [ 4 ]

5 голосов
/ 06 июня 2011

Я обнаружил проблему: я изменил файл config/environments/production.rb, чтобы установить какой-то персонализированный код для ActionMailer. Дело в том, что я использовал класс напрямую, вот так:

ActionMailer::Base.delivery_method = :sendmail
ActionMailer::Base.raise_delivery_errors = true
ActionMailer::Base.charset = "utf-8"

вместо того, чтобы делать так:

config.action_mailer.delivery_method = :sendmail
config.action_mailer.raise_delivery_errors = true
config.action_mailer.charset = "utf-8"

Похоже, что использование класса ActionMailer непосредственно запустило загрузчики ActionView и установило все внутренние переменные, не позволяя самому HAML-коду установить себя.

После изменения кода он работал как брелок.

5 голосов
/ 03 июня 2011

Попробуй с самоцветом Хамл-рельсы

2 голосов
/ 25 октября 2012

Я нашел решение для ошибки «отсутствует шаблон HAML» при работе в рабочем режиме (с использованием Rails 3.2.6 и haml-rails 0.3.4):

В /config/application.rb он имеет

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

Я изменил это на

if defined?(Bundler)
  # If you precompile assets before deploying to production, use this line
  # Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  Bundler.require(:default, :assets, Rails.env)
end

И теперь это работает.

0 голосов
/ 27 апреля 2012

делает добавление

require "haml"

до config/test.rb (и / или development.rb и production.rb) это исправить для вас?

(обратите внимание, что я использую Rails 3.2.2)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...