2016-04-29 44 views
8

sto ottenendo il seguente quando si cerca di precompilare i miei beni a livello localePignoni Pignoni errore :: NotImplementedError: asset_path personalizzato aiutante, non viene applicata

RAILS_ENV=production bundle exec rake assets:precompile 

rake aborted! 
Sprockets::NotImplementedError: Custom asset_path helper is not implemented 

Extend your environment context with a custom method. 

    environment.context_class.class_eval do 
     def asset_path(path, options = {}) 
     end 
    end 
/Users/cman/.rvm/gems/[email protected]/gems/sprockets-3.6.0/lib/sprockets/context.rb:198:in `asset_path' 
/Users/cman/.rvm/gems/[email protected]/gems/sprockets-3.6.0/lib/sprockets/context.rb:218:in `font_path' 
/Users/cman/.rvm/gems/[email protected]/gems/font-awesome-rails-4.6.1.0/app/assets/stylesheets/font-awesome.css.erb:15:in `_evaluate_template' 

non posso per la vita di me capire perché questo sta accadendo - qualsiasi suggerimento su come affrontare sarebbe molto apprezzato!

Aggiornamento

sono in grado di precompilare solo se aggiungo un inizializzatore con il seguente:

Rails.application.assets.context_class.class_eval do 
    def asset_path(path, options = {}) 
    return '' 
    end 
end 

Tuttavia, se lo faccio, quando spingo al mio ambiente di staging, i glyphicons da Bootstrap avere un percorso vuoto e quindi non rendono:

font-face{font-family:'Glyphicons Halflings';src:url("");src:url("") format("embedded-opentype"),url("") format("woff"),url("") format("truetype"),url("") 

UPDATE 2

Se modifico l'inizializzatore al di sotto, ottengo un percorso nelle mie precompiles patrimoniale bootstrap per glypicons, ma non è al file Glyphicon precompilato, è il percorso non compilato bene:

Rails.application.assets.context_class.class_eval do 
    def asset_path(path, options = {}) 
    #return '' 
    "/assets/#{path}" 
    end 
end 

@font-face{font-family:'Glyphicons Halflings';src:url("/assets/bootstrap/glyphicons-halflings-regular.eot");src:url("/assets/bootstrap/glyphicons-halflings-regular.eot?#iefix") format("embedded-opentype"),url("/assets/bootstrap/glyphicons-halflings-regular.woff") format("woff"),url("/assets/bootstrap/glyphicons-halflings-regular.ttf") format("truetype"),url("/assets/bootstrap/glyphicons-halflings-regular.svg#glyphicons_halflingsregular") 

Qui è la mia gemfile.lock come si riferisce alla attività/pignoni gemme:

bootstrap-sass (3.1.1.0) 
     sass (~> 3.2) 
rails (4.2.5.2) 
     actionmailer (= 4.2.5.2) 
     actionpack (= 4.2.5.2) 
     actionview (= 4.2.5.2) 
     activejob (= 4.2.5.2) 
     activemodel (= 4.2.5.2) 
     activerecord (= 4.2.5.2) 
     activesupport (= 4.2.5.2) 
     bundler (>= 1.3.0, < 2.0) 
     railties (= 4.2.5.2) 
     sprockets-rails 
sass (3.2.19) 
    sass-rails (4.0.5) 
     railties (>= 4.0.0, < 5.0) 
     sass (~> 3.2.2) 
     sprockets (~> 2.8, < 3.0) 
     sprockets-rails (~> 2.0) 
+1

Puoi condividere l'intero codice sorgente per un esempio di lavoro minimo che mostri il problema? Un repo git, ad es. – smathy

+0

Avete importato i pignoni boostrap come indicato nel documento? https://github.com/twbs/bootstrap-sass#a-ruby-on-rails –

+0

Penso che il problema Glyphicon sia solo un sintomo della mia specifica di un inizializzatore personalizzato 'asset_path'. Quello di cui ho davvero bisogno di capire è il motivo per cui lo sta chiedendo. Se creo una nuova app non la richiedo per il precompilamento. – cman77

risposta

1

È possibile superare facilmente questo problema. Anche se il tuo problema attuale è più un problema relativo alla versione e non è sicuro che tu aggiorni correttamente l'aggiornamento. Ma c'è una soluzione alternativa. Prova a installare la seguente gemma:

https://github.com/petebrowne/sprockets-helpers

+0

I non pensare di aggiungere un'altra gemma è la risposta. Come ho affermato, sono stato in grado di abbattere il mio repository e di ricostruirlo uno alla volta senza bisogno di un aiuto personalizzato. – cman77

+0

Sono riuscito a riprodurre il problema e ad aggiungere la gemma pignoni-aiutanti risolve questo problema. Qualche idea sul perché ne avessi bisogno di tutto il tempo? – cman77

1

suggerisco, che il problema principale è in sprockets versione. nel mio progetto rail 4.2.6 utilizzo sprockets 3.6.0 e nello snippet Gemfile.lock si utilizza la versione 3.0 <.

Proprio come un test, è possibile aggiornare i binari a 4.2.6 e provare le nuove ruote dentate 3.6.0 + rocchetti-rotaie 3.0.1 e nuovo sass-rails 5.0.4 e sass 3.4.22 gemma. Non so davvero quale di questi aggiornamenti sarà d'aiuto, ma penso che dovrebbe funzionare.

+0

In realtà avevo provato anche quello. Ho aggiornato i pignoni, i pignoni-rotaie, i sass-rail, il tutto per le gemme recenti. – cman77

1

Non so se questo si qualifica come risposta o no, ma mi sono limitato a tirare giù il mio repo Heroku di produzione e ho confermato tutto precompilato. Poi ho aggiornato lentamente tutte le mie gemme e tutto ha continuato a precompilare correttamente. Immagino che non saprò mai cosa ha causato questo. Grazie a coloro che hanno contribuito.

+0

Sono andato giù per una strada confusa simile o rimuovendo e aggiungendo cose ma è risultato che il motivo per cui stavo ottenendo questo errore era perché avevo un "#include ActionView :: Helpers :: AssetUrlHelper' globalmente in un inizializzatore: -/ – mraaroncruz