2011-11-28 62 views
0

我在使用Play 1.2.3 for Java的Heroku中遇到了Greenscript(1.2.6l)的一個奇怪問題。Heroku中的綠色標記

在本地,使用Play啓動程序或Foreman開始,在兩種模式(DEV和PROD)中,Greenscript工作正常,壓縮文件並加載css/javascript。

在Heroku上我得到這樣的:

2011-11-28T19:18:34+00:00 heroku[router]: GET XXXXXX.herokuapp.com/public/gs/b097436f-9941-4d07-98cf-31bd574e6351.js dyno=web.1 queue=0 wait=0ms service=26ms status=404 bytes=4222 

正如你所看到的,試圖載入一個壓縮js文件時404錯誤。發生此錯誤時,將Greenscript設置爲使用文件系統或文件的內存中存儲。

任何人都有類似的問題,並知道解決方案?或者,如果沒有,任何人都可以提出Greenscript的替代方案嗎?

+0

你有一個簡單的測試用例/演示,你可以指向我,所以我可以嘗試這個我自己? –

+0

@James Ward在Heroku的請求#36314(我看到你在那裏工作),你應該可以訪問代碼。在此期間,我正在查看Press插件作爲替代(本地到目前爲止) –

回答

1

我正在使用插件,雖然很酷,但它減緩了在開發模式下加載頁面的速度相當大。蛋糕上的結果是導致緩存被清除的1.2.6k中的錯誤。

檢查html源代碼,如果你沒有看到引用js/css文件是相同的問題!

現在我使用的是自定義腳本螞蟻是解壓war文件,刪除了不應該在那裏(一切都被包含在當前播放的戰爭命令)的所有東西,並壓縮其名稱在結束javascript文件min.js

這樣,當我的代碼我仍然可以看到JavaScript,但在生產壓縮。

我使用較少的CSS,但因爲我手動運行lessc編譯器。它畢竟不會有太大變化,所以我不會爲此煩惱。

這是腳本的目標是什麼樣子

<target name="minimize-war" depends="" description="removes not needed stuff from war file"> 
    <delete dir="${buildDir}/tmp"/> 
    <unzip src="${buildDir}/myappname-war.war" dest="${buildDir}/tmp"/> 
    <foreach target="minimize" param="filename"> 
      <fileset dir="${buildDir}/tmp/WEB-INF/application/public/javascripts" > 
        <include name="**/*.js"/> 
        <exclude name="**/*.min.js"/> 
      </fileset> 
      <param name="type" value="js"/> 
    </foreach> 
    <foreach target="minimize" param="filename"> 
      <fileset dir="${buildDir}/tmp/WEB-INF/application/public/stylesheets" > 
        <include name="**/*.css"/> 
      </fileset> 
      <param name="type" value="css"/> 
    </foreach> 
    <delete dir="${buildDir}/tmp/WEB-INF/application/ant-lib"/> 
    <delete dir="${buildDir}/tmp/WEB-INF/application/docs"/> 
    <delete dir="${buildDir}/tmp/WEB-INF/application/eclipse"/> 
    <delete dir="${buildDir}/tmp/WEB-INF/application/liquibase"/> 
    <delete dir="${buildDir}/tmp/WEB-INF/application/icon-lib"/> 
    <delete dir="${buildDir}/tmp/WEB-INF/application/test"/> 
    <delete dir="${buildDir}/tmp/WEB-INF/application/test-result"/> 
    <delete><fileset dir="${buildDir}/tmp/WEB-INF/application" includes="*.*"></fileset></delete> 
    <delete file="${buildDir}/myappname-war.war"/> 
    <zip destfile="${buildDir}/myappname-war.war" basedir="${buildDir}/tmp"/> 
</target> 

<target name="minimize"> 
    <echo>Running compress for type ${type} on file ${filename} </echo> 
    <java dir="${buildDir}/tmp/WEB-INF/application/public/javascripts" jar="${basedir}/ant-lib/yuicompressor-2.4.6.jar" fork="true"> 
      <arg value="--charset" /> 
      <arg value="UTF-8" /> 
      <arg line="--type ${type} -o ${filename} ${filename}" /> 
    </java> 
</target> 
+0

那麼,在Heroku中部署使用Play服務器,而不是戰爭,所以您的解決方案並不適用。無論如何感謝您的信息。 –

0

經過一些測試,似乎有與Greenscript問題上升到目前的版本(1.2.6m),這使得它在Heroku的失敗。

我使用了一種解決方法(用於播放的插件),它在內存模式下仍然失敗,但使用文件系統工作。如果你們中的任何一個人使用Heroku並遇到問題,我會推薦這個解決方案,而Greenscript得到修復。