1

Grails で Groovy を使用しており、リソース プラグインが構成されています。私はこのシナリオを持っています:

  • 複数の画像がある製品があります。

  • 管理者は任意の画像を削除できます。

ロジックは、管理者が [削除] をクリックすると、ファイル (およびそのサム ファイル) をファイル システムから削除するというものです。

プロセス全体はスムーズに動作しますが、しばらくして (5 ~ 6 分)、リソース プラグインがリソースを再度更新すると、「一部のモジュールはリソース [パス/ファイルへの] に依存しているが、ファイルは見つかりませんでした"。

スタック トレースは次のとおりです。

2012-08-10 12:49:41,159 [http-8080-2] ERROR errors.GrailsExceptionResolver  - Exception occurred when processing request: [GET] /
Stacktrace follows:
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <r:layoutResources>: Module [__@adhoc-files@__] depends on resource [/images/product/p312roduct/original/Candle_4.jpg] but the file cannot be found at /home/desktop2/finalWorkspace3/ds/grails-app/views/layouts/main.gsp:13
    at home_desktop2_finalWorkspace3_ds_grails_app_views_layouts_main_gsp$_run_closure1.doCall(main.gsp:13)
    at home_desktop2_finalWorkspace3_ds_grails_app_views_layouts_main_gsp$_run_closure1.doCall(main.gsp)
    at home_desktop2_finalWorkspace3_ds_grails_app_views_layouts_main_gsp.run(main.gsp:17)
    at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:44)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:197)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:171)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.IllegalArgumentException: Module [__@adhoc-files@__] depends on resource [/images/product/p312roduct/original/Candle_4.jpg] but the file cannot be found
    at org.grails.plugin.resource.ResourceTagLib$_closure8.doCall(ResourceTagLib.groovy:463)
    at org.grails.plugin.resource.ResourceTagLib.invokeMethod(ResourceTagLib.groovy)
    at org.grails.plugin.resource.ResourceTagLib$_closure6.doCall(ResourceTagLib.groovy:387)
    ... 7 more
2012-08-10 12:49:41,172 [http-8080-2] ERROR pages.GroovyPagesServlet  - Error processing GSP: Error executing tag <r:layoutResources>: Module [__@adhoc-files@__] depends on resource [/images/product/p312roduct/original/Candle_4.jpg] but the file cannot be found at /home/desktop2/finalWorkspace3/ds/grails-app/views/layouts/main.gsp:13
org.codehaus.groovy.grails.web.taglib.exceptions.GrailsTagException: Error executing tag <r:layoutResources>: Module [__@adhoc-files@__] depends on resource [/images/product/p312roduct/original/Candle_4.jpg] but the file cannot be found at /home/desktop2/finalWorkspace3/ds/grails-app/views/layouts/main.gsp:13
    at home_desktop2_finalWorkspace3_ds_grails_app_views_layouts_main_gsp$_run_closure1.doCall(main.gsp:13)
    at home_desktop2_finalWorkspace3_ds_grails_app_views_layouts_main_gsp$_run_closure1.doCall(main.gsp)
    at home_desktop2_finalWorkspace3_ds_grails_app_views_layouts_main_gsp.run(main.gsp:17)
    at org.grails.plugin.resource.DevModeSanityFilter.doFilter(DevModeSanityFilter.groovy:44)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:197)
    at net.bull.javamelody.MonitoringFilter.doFilter(MonitoringFilter.java:171)
    at java.lang.Thread.run(Thread.java:679)
Caused by: java.lang.IllegalArgumentException: Module [__@adhoc-files@__] depends on resource [/images/product/p312roduct/original/Candle_4.jpg] but the file cannot be found
    at org.grails.plugin.resource.ResourceTagLib$_closure8.doCall(ResourceTagLib.groovy:463)
    at org.grails.plugin.resource.ResourceTagLib.invokeMethod(ResourceTagLib.groovy)
    at org.grails.plugin.resource.ResourceTagLib$_closure6.doCall(ResourceTagLib.groovy:387)
    ... 7 more
4

1 に答える 1

3

リソース プラグインは、モジュール内の基になるファイルが変更されないことを想定しています。さらに、(モジュールや <g:resource> タグを介さずに) アプリによって直接リンクされている静的アセットは、アドホックと見なされ、モジュールとしてリソース コンテキストに追加されます。これにより、これらの「レガシー」アセットでさえ、リソース プラグインによって縮小、コンパイル、キャッシュなどを行うことができます。

ファイル システムを使用してこれらのある程度動的なアセットを配信している場合は、リソース プラグインのアドホック処理からそれらを除外することをお勧めします。構成フラグgrails.resources.adhoc.excludesを設定して、これらのアセットを保存するディレクトリを除外します。

于 2012-08-10T07:35:26.100 に答える