0

GitHub のソースを使用して Weceem をセットアップしようとしています。アップロード ディレクトリの物理パス定義が必要であり、検索可能なインデックスの書き込みに使用されるように見えるディレクトリの場合。アップロードのデフォルト設定は次のとおりです。

weceem.upload.dir = 'file:/var/www/weceem.org/uploads/'

WEB-INF/resources/uploads のような相対パスを使用して定義したいと思います。次のような相対パスでディレクトリにアクセスするために以前に使用した方法を試しました。

  File uploadDirectory = ApplicationHolder.application.parentContext.getResource("WEB-INF/resources/uploads").file
  def absoluteUploadDirectory = uploadDirectory.absolutePath
  weceem.upload.dir = 'file:'+absoluteUploadDirectory

ただし、ApplicationHolder.application の下の「parentContext」は NULL です。相対パスを使用できるようにする解決策を誰かが提供できますか?

4

3 に答える 3

3

必要な Config.groovy を見てください (コメントされている可能性があります)。

// locations to search for config files that get merged into the main config
// config files can either be Java properties files or ConfigSlurper scripts

// "classpath:${appName}-config.properties", "classpath:${appName}-config.groovy",
grails.config.locations = [
        "file:${userHome}/.grails/${appName}-config.properties",
        "file:${userHome}/.grails/${appName}-config.groovy"
]

デプロイ サーバーで Conig ファイルを作成する

"${userHome}/.grails/${appName}-config.properties"

そして、その構成ファイルで小道具(相対パスでなくても)を定義します。

于 2012-05-17T04:20:08.063 に答える
2

Aram Arabyan の回答に追加するには、これは正しいですが、説明がありません。

Grails アプリには、PHP アプリのような「ローカル」ディレクトリはありません。これらは (本番用に) サーブレット コンテナーにデプロイする必要があります。そのコンテンツの場所は、次の展開で消去される可能性があるため、書き込み可能と見なされるべきではありません。

つまり、デプロイされたアプリケーションをコンパイル済みのバイナリと考えてください。

代わりに、アップロードが存在するサーバー上の特定の場所を選択してください。直接アクセスできないように、できれば Web サーバーのパスの外にあることをお勧めします。そのため、Weceem は既定で の下のカスタム フォルダーに設定されています/var/www/weceem.org/

外部化された構成手法を使用してパスを構成すると、サーバーに固有のパスを作成し、開発マシンに別のパスを含めることができます。

ただし、どちらの場合も、絶対パスを使用するか、少なくとも既知のディレクトリからの相対パスを使用する必要があります。

于 2012-05-17T04:43:13.063 に答える
0

すなわち

            String base = System.properties['base.dir']     
            println "config: ${base}/web-app/config/HookConfig.grooy"
            String str = new File("${base}/web-app/config/HookConfig.groovy").text
            return new ConfigSlurper().parse(str)

また

def grailsApplication    
private getConfig() {
            String str = grailsApplication.parentContext.getResource("config/HookConfig.groovy").file.text
            return new ConfigSlurper().parse(str)
}
于 2012-05-17T14:46:23.150 に答える