Рельсы 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 63

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"

еще:https://github.com/Crowdtilt/CrowdtiltOpen/issues/251

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