2013-04-04 5 views
8

Ho visto alcuni post simili ma senza soluzioni, quindi ho pensato di presentare un problema più documentato.Il file manifest Javascript di My Rails non compila né include alcun file richiesto

Il mio problema JS dal file manifest non include o compila alcun JS.

Quando si esegue il mio server a livello locale, e aprendo il file JS non vedo nulla compilato, solo lo standard application.js file manifesto:

// This is a manifest file that'll be compiled into application.js, which will include all the files 
// listed below. 
// 
// Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, 
// or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. 
// 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// the compiled file. 
// 
// WARNING: THE FIRST BLANK LINE MARKS THE END OF WHAT'S TO BE PROCESSED, ANY BLANK LINE SHOULD 
// GO AFTER THE REQUIRES BELOW. 
// 
//= require jquery 
//= require jquery_ujs 
//= require underscore 
//= require backbone 
//= require backbone_rails_sync 
//= require backbone_datalink 
//= require backbone/myapp 
//= require_tree . 

mio development.rb:

MyApp::Application.configure do 
    config.cache_classes = false 
    config.whiny_nils = true 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 
    config.action_mailer.raise_delivery_errors = false 
    config.active_support.deprecation = :log 
    config.action_dispatch.best_standards_support = :builtin 
    config.active_record.mass_assignment_sanitizer = :strict 
    config.active_record.auto_explain_threshold_in_seconds = 0.5 
    config.assets.compress = false 
    config.assets.debug = true 
end 

La mia domanda .RB:

require File.expand_path('../boot', __FILE__) 

require 'rails/all' 

if defined?(Bundler) 
    Bundler.require(*Rails.groups(:assets => %w(development test))) 
end 

module MyApp 
    class Application < Rails::Application 
    config.encoding = "utf-8" 
    config.filter_parameters += [:password] 
    config.active_support.escape_html_entities_in_json = true 
    config.active_record.whitelist_attributes = true 
    config.assets.enabled = true 
    config.assets.version = '1.0' 
    end 
end 

mio log:

012.351.641.061.
Started GET "/questions" for 127.0.0.1 at 2013-04-04 08:56:09 -0400 
Processing by QuestionsController#index as HTML 
Completed 200 OK in 204ms (Views: 16.0ms | ActiveRecord: 17.4ms) 

Started GET "/assets/application.css" for 127.0.0.1 at 2013-04-04 08:56:09 -0400 
Served asset /application.css - 304 Not Modified (2ms) 

Started GET "/assets/application.js" for 127.0.0.1 at 2013-04-04 08:56:09 -0400 
Served asset /application.js - 304 Not Modified (0ms) 

Started GET "/assets/favicon.png" for 127.0.0.1 at 2013-04-04 08:56:09 -0400 
Served asset /favicon.png - 304 Not Modified (0ms) 

Da segnalare, questa applicazione è stato scelto da un altro ciliegio app come ho migrato da un MongoDB costruire ad un accumulo Postgres. Quindi penso che molto probabilmente, questo ha qualcosa a che fare con alcuni dettagli non cifrati.

Questo problema può essere riprodotto facendo ..

  1. $ rvm use ruby-2.0.0-p0
  2. $ rails new project
  3. Creare un file JavaScript con alert('hey') in esso in /assets/javascripts/
  4. $ rails s

Penso che questo problema è perché Ruby 2 fa Non lavoro con Rails ancora :(


ho questo ufficialmente individuato come Ruby 2 in incompatibile con Rails 3.2.6

+0

Cosa c'è nella sezione troncata del file 'application.js'? – claptimes

+0

Aggiornato per te. – Trip

+0

Domanda sciocca, ma hai una sezione di risorse nel file gemma con sass-rail, jquery-rails e jquery-ui-rails? Mi chiedo se non riesca a trovare le dipendenze. Sebbene, il server non inizierebbe con quelli nel manifest e le gemme non installate. –

risposta

3

Ho avuto lo stesso problema, ha preso molto tempo per trovare una soluzione a questo.

Sono appena tornato a ruby-1.9.3-p429 e ha risolto il problema. Non so come gestirlo con ruby 2 patches. Ho usato ruby-2.0.0-p247 e ruby-2.0.0-p195.

Quindi, basta fare rvm use ruby-1.9.3-p429. Quindi esegui "aggiornamento bundle". Quindi svuota il cache di Rails eseguendo Rails.cache.clear nella console e non dimenticare di svuotare la cache del browser.

Spero che vada bene. :) -

5

La soluzione di Rajesh ha funzionato anche per me. Stavo usando 2.0.0-p195 e rastrellare le risorse: il precompilare sulla produzione non leggeva realmente application.js e alla fine ho avuto l'applicazione file - ###. Js con la dimensione di 1kb.

Così sono tornato al rubino 1.9.3, aggiornato il fascio, eliminato manualmente la cache

rm -rf tmp/cache/assets/* 
rm -rf tmp/cache/sass/* 

e poi

nei miei application.js, ho

//= require jquery 
//= require bootstrap 
//= require_tree . 

nota che io non uso jQuery-ui o jquery_ujs

poi corsi

rake RAILS_ENV=production RAILS_GROUP=assets assets:clean 
rake RAILS_ENV=production RAILS_GROUP=assets assets:precompile 

Ora funziona.

+0

Molti danno questa soluzione di tornare a Ruby 1.9, ma non è possibile per quelli che utilizzano Rails 5, in quanto richiede Ruby 2.2.2. –

Problemi correlati