Heroku中的Greenscript

时间:2011-11-28 19:44:13

标签: java heroku playframework greenscript

我使用Play 1.2.3 for Java在Heroku中遇到了一个奇怪的问题:Greenscript(1.2.6l)。

在本地,使用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提出替代方案吗?

3 个答案:

答案 0 :(得分:1)

我使用的是插件,虽然非常酷,但是在开发模式相当中减慢了页面的加载速度。结果是1.2.6k中的错误导致缓存被清除。

检查html源代码,如果你没有看到对js / css文件的引用是同样的问题!

我现在正在使用一个自定义脚本ant解压war文件,删除所有不应该存在的东西(一切都包含在当前的play war命令中)并压缩名称 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>

答案 1 :(得分:1)

如果您在群集上运行,则会出现问题。结帐https://github.com/greenlaw110/greenscript/issues/30

答案 2 :(得分:0)

经过一些测试后,Greenscript似乎存在当前版本(1.2.6m)的问题,这使得它在Heroku中失败。

我使用了一种解决方法(按插件播放),但仍然在内存模式下失败,但使用文件系统。如果你们中的任何人使用Heroku并且遇到问题,我建议将此作为解决方案,同时修复Greenscript。