Heroku не служит фоновым изображением, localhost делает?

У меня проблема с моим приложением rails (Rails 4.0.0.rc2, ruby ​​2.0.0p195).

Поведение странно: мой локальный хост показывает фоновое изображение правильно, Heroku этого не делает.

В журналах heroku я вижу следующую ошибку:

ActionController::RoutingError (No route matches [GET] "/assets/piano.jpg"):

Я создал фоновое изображение, вставив следующий код в свой файл custom.css.scss:

.full { 
  background: image-url("piano.jpg") no-repeat center center fixed; 
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
}

И я запускаю это со следующим кодом, который у меня есть на моей статической странице:

<body class="full">
....
</body>

У меня уже есть драгоценный камень, работающий в производстве:

group :production do
  gem 'pg'
  gem 'rails_12factor'
end

В production.rb Я установил следующий параметр в true:

config.serve_static_assets = true

Однако изображение не отображается. Можете ли вы мне помочь?

Ответ 1

Я сам нашел решение для проблемы:

RAILS_ENV=production bundle exec rake assets:precompile

После запуска этой команды в консоли, изображение было показано правильно.

Раньше я только пытался запустить:

rake assets:precompile

Это само по себе не помогло. Вы должны обратиться к рабочей среде в своей команде.

Надеюсь, это послужит ссылкой для других пользователей.

Ответ 2

Убедитесь, что вы установили их в файле production.rb

config.cache_classes = true
config.serve_static_assets = true
config.assets.compile = true
config.assets.digest = true

Ответ 3

Мне нужна комбинация других ответов для работы для меня.

Мне нужно было использовать настройки конфигурации продукта @Brock90, а также прекомпилировать активы, о которых говорил Алекс.

Ответ 5

У вас нет фотографий в подкаталогах в каталоге images/

Если у кого-то все еще есть проблемы с этим. Я искал повсюду решение, и я думал, что все пробовал. Для моего случая у меня были такие случаи, как

background-image: url("containers/filled/Firkin-Keg-5-Gallons_filled.png");

Итак, у меня были папки в изображениях. Это отлично работает для локального хоста, но это не будет работать на герою.

background-image: url("Firkin-Keg-5-Gallons_filled.png");

нет дополнительных подкаталогов.