2016-09-08 3 views
0

Ich habe ein Problem, bei dem Bilder auf meiner Heroku-Produktions-Site nicht gefunden werden. Ich habe es auf den Digest im Dateisystem anders als es in der App gesucht sucht. Zum Beispiel in den Protokollen sehe ich die folgenden Fehler:Heroku-Assets werden nicht geladen und Assets scheinen veraltet.

app[web.1]: Started GET "/assets/nfl_teams/nfcn/chi-6317d0375db3876a5057f2da59bab1dc.jpeg" for 24.55.52.101 at 2016-09-08 23:10:18 +0000 

app[web.1]: ActionController::RoutingError (No route matches [GET] "/assets/nfl_teams/nfcn/chi-6317d0375db3876a5057f2da59bab1dc.jpeg"): 
app[web.1]: vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call' 
app[web.1]: vendor/bundle/ruby/2.2.0/gems/actionpack-4.2.5/lib/action_dispatch/middleware/show_exceptions.rb:30:in `call' 
app[web.1]: vendor/bundle/ruby/2.2.0/gems/railties-4.2.5/lib/rails/rack/logger.rb:38:in `call_app' 

Und wenn ich an die Heroku Konsole gehen und das Asset mit asset_path nachschlagen() bekomme ich folgende:

$ heroku run rails console 
Running rails console on ⬢ fbpm... up, run.7463 
Loading production environment (Rails 4.2.5) 
irb(main):001:0> puts helper.asset_path("nfl_teams/nfcn/chi.jpg") 
/assets/nfl_teams/nfcn/chi-93d8c8c53ac98c60f7f3fee1fade067dfa9489b24b8fa4bb9fedd4b12da129de.jpg 
=> nil 
irb(main):002:0> 

und schließlich am Heroku bash suchen und die Datei im Verzeichnis Überprüfung erhalte ich:

$ heroku run bash 
Running bash on ⬢ fbpm... up, run.7321 
cd public~ $ cd public/assets/nfl_teams/nfcn 
~/public/assets/nfl_teams/nfcn $ ls chi*.jpg 
chi-93d8c8c53ac98c60f7f3fee1fade067dfa9489b24b8fa4bb9fedd4b12da129de.jpg 
~/public/assets/nfl_teams/nfcn $ 

in der Konsole also an dem Asset-Pfad suche ich die folgende Datei zu erhalten:

/assets/nfl_teams/nfcn/chi-93d8c8c53ac98c60f7f3fee1fade067dfa9489b24b8fa4bb9fedd4b12da129de.jpg

Und ich bekomme die gleiche Datei, wenn ich in der Verzeichnisstruktur zu suchen. Doch aus irgendeinem Grund die Anwendung sucht diese Datei:

/assets/nfl_teams/nfcn/chi-6317d0375db3876a5057f2da59bab1dc.jpeg

die es nicht gibt und wirft einen Routing-Fehler.

Hier ist meine Gemfile:

source 'https://rubygems.org' 
ruby '2.2.4' 
#ruby-gemset=Rails_fb 

gem 'rails','4.2.5' 
gem 'bcrypt', '3.1.11' 
gem 'annotate' 
gem 'faker', '1.6.3' 
gem 'select2-rails' 
gem 'simple_form', '3.1.1' 
gem 'cocoon' 

# 
# Bootstrap support gems 
# 
gem 'bootstrap-sass' 
gem 'bootstrap-will_paginate', '0.0.10' 
gem 'font-awesome-sass', '4.6.2' 
gem 'font-awesome-rails' 
gem 'sass-rails', '~> 5.0.4' 
#gem 'select2-sass-bootstrap-rails' 

# The following Gem is used to parse the NFL page for schedules to build 
# a season. 
gem 'nokogiri' 

# Database. Using the same database for production/development 
gem 'pg' 

group :development, :test do 
    gem 'rspec-rails', '~>3.0' 
    gem 'factory_girl_rails', '4.7.0' 
    gem 'capybara', '2.7.1' 
    gem 'database_cleaner' 
    gem 'guard-rspec', '~> 4.2' 
    gem 'spork-rails' 
    gem 'guard-spork' 
    gem 'childprocess', '0.5.8' 
    gem 'letter_opener_web', '~>1.2.0' 
end 

group :test do 
    gem 'pry' 
    gem 'selenium-webdriver', '2.53.0' 
    gem 'libnotify', '0.9.1' 
end 

gem 'uglifier', '2.7.2' 
gem 'coffee-rails', '4.1.1' 
gem 'jquery-rails', '3.1.4' 
gem 'jquery-turbolinks', '2.1.0' 
gem 'turbolinks', '2.5.3' 
gem 'jbuilder', '2.4.1' 

group :doc do 
    gem 'sdoc', '0.4.1', require: false 
end 

group :production do 
    gem 'rails_12factor' 
end 

# To use debugger 
# gem 'debugger' 

gem 'execjs' 
gem 'therubyracer', :platforms => :ruby 

Und hier ist der Code, den ich die Bilder in meinen Ansichten zugreifen bin mit (ich habe es versucht, sowohl mit als auch ohne die asset_path() -Aufruf):

<%= image_tag(asset_path(team.imagePath), size: "40") %> 

Kann mir jemand sagen, warum die App nach der falschen Datei sucht? Offensichtlich gibt es einige Disconnect in der Asset-Pipeline, aber ich kann nicht herausfinden, wo?

Und dieses Problem begann nach dem Upgrade von Ruby 2.0.0 auf Ruby 2.2.4, die mich dazu veranlasste, eine Reihe meiner Edelsteine ​​zu aktualisieren.

Antwort

0

Hoffentlich hilft das. Um 4 eine neue precompile von Vermögenswerten auf Heroku in Rails zu zwingen, müssen Sie folgendes tun:

  • Rake Vermögen:

  • Rake Vermögenswerte clobber: precompile

Dann git commit/push zu master and push zu Heroku und es sollte eine neue Vorkompilierung machen, die hoffentlich die Asset-Pipeline synchronisiert. Verwenden Sie keine Rake-Assets: bereinigen Sie, da es keine neue Kompilierung erzwingt.

Verwandte Themen