2012-04-24 79 views
0

我在Heroku上,其正確適用於我的開發環境中的應用。然而,在Heroku上,我的一個javascripts文件是空的。這是引導文件,由bootstrap_for_rails寶石的Rails 3.2資產管道增加了?身體= 1,但成爲空資源

/assets/twitter/bootstrap-a43574b1a9d30434438a56d88ff10a70.js?body=1 
==> Returns empty file??? 

/assets/twitter/bootstrap-a43574b1a9d30434438a56d88ff10a70.js 
==> Returns the js file correctly 

提供我使用Rails 3.2資產管道,並使用在Heroku上雪松堆棧。

這裏是我的production.rb資產設置

Production.rb

config.serve_static_assets = true 

config.assets.debug = true 

config.assets.compress = false 

config.assets.compile = true 

config.assets.digest = true 

# Specifies the header that your server uses for sending files 
# config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

很簡單的application.js文件:

的application.js

//= require twitter/bootstrap 

的Gemfile

group :assets do 
    gem 'sass-rails', '~> 3.2.3' 
    gem 'coffee-rails', '~> 3.2.1' 
    gem 'uglifier', '>= 1.0.3' 
    gem 'twitter-bootstrap-rails', :git => 'https://github.com/seyhunak/twitter-bootstrap-rails.git' 
end 

我有麻煩搞清楚什麼可能是有問題的作品。 Heroku的? Rails?鏈輪? CONFIGS?

我已經嘗試過改變我的production.rb設置很多,包括註釋掉action_dispatch.x_sendfile_header。

感謝您的幫助

回答

0

我在Heroku的資產組中遇到過一些問題。嘗試將它移出它並看看它是否有效。

+0

沒有工作.... – xlash 2012-04-25 01:53:50

0

你爲什麼直接訪問單個文件?在生產中,管道的想法是將application.js清單文件中引用的所有單個文件合併到一個application.js文件中。

你的代碼只應通過javascript_include_tag引用application.css文件。在發展這將顯示包含的所有文件,如果你查看你的頁面作爲單獨的js文件的來源,同時在生產什麼,你應該看到的是像

/assets/application-46187b46e120ec79eabd082567660eb1.js

+0

這是生產前的狀態,讓我們說。我仍在調試每個組件。我一定會編譯所有東西並壓縮它進行生產。 – xlash 2012-04-24 18:49:19

+0

你發佈了你的production.rb--你的應用程序在heroku上以生產模式運行,除非你改變了它......我不明白什麼意思。這就是管道所做的事情,它正在做生產模式下應該做的事情。 – 2012-04-24 19:21:01

+0

沒有提供空文件。每個其他JS(10+)都得到了正確的服務,即使使用?body = 1查詢參數 – xlash 2012-04-24 20:11:36

2

一個js文件我相信這是設計。在看實際的引導文件(我在這裏看:https://github.com/seyhunak/twitter-bootstrap-rails/blob/master/vendor/assets/javascripts/twitter/bootstrap.js),它沒有實際的js。這只是通過「// = require」行向鏈輪發送信號,它應該將哪些.js文件引入並彙編在一起。在開發模式下,鏈輪的這些註釋隱藏在前端,因爲它們實際上只是鏈輪/導軌的實現細節。因此,總而言之,當您試圖查看一個只有多個「// = require」的(app/lib/vendor)/ assets/javascript文件時,該文件將顯示爲空因爲導軌/鏈輪在前端隱藏了您的實現細節。

+0

你可能是對的。奇怪的是,什麼都沒有編譯和服務,我確實有所有其他文件服務正確,但我的頁面上使用引導程序的JS不起作用。我會進一步調查,但如果你是對的,我的問題似乎在別處。謝謝 – xlash 2012-04-25 23:54:03

+0

不,javascripts應該可以正常工作。如果你還沒有,看這個RailsCast。這可能很簡單,你可以忽略。 http://railscasts.com/episodes/328-twitter-bootstrap-basics – shanemcd 2012-04-26 02:17:38