我正在混合构建环境中设置我的第一个播放应用程序.我的公司使用maven来处理所有事情(到目前为止),并且我正在尝试让我的播放应用程序与其余的工件进行良好的交互.
有没有办法让ivy/sbt/play以类似于maven的方式处理SNAPSHOTs - 即,始终从远程存储库更新它们(例如,在构建工作者上)或使用本地.m2存储库直到依赖'过期'然后从服务器刷新它.
我在Build.scala中为一个工件声明了一个SNAPSHOT依赖项,我希望这个依赖项的本地更新对我的play项目可见.在maven方面,我做了以下几点
mvn clean install
Run Code Online (Sandbox Code Playgroud)
其中(当然)构建并将我的外部工件安装到我的本地maven存储库(在〜/ .m2/repository).我希望我的播放项目能立即看到这些更改,但我无法弄清楚如何告诉sbt/play不缓存SNAPSHOT.无论我做什么,这种依赖关系永远不会在游戏中刷新 - 我必须进入实际的游戏常春藤缓存并手动删除依赖关系以获取任何更改.理想情况下,我希望sbt/ivy只是解析我本地maven仓库的路径,而不是在内部缓存它.我的Build.scala中有以下内容
val main = PlayProject(appName, appVersion, appDependencies, mainLang = SCALA).settings(
resolvers += "Local Maven Repository" at "file://" + Path.userHome.absolutePath + "/.m2/repository",
testOptions in Test := Nil
)
Run Code Online (Sandbox Code Playgroud)
当我在游戏中运行构建时,它正确使用此repo,但随后将结果缓存在常春藤缓存中.有没有咒语我可以告诉Ivy/sbt不这样做?也许在ivysettings.xml中有什么东西?
如何使用Play 2在模板中编码URL?
我搜索一个这样的帮手:
<a href="@urlEncode(name)">urlEncode doesn't work now</a>
Run Code Online (Sandbox Code Playgroud)
我找到了一个pull请求,但这似乎不适用于实际的play 2.0.3版本.
Java Todo List教程中使用的H2数据库如下:
db.default.driver=org.h2.Driver
db.default.url="jdbc:h2:mem:play"
Run Code Online (Sandbox Code Playgroud)
如何修改配置文件以使用持久数据库而不是内存中版本.我是否需要设置完全独立的数据库,还是可以修改db.default.url属性?
我正在玩Play!2.0.3.
是否有使用Play Framework 2.3和Google App Engine的示例应用程序?
如何使用Scala在Play Framework 2.0中创建全局对象/变量?
我想创建一个曾经实例化的对象,可以在多个控制器动作之间保持不变,这样不同的动作仍然可以调用同一个对象(因为初始化对象非常昂贵).
这可能不存储到数据库中吗?我尝试将对象粘贴到onStart方法的Global对象中,如下所示:
http://www.playframework.org/documentation/2.0/ScalaGlobal
这是我的代码:
(在根应用程序文件夹中)
object Global extends GlobalSettings {
override def onStart(app:Application) {
var foo = new Foo
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的控制器操作中,我尝试按名称调用变量,但它不起作用.
我完成了todolist教程并试图通过在app/assets/stylesheets中添加一个main.less样式表来扩展它.但是,当我尝试使用main.less中的任何规则或没有规则在浏览器中查看项目时,我得到此错误,浏览器很好地显示:
意外的异常
RuntimeException:重复映射:/Users/franklinpearsall/Documents/Programming/play-2.0.4/todolist/target/scala-2.9.1/classes/public/stylesheets/main.css
从
/Users/franklinpearsall/Documents/Programming/play-2.0.4/todolist/public/stylesheets/main.css
/Users/franklinpearsall/Documents/Programming/play-2.0.4/todolist/target/scala-2.9.1/resource_managed/main/public/stylesheets/main.css
首先,在target/scala-2.9.1/classes中的css文件似乎很奇怪.为什么会这样?我用Google搜索,找不到任何相关内容.任何帮助深表感谢!
我想根据运行的环境将我的播放应用程序指向特定的应用程序配置文件.有三个,它们对应于标准播放状态:
一个同事共享了一个执行此操作的方法,该方法需要设置OS环境变量.
我想消除设置OS变量的需要.我的偏好是使用Play在启动时使用的任何内容来了解它所处的模式.
例如,如果play run从命令行执行,则输出的一部分是"[info] play - Application started (Dev)"
我想在我的Global.java中使用这些信息,我在其中覆盖onLoadConfig,如下所示:
public Configuration onLoadConfig(Configuration baseConfiguration, File f, ClassLoader loader) {
String playEnv=<some static method to get mode>;
Config additionalConfig = ConfigFactory.parseFile(new File(f,"conf/application."+playEnv+".conf"));
Config baseConfig = baseConfiguration.getWrappedConfiguration().underlying();
return new Configuration(baseConfig.withFallback(additionalConfig));
}
Run Code Online (Sandbox Code Playgroud)
我发现的一切都是在应用程序启动后如何使用isDev(),isTest(),isProd().
当我覆盖Global.java中的onLoadConfig时,是否存在提供模式的静态方法?
我有一个Play 2.1.x应用程序,它使用JKS签名.这取决于,运行和可用的domain.com:9443,我要代理其与nginx的,因为会出现在同一台机器上更多的应用程序,(因此不能只是口运行443),我增加了nginx的配置中,希望proxy_pass有https让我只是代理它到客户端
upstream backend-secure {
server 0.0.0.0:9443;
}
server {
listen 443 ssl;
server_name domain.com;
proxy_redirect off;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
location / {
proxy_pass https://backend-secure;
}
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,当https://domain.com我尝试在浏览器中打开时,我只能登录nginx/error.log:
服务器在SSL端口握手时定义没有"ssl_certificate",客户端:123.123.123.123,服务器:0.0.0.0:443
有没有办法让它工作或只有选项是使用nginx SSL +使用http后端的常用方法?
编辑:如果重要的话,这是EV,多域证书.
背景:我使用Play 2.4(Java)和InjectedRoutesGenerator以及Guice模块来配置各种依赖项.但在单元测试期间,FakeApplication正试图通过注入器从路径文件加载所有控制器,并且由于单元测试环境中不可用的外部依赖性,其中一些控制器失败.
如何在从play.test.WithApplication扩展的单元测试期间禁用默认路由文件处理?或者如何用自定义路由文件替换默认路由?
我试着使用这里引用的play.http.router配置选项覆盖,但是Router not found我尝试的任何内容都会出错.显然我犯了一些错误,我不知道在哪里.
我不太了解配置参考中引用的my.application.Router和conf/my.application.routes之间的链接.除了routes不编译之外的路由文件.
我是使用Play Framework 2.0的新手(我正在使用Scala)并对会话有疑问.
我来自Ruby on Rails背景,因此我倾向于考虑我在Play Framework中学习的关于Ruby on Rails的所有内容.
考虑到这一点,当我在视图中时,有没有办法让我调用存储在Session中的东西?
如果我在会话中存储了"hello" - >"world",我希望能够执行类似@ session.get("hello")的操作,并且能够在视图中使用"world".这可能吗?
我看到的另一个选项是将值存储在控制器中的变量中,并通过执行类似OK(var)的操作将其传递给视图,但这种方式似乎有点笨重,特别是如果我开始使用更多变量.
谢谢!