0

私のgrailsアプリには次のコードがあります:

def list () {
  def roles = principal.authorities*.authority
  def page = roles.contains("ROLE_ADMIN")? "allcolors": "usercolors"
  if (params.sort == "latest" || params.sort == null) {
    logger.debug("came in if");
    render view: page, model: [colorlist: colorService.colorList()]
  } 
  else
    render view: page, model: [colorlist: colorService.colorListForUser()]
}

grails run-app上記のコードでアプリケーションを実行すると、正常に動作します。ただし、上記のコードで作成された war ファイルをデプロイすると、デバッグ ステートメントがまだ出力されgrails test war target/myapp.warていても、「ページが見つかりません」というエラーが表示されて機能しません。came in if

このアプリを開発中も実行しようとしましgrails test run-appたが、それでも上記は機能しません。興味深いことに、アプリをprodモード ( grails prod run-app) で実行すると、すべて正常に動作します。ですから、それは確かにtest環境と関係があります

また、データの不一致がないことを確認するために、同じ開発データベースを指すように dev test と prod を変更しました。

私のアプリには、テスト環境用の特別な設定があり、それが表示されていない可能性があります...「レンダリング」が機能しませんか?

私の環境は次のようになります。

    environments {
        development {
            grails.logging.jul.usebridge = true
        }
        test {
            grails.logging.jul.usebridge = true
        }
        production {
            grails.logging.jul.usebridge = false
        }
    }

And DB config looks like this:

environments {
    development {
        dataSource {
            dbCreate = "update" // one of 'create', 'create-drop', 'update', 'validate', ''
            url = "jdbc:mysql://localhost/myapp?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
            username = "root"
            password = ""
        }
        hibernate {
        }
    }
    test {
        dataSource {
            dbCreate = 
            url = "jdbc:mysql://localhost/myapp?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
            username = "root"
            password = ""
            properties {
            }
            hibernate {
            }
        }
    }
    production {
        dataSource {
            dbCreate = "create-drop"
            url = "jdbc:mysql://localhost/myapp?useUnicode=yes&zeroDateTimeBehavior=convertToNull&characterEncoding=UTF-8"
            username = "root"
            password = ""
        }
    }
}

どうすればこれを解決したり、さらにトラブルシューティングしたりできますか??

4

1 に答える 1

0

run-app は、デフォルトの「開発」データ ソースで実行されます。これを「テスト」環境と混同しないでください。Config.groovy (編集: および DataSource.groovy) を確認し、環境内でテスト { } が構成されていることを確認してください。

詳細については、grails のドキュメント ( http://www.grails.org/Environments ) を参照してください。

于 2013-09-20T16:39:20.043 に答える