ОБНОВЛЕНИЕ:
Получается, что иногда results.image был нил или ", поэтому это нарушало приложение, потому что конвейер активов искал изображение типа" " и не нашел его. Прямо сейчас я не показываю изображение, если его нет, но мне придется добавить изображение по умолчанию для недостающих изображений... это должно быть более постоянное исправление.
У меня есть ряд вопросов о этой проблеме кедра heroku и конвейера Rails, и я пробовал ряд решений, но ни один из них не работает, и, вероятно, потому, что проблема, с которой я сталкиваюсь, морщин, которого я больше нигде не видел.
В моем приложении используется Rails 3.2.6, и я развернул его на керовом керосе Heroku. Это основное приложение для поиска, которое ищет прикрепленный postgres db через websolr, поэтому, когда вы загружаете индекс (индекС# index) без параметров [: q].present? вы получаете окно поиска, и это отлично работает. Но когда я помещал что-то в поле поиска и нажимал submit, а индекс index снова загружался, но на этот раз пытается отобразить результаты, я получаю:
app[web.1]: Completed 500 Internal Server Error in 440ms
app[web.1]:
app[web.1]: ActionView::Template::Error ( isn't precompiled):
app[web.1]: 12: - @results.each do |result|
app[web.1]: 13: %li
app[web.1]: 14: %div
app[web.1]: 15: = image_tag result.image
app[web.1]: 16: %div
app[web.1]: 17: = result.title
app[web.1]: 18: %div
app[web.1]: app/views/index/index.html.haml:15:in `block in _app_views_index_index_html_haml___4350601325072829986_32734540'
app[web.1]: app/views/index/index.html.haml:12:in _app_views_index_index_html_haml___4350601325072829986_32734540'
Какая странность в отношении моего конкретного случая и других, которые я видел, это следующая строка:
ActionView::Template::Error ( isn't precompiled):
Со всеми остальными вопросами, которые я видел, в скобках есть файл css, т.е. ( "foo.css" не прекомпилирован), или в моем случае кажется, что это должно быть ( "index.css" не прекомпилирован). Но здесь это просто пусто!
Это мое развертывание развертывания, которое я пытаюсь выполнить, поэтому я попытался запустить RAILS_ENV = промежуточные активы рейка: предварительно скомпилировать (то есть, конечно, результаты), но это не исправляет. Я даже попробовал раздеться в представлении (обратите внимание на отсутствие какого-либо реального стиля там). Ничего не работает, и я в недоумении. Любая помощь будет принята с благодарностью.
Для справки, вот мой gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'pg'
gem 'haml-rails'
gem 'mongoid'
gem 'sunspot_rails', '~> 1.3.0'
gem 'sunspot_solr'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'uglifier', '>= 1.0.3'
end
gem 'jquery-rails'
group :development do
gem 'heroku_san'
gem 'annotate'
gem 'awesome_print'
end
group :development, :test do
gem 'rspec-rails'
end
group :test do
gem 'cucumber-rails', :require => false
gem 'capybara'
gem 'database_cleaner'
gem 'spork'
gem 'launchy'
end
group :staging, :production do
gem 'thin'
end
Вот параметры конфигурации в файле config/application.rb:
config.encoding = "utf-8"
config.filter_parameters += [:password]
config.active_support.escape_html_entities_in_json = true
config.active_record.whitelist_attributes = true
config.assets.enabled = true
config.assets.version = '1.0'
config.assets.compile = true
И вот параметры конфигурации в моей среде/файл staging.rb:
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = false
config.assets.compress = true
config.assets.compile = true
config.assets.precompile += ['index.css.scss']
config.assets.digest = true
config.i18n.fallbacks = true
config.active_support.deprecation = :notify