Again ...assets:precompile

Używam datatables.net . http://www.datatables.net/

mam tam taki wpis:

$(document).ready(function() {
  var oCompanyTable = $('#companies').DataTable({
    processing: true,
   ....
    language: {
      processing: "<img src='/assets/spinner.gif'>",
...
    }
  });

});

zgodnie zresztą z:

W wersji RAILS_ENV=development działa i kręci się kółeczko, gdy dane są pobierane z bazy lub gdy je sortuję.
wrzuciłem na serwer produkcyjny (nginx, passeger) i
w /config/enviroments/production.rb zakomentowałem:

 # config.serve_static_assets = false

i wykonałem

 rake tmp:clear
 rake assets:clean
 rake assets:clobber
 rake assets:precompile, 

ciągle dostaję błąd:

App 4558 stdout: ActionController::RoutingError (No route matches [GET] "/assets/spinner.gif"):
App 4558 stdout:   actionpack (4.2.0) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'

dotyczy to oczywiście fragmentu:

  processing: "<img src='/assets/spinner.gif'>",

z w/w skryptu JS

Nie ma żadnego znaczenia, co tam wstawiam:

  processing: "<img src='spinner.gif'>",
  processing: "<img src='/assets/images/spinner.gif'>",
  processing: "<img src='assets/spinner.gif'>",
  processing: "<img src='../assets/spinner.gif'>",

i tak jest d…pa blada. :frowning:
Dopiero gdy przekopiuję plik spinner.gif do /public/assets , to znajduje ścieżkę do niego i go wyświetla.

Już znalazłem wpisy, że należy zrobić assets:precompile:nodigest (nie działa w rails 4.2, ruby 2.2.0)

Czy doprawdy muszę zawsze kopiować ręcznie ten plik lub użyć pomysłu:

?

Dodam jeszcze, że topic:


i

czytałem, nie mam spacji w nazwie i plik:
spinner-991c48c652fdc37f01fb58f0e16aad98.gif
który znajduje się w /public/assets ma prawa do odczytu dla wszystkich

Jeśli nie masz zbyt dużo tego JS to przepisz to na Coffeescript (albo skorzystaj z http://js2coffee.org/) i użyj w swoich Coffee

asset_path('spinner.gif')

Ewentualnie jak Ci się nie chce bawić z digestami przy obrazkach, twórz sobie jakiegoś symlinka do podfolderu w public po deployu szy soś

Nie trzeba przechodzić na CoffeeScript, wystarczy zmienić rozszerzenie na erb - http://guides.rubyonrails.org/asset_pipeline.html#coding-links-to-assets (sekcja 2.3.3 JavaScript/CoffeeScript and ERB)

Jesteś wielki! :smile:

Plik company.js zamieniam na company.js.erb

a wpis:

$(document).ready(function() {
  var oItemsTable = $('#companies').DataTable({
    processing: true,
    ...
      processing:     "<img src='/assets/spinner.gif'>",
    ...

na

processing: "<img src='<%= asset_path('spinner.gif') %>'>",

i… działa! :smiley: :smiley: :smiley:

SERDECZNE DZIĘKI!!