2013-04-04 85 views
0

今天我對Ruby on Rails有一個令人不安的問題。 我的資產沒有編譯:我的意思是,即使使用資源:預編譯,它們也不會被編譯。Rails資產編譯不正確

我相信這會更好地說明問題。預編譯的資產之後,這是/public/assets/application.js的樣子:

// This is a manifest file that'll be compiled into including all the files listed below. 
// Add new JavaScript/Coffee code in separate files in this directory and they'll automatically 
// be included in the compiled file accessible from http://example.com/assets/application.js 
// It's not advisable to add code directly here, but if you do, it'll appear at the bottom of the 
// the compiled file. 
// 
//= require jquery 
//= require jquery-ui 
//= require jquery_ujs 
//= require twitter/bootstrap 
//= require_tree . 
; 

也是一樣的CSS。 該項目在其他計算機上正常工作,所以我懷疑我的配置在這裏有問題。但是,可能會導致這種問題的原因是什麼?這不像Rails沒有嘗試預編譯,但是當他到達這些文件時,他只是將它們複製到資產文件夾中,而無需預編譯它們。

任何有關如何解決這個問題的線索?

編輯:資產的增加輸出:預編譯

** Invoke assets:precompile (first_time) 
** Execute assets:precompile 
/home/plaristote/.rvm/rubies/ruby-2.0.0-p0/bin/ruby /home/plaristote/.rvm/gems/[email protected]_commApp/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets --trace 
** Invoke assets:precompile:all (first_time) 
** Execute assets:precompile:all 
** Invoke assets:precompile:primary (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
** Invoke tmp:cache:clear (first_time) 
** Execute tmp:cache:clear 
** Execute assets:precompile:primary 
/home/plaristote/.rvm/rubies/ruby-2.0.0-p0/bin/ruby /home/plaristote/.rvm/gems/[email protected]_commApp/bin/rake assets:precompile:nondigest RAILS_ENV=production RAILS_GROUPS=assets --trace 
** Invoke assets:precompile:nondigest (first_time) 
** Invoke assets:environment (first_time) 
** Execute assets:environment 
** Invoke environment (first_time) 
** Execute environment 
** Invoke tmp:cache:clear (first_time) 
** Execute tmp:cache:clear 
** Execute assets:precompile:nondigest 
+0

你試圖預編譯的地方?生產環境還是發展? – tbem 2013-04-04 15:12:44

+0

開發和生產。請注意,在開發過程中,當我不預編譯資產時,應該通過Rails進行即時編譯:但是從我在瀏覽器中可以看到的收到的js和css文件根本不編譯(如上所示)。 – Michael 2013-04-04 15:54:30

回答

2

檢查,如果你有這樣的配置/ enviroments/production.rb:

#禁用的Rails的靜態資產服務器(Apache或Nginx的都已經做這一點)

config.serve_static_assets =假

#壓縮JavaScript和CSS

config.assets.compress =真

如果預編譯的資產錯過

config.assets.compile =假

#生成資產的URL

摘要#不要退回到管道資產

config.assets.digest = true

+0

全都清楚,他們都在那裏。 – Michael 2013-04-04 15:13:35

+0

你可以給我rake資產的輸出:precompile --trace? – tbem 2013-04-04 15:26:09

+0

完成。我將它與資產預編譯工作的另一個項目進行了比較,輸出結果是相同的(除了路徑)。 – Michael 2013-04-04 15:56:14

0

我有完全相同的問題。我最近在查看此問題之前將Ruby升級到2.0.0。通常,預編譯需要幾分鐘的時間,但是這個問題只需要幾秒鐘,並且不會產生任何錯誤。

由於我使用RVM管理Ruby,因此我能夠輕鬆切換回1.9.3並重新嘗試預編譯。當我重新嘗試使用Ruby 1.9.3進行預編譯時,我收到了有關丟失文件的錯誤,這些錯誤都與第三方gem CSS中的錯誤有關。在我手動解決這些問題後,預編譯成功(使用1.9.3)。

但是,在修復錯誤之後,我沒有嘗試切換回Ruby 2.0.0並進行預編譯 - 這是一個正在遭受停機的生產服務器,所以一旦我恢復正常,我就不能再做任何事了時間。但我的理論是,如果我切換回2.0.0,預編譯將會成功。我可能會在計劃停機時間內嘗試確認此問題並更新此答案。

所以,它似乎與Ruby 2.0.0有某種關係,預編譯任務沒有顯示錯誤。