我希望我的Play应用程序使用不同的数据库进行测试,本地和生产(生产是Heroku)环境.
在application.conf我有:
db.default.driver=org.postgresql.Driver
%dev.db.default.url="jdbc:postgresql://localhost/foobar"
%test.db.default.url="jdbc:postgresql://localhost/foobar-test"
%prod.db.default.url=${DATABASE_URL}
Run Code Online (Sandbox Code Playgroud)
这似乎不起作用.当我运行play test或play run所有数据库访问失败时:
Configuration error [Missing configuration [db.default.url]] (Configuration.scala:258)
Run Code Online (Sandbox Code Playgroud)
我有几个问题:
在一般情况下,我有点困惑的数据库是如何在游戏配置:它看起来像有平原db,db.[DBNAME]并db.
[DBNAME].url与不同的教程让那些之间不同的选择.某些表达式似乎应该可以正常工作(例如db.default.url = "jdbc:...",在预期对象的位置提供字符串的错误时失败).
我见过其他人认为我创建单独的prod.conf,dev.conf和test.conf文件均包括application.conf然后包含特定DB-配置.但在这种情况下,如何指定test从Play控制台运行时要使用的数据库?
%env语法是否适用于Play 2?
指定play test要使用的环境的正确方法是什么?
database configuration scala playframework playframework-2.0
在Playframework 2.0中,发送电子邮件似乎并不那么简单(请参阅Play 1.x中有关在Play Framework中使用sendmail作为SMTP服务器的评论).没有开箱即用的邮件程序功能......所以,我该如何发送电子邮件?
我想在运行时替换一些方法的内容.
我知道我可以使用javassist但它不起作用,因为我想要增强的类已经被系统classLoader加载.
我该怎么做,在运行时替换方法的内容?我应该尝试卸载课程吗?我怎样才能做到这一点 ?我看到它是可能的,但我无法弄清楚如何做到这一点.
如果可能的话,我想避免使用外部库,我想自己编写代码.
更多信息: - 我想要增强的类包含在一个框架中(在一个jar文件中) - 我的代码实际上是这个框架的一个插件 - 我的插件运行的框架有自己的classLoader,但是这个classLoader没有加载自己的类(它将它们委托给系统类加载器) - 我正在使用的框架是Play.
谢谢您的帮助 !
我正在尝试将一个简单的URL传递给播放框架应用程序中的视图,但是当作为字符串传递时,&URL中的更改&会导致URL无效.
如果我将参数更改为Html,即@(url: Srting)to @(url: Html),那么当我尝试将url作为字符串传递给view.render()方法时,我会收到错误.
如何将网址转换为Html并将其传递给它?
我使用scala(2.1)进行播放,我需要将"Option [Long]"值转换为"Long".
我知道如何做相反的事情,我的意思是:
def toOption[Long](value: Long): Option[Long] = if (value == null) None else Some(value)
Run Code Online (Sandbox Code Playgroud)
但就我而言,我必须将"Option [Long]"的值作为一个类型传递给一个采用"Long"的方法.请帮忙.
我试图在开发模式下在HTTPs上运行play framework 2.2.1应用程序.我使用以下命令:
Development/Play/ssltest$ JAVA_OPTS=-Dhttps.port=9443 play run
Run Code Online (Sandbox Code Playgroud)
我得到了以下,这似乎没问题
--- (Running the application from SBT, auto-reloading is enabled) ---
[info] play - Listening for HTTP on /0:0:0:0:0:0:0:0:9000
[info] play - Listening for HTTPS on port /0:0:0:0:0:0:0:0:9443
(Server started, use Ctrl+D to stop and go back to the console...)
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试通过HTTPS连接到应用程序时:
"https://localhost:9443"
Run Code Online (Sandbox Code Playgroud)
应用程序崩溃,我进入以下一堆例外:
[error] play - Error loading fake key store
java.security.cert.CertificateException: Subject class type invalid.
at sun.security.x509.X509CertInfo.setSubject(X509CertInfo.java:888) ~[na:1.8.0-ea]
at sun.security.x509.X509CertInfo.set(X509CertInfo.java:415) ~[na:1.8.0-ea]
at play.core.server.netty.FakeKeyStore$.createSelfSignedCertificate(FakeKeyStore.scala:71) ~[play_2.10.jar:2.2.1]
at play.core.server.netty.FakeKeyStore$.keyManagerFactory(FakeKeyStore.scala:34) ~[play_2.10.jar:2.2.1]
at play.core.server.NettyServer$PlayPipelineFactory$$anonfun$sslContext$2.apply(NettyServer.scala:98) [play_2.10.jar:2.2.1]
at play.core.server.NettyServer$PlayPipelineFactory$$anonfun$sslContext$2.apply(NettyServer.scala:94) …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用Typesafe Activator 1.2.3 的离线安装Play Framework 2.3.2 .每一篇文档都告诉我,它正在使用sbt来构建和运行项目.
这个sbt位于/安装在哪里?它是否在包含Activator安装的解压缩文件夹中的某个位置?
如何从命令行启动sbt?它不是在PATH运行中locate sbt找不到任何东西.
我想使用Eclipse作为使用Play Framework的Scala Web应用程序的IDE .我下载了Eclipse 3.6.2.然后我为Eclipse安装了Scala IDE 2.0(beta).我下载了Play Framework 1.2.2RC1并安装了Scala模块play install scala-0.9.1并使用生成了一个新站点play new mysite.然后我用它做了一遍,play eclipsify mysite并在Eclipse中导入了项目.
但是现在我在Eclipse中遇到了很多错误.这是我可以解决的任何问题,还是不同的项目不兼容?
这是生成的代码,其中包含Eclipse中的错误(但它在我运行应用程序时有效).
package controllers
import play._
import play.mvc._
object Application extends Controller {
import views.Application._
def index = {
html.index("Your Scala application is ready to go home!")
}
}
Run Code Online (Sandbox Code Playgroud)
这就是它在Eclipse中的样子:
我发现自己有点难题.我正在构建一个新的,现代的,基于Web的应用程序,我不仅需要选择一种技术,我必须选择一种架构.我认为现在可以说这是一个艰难的选择,因为我们有比5年前更多的选择.
首先,我已经决定Scala将成为服务器端语言.我有我的理由,这不是Scala与XYZ的帖子 - 已经做出了选择.我也已经完成了这样一个事实,即我们在网络上,在云端,所以我甚至都不会试图摆脱Javascript.也许我会使用CoffeeScript,但我将编写浏览器托管的代码.
现在,假设Scala,大多数人可能会跳到Play!或提升.可能会玩!鉴于它得到了Typesafe的支持,但我认为我还有另一个需要首先回答的更重要的问题.什么是建筑?如果我想要一个非常富有的客户端,我真的需要的不仅仅是一个简单的无状态服务层,因为我们还有大量的Javascript吗?我不确定它会是一个单页的webapp,但像BlueEyes这样的东西可能是正确的选择吗?举起并玩!更重要的是他们承担更多的责任.他们生成HTML,对于这些框架,浏览器非常愚蠢.路由,验证,Ajax和Comet支持等都是服务器端的问题.由于浏览器今天功能更强大,因此通常通过从服务器生成和注入Javascript来实现丰富的交互式功能.
我的问题归结为这个.我是否选择传统的电梯/游戏!服务器承担客户端和服务器责任的框架,还是使用富客户端+ REST风格的服务层,客户端在应用程序中扮演更重要的角色?客户端处理路由,验证,绑定等的架构.我看到像KnockOut.js,Sammy.js,Sproutcore,Backbone.js这样的框架......我不打算将它们全部列出但只需要从客户端的角度来看,他们都采用了一些这些框架功能.
如果我选择Play!,我会放弃一些丰富的UI吗?那些我想为集成/混搭/移动目的提供服务API的情况呢?玩怎么玩!在这帮我?显然BlueEyes在这里发挥得很好.我想我无论如何都需要一个服务层.
如果我选择BlueEyes,我的客户端代码是什么样的?我需要有多少基于Javascript的框架才能满足我的需求?我仍然希望在我的服务层中使用大部分业务逻辑,但路由,绑定......所有UI内容都是客户关注的问题.
我不确定答案是对还是错,但我认为这个社区可能会指出我正确的方向.
我也把它发布到我的博客http://www.andyczerwonka.com/picking-a-web-technology-isnt-as-easy-as-it-u-45228
我正在将项目从Play 2.2升级到2.3.0.
以下routesImport一行build.sbt停止解析和Play说val not found error:
lazy val root = (project in file(".")).enablePlugins(PlayScala)
routesImport += "binders._"
Run Code Online (Sandbox Code Playgroud)
我找不到2.3.x的任何文档来解释如何迁移它.请指教.
playframework ×10
scala ×5
java ×3
sbt ×2
architecture ×1
casting ×1
classloader ×1
database ×1
eclipse ×1
https ×1
javascript ×1
javassist ×1
lift ×1
options ×1
runtime ×1
scala-ide ×1