2013-08-27 76 views
2

我想要獲得一個在Heroku Rails 4 applicarion上顯示的JavaScript項目。在我的本地開發機器上,一切都運行完美。無法在Heroku上運行。Heroku和Rails 4:一些JavaScript不工作

以我application.html.erb文件我已經加入:

<%= javascript_include_tag "application" %> 

和在另一視圖中的文件(events.html.erb)我有:

<script type="text/javascript"> 
    $(document).ready(function() 
    ...code to add data to a timeline using getjson()... 
</script>` 

其指的是資源> javascripts文件夾中的timeline.js文件。當添加一個事件時(使用Rails CRUD操作,javascript代碼調用getJson()方法並將事件添加到時間軸上。在本地機器上按預期工作。

當我推到Heroku時,可通過欄杆添加事件,但不顯示時間軸

我最初的想法是,JavaScript是沒有被加載在Heroku上,所以因此我添加了一個簡單:

<script type="text/javascript"> 
    alert('Displays OK') 
</script> 

電話,這顯示就好了在Heroku上(以及在本地機器上)。

當在Heroku網頁源代碼看,我可以看到:

<script src="/assets/application-6da332d35efc3706e98f87ead9900f20.js"> 

所以看來timeline.js文件進行預編譯(似乎時間軸JS的最小化版本)。

在我的本地機器上,我沒有看到預編譯的js文件,但我看到:

<script src="/assets/timeline.js?body=1"></script> 
<script src="/assets/timeline.min.js?body=1"></script> 

是在Heroku上,它顯示的javascript警報,但沒有時間表,似乎表明這一事實在預編譯中有些東西與javascript代碼搞砸了。

我在heroku日誌中看不到任何明顯的東西。它說slu comp編譯成功完成,我看不到錯誤消息。

有沒有一種方法,我可以強制執行的Heroku不使用預編譯的js文件,所以我可以在Heroku:

<script src="/assets/timeline.js?body=1"></script> 
    <script src="/assets/timeline.min.js?body=1"></script> 

我在production.rb文件中的以下內容:

config.serve_static_assets = false 
config.assets.js_compressor = :uglifier 
config.assets.compile = true 
config.assets.compress = true 
config.assets.digest = true 
config.assets.debug = false 

希望有人能幫助我。這一直困擾着我幾天。任何幫助讚賞。 謝謝!

+0

不壓縮你的資產的選項? –

回答

5

我想你需要指定timeline.js必須預編譯。 在配置/環境/ production.rb,補充一點:

config.assets.precompile += %w(timeline.js) 

在您查看,包括你時間線JS:

<%= javascript_include_tag "timeline" %>