Рельсы 4 изображения не загружаются на heroku
Я провел большую часть дня, пытаясь получить изображения для загрузки на моем heroku приложение. Все это работает локально, но не после развертывания на Heroku.
у меня есть файлы png, сохраненные в папке изображений под моими активами. Я ссылаюсь на эти изображения с синтаксисом в моем css, таких как;
#signin {
background: url(<%= asset_path 'sf.png' %>);
background-size: 100%;
}
в heroku, когда я проверяю фон активов/sf.ссылка png есть, но когда вы нажимаете на нее, она показывает сломанное изображение, предполагая, что оно не загружалось правильно.
Я пробовал переключать config.serve_static_assets = false
на production.rb
файл между true и false и не работает.
у меня тоже
group :production do
gem 'pg'
gem 'rails_12factor'
end
предварительная компиляция всегда успешна.
рельсы 4. Есть идеи, что еще попробовать?
9 ответов:
мне нужно, чтобы объединить несколько решений, чтобы сделать эту работу, вот что я сделал:
Gemfile
gem 'rails_12factor', group: :production
в своем Heroku console
heroku labs:enable user-env-compile -a yourapp
производства.РБ
config.serve_static_assets = true config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' config.assets.compile = true
мне не нужно было предварительно компилировать активы локально.
вам нужно сделать две вещи, чтобы решить ее. Во-первых, измените эти две строки с false на true в .
config.assets.compile = true config.assets.digest = true
во-вторых, если у вас есть синтаксис, как это для ваших изображений
background: url("imgo.jpg")
изменить на
background: image-url("image.jpg")
Я надеюсь, что это ваша работа.
еще одна проблема, с которой я столкнулся, заключалась в том, что я предварительно компилировал свои активы локально, прежде чем загружать его в heroku. Это требует, чтобы вы выполнили другой набор шагов, которые можно найти ниже. Если вы предварительно компилируете свои активы локально, необходимо выполнить следующие действия, иначе любые обновления, внесенные в папку активов, не будут отражены в prod.
https://devcenter.heroku.com/articles/rails-asset-pipeline
RAILS_ENV=production bundle exec rake assets:precompile
commit
иpush
на сервер.
У меня была аналогичная проблема и я решил ее следующей строкой в обычай.стиль CSS.СКС.. Скажите мне, если это работает для вас.
background: image-url('sf.png')
ссылка на актив выполняется разными способами в зависимости от того, используете ли вы ERB или Sass, смотрите в руководстве Ruby on Rails.
У меня нет репутации для комментариев (пока), но важно отметить, что функция Heroku labs была удалена, поэтому теперь вы получите ошибку "нет такой функции: user-env-compile"
Rails ('4.1.5') у меня была аналогичная проблема с изображениями, которые не отображаются на Heroku, но отображаются локально. Я не использую скрепку или carrierwave gems, я предварительно компилирую локально и RAILS_ENV=производство Я нажимаю на github, и он отлично развертывается в Heroku.
Я решил проблему,:
config.serve_static_assets = true config.assets.compile = true config.assets.js_compressor = :uglifier config.assets.digest = true // delete precompiled assets bundle exec rake assets:clobber --trace RAIL_ENV=production bundle exec rake assets:clobber --trace
скопированные изображения в public / assets из приложения / assets. затем:
// tests should pass bundle exec rake assets:precompile --trace RAILS_ENV=production bundle exec rake assets:precompile --trace git commit git push
и он отлично работал на Heroku.
у меня была похожая проблема с показом картинки. Будучи новичком в rails, я не знал, что могу использовать:
<%= image_tag("fileName.png", alt: "File Name Fancy", size: "100x100")%>
вместо традиционного html.
image_tag объясняется в rails api, но я считаю, что его использование лучше объясняется здесь: http://apidock.com/rails/ActionView/Helpers/AssetTagHelper/image_tag
все, что я добавил в мое приложение был этот драгоценный камень:
gem 'rails_12factor', group: :production
как описано в Heroku asset-pipeline документация. https://devcenter.heroku.com/articles/rails-4-asset-pipeline
Я тоже пробовал много решений, но я нашел бесценное решение и объяснение 1. Heroku ищет активы в общей папке, и это означает, что вам нужно предварительно скомпилировать свои активы, но если бы Вы были похожи на меня, кто-то искал способ предварительной компиляции моих активов, когда моя среда разработки установлена на gem sqlite, а производство-на pg, тогда вы бы это сделали.
в вашем производстве.РБ
config.serve_static_assets = true
Если у вас нет gem pg установлен вам нужно прокомментировать его и измените свою производственную среду, чтобы использовать gem sqlite и запустить это
RAILS_ENV=production bundle exec rake assets:precompile
когда все ресурсы будут предварительно скомпилированы, вернитесь к настройкам по умолчанию и добавьте git ., совершите и нажмите на heroku
изображения не будут служить в качестве активов по умолчанию, только css и js. Вы должны заглянуть в ответ
Сайед Эхтшам Аббас в этом вопросе Heroku не компилирует файлы под конвейерами активов в Rails 4