0

我有一个相当简单的应用程序,在本地运行良好,使用正确的路由,即:/conf/routes 用于大多数应用程序路由,/module/securesocial/conf 用于适合该模块的路由。

但是一旦我发布到heroku,只使用securesocial路由,所以我收到一条错误消息“Action not Found For request GET /”<--或标准路由文件中定义的任何路由。

当我尝试操纵路线(例如创建一个综合路线文件)时,我在编译时遇到很多不同的错误......

这是我的标准路线:

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
GET     /                           controllers.Application.index()
GET     /foo                        controllers.Application.index()

GET     /admin                      controllers.Application.admin()

POST    /quote                      controllers.Application.addQuote()

GET     /quotes                     controllers.Application.getQuotes()

# Login page
GET     /login                      securesocial.controllers.LoginPage.login
GET     /logout                     securesocial.controllers.LoginPage.logout

# User Registration
GET     /signup                     securesocial.controllers.Registration.signUp
POST    /signup                     securesocial.controllers.Registration.handleSignUp

# Providers entry points
GET     /authenticate/:provider     securesocial.controllers.LoginPage.authenticate(provider)
POST    /authenticate/:provider     securesocial.controllers.LoginPage.authenticateByPost(provider)


# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)

这是我的 /securesocial/conf/route 文件:

# Routes
# This file defines all application routes (Higher priority routes first)
# ~~~~

# Home page
# GET     /                           controllers.Application.index

# Map static resources from the /public folder to the /assets URL path
GET     /assets/*file               controllers.Assets.at(path="/public", file)

# Login page
GET     /login                      securesocial.controllers.LoginPage.login
GET     /logout                     securesocial.controllers.LoginPage.logout

# User Registration
GET     /signup                     securesocial.controllers.Registration.signUp
POST    /signup                     securesocial.controllers.Registration.handleSignUp

GET     /authenticate/:provider     securesocial.controllers.LoginPage.authenticate(provider)
POST    /authenticate/:provider     securesocial.controllers.LoginPage.authenticateByPost(provider)

我意识到有一些重复,但这是我用来让设置在本地工作的配置(它类似于 securesocial 发行版中提供的示例)......

如果你能发现我做错了什么,我肯定会从课程修正中受益。

谢谢,芯片

4

2 回答 2

0

有一个非常简单的解决方案:将 SecureSocial 中的路由合并到您应用的conf/routes.

于 2012-09-16T07:11:46.117 回答
0

我修改了 SecureSocial 的工作方式以解决 Play 2 中的错误,该错误使子模块中的路由覆盖主应用程序中的路由。

这个新版本不需要您将模块代码复制到您的应用程序中,而是将其作为可下载的依赖项获取。

尝试这个:

  1. 从目录结构中删除模块代码。
  2. 更改您的 Build.scala 文件以包含以下依赖项:“securesocial”%“securesocial_2.9.1”%“2.0.5”。
  3. 添加一个新的解析器作为设置的一部分:resolver += Resolver.url("SecureSocial Repository", url("http://securesocial.ws/repository/releases/"))(Resolver.ivyStylePatterns)。

这是一个外观示例:

val appDependencies = Seq(
    //
    // your other dependencies
    // 
    "securesocial" % "securesocial_2.9.1" % "2.0.5"
)
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
  resolvers += Resolver.url("SecureSocial Repository", url("http://securesocial.ws/repository/releases/"))(Resolver.ivyStylePatterns)
)

希望能帮助到你。

于 2012-10-02T18:59:12.087 回答