playframework – 如何在Play框架中定义任意任务? (像ruby耙子)

如何在Play框架中定义任意任务?

我的意思是从命令行运行任务,类似于ruby rake.

我知道蚂蚁工具,但寻找更好的选择.

解决方法

[编辑]这个答案适用于Play 1. *系列!

你应该编写一个自定义模块,然后你的命令进入commands.py文件,参考号:http://www.playframework.org/documentation/1.2.4/releasenotes-1.1#commands

您可以查看现有模块以获得灵感,例如:https://github.com/sim51/logisima-play-yml/blob/master/commands.py

基本上,您可以定义所需的命令并从“execute”方法启动它们,例如:

COMMANDS = ['namespace:command']

def execute(**kargs):
    command = kargs.get("command")
    app = kargs.get("app")
    args = kargs.get("args")
    env = kargs.get("env")

    if command == "namespace:command":
        do_something()

如果你想发布一些东西 – 经常是这样! – :

def do_something():
    java_cmd = app.java_cmd([],None,"play.modules.mymodule.MyClass",args)
        try:
            subprocess.call(java_cmd,env=os.environ)
        except OSError:
            print "Could not execute the java executable,please make sure the JAVA_HOME environment variable is set properly (the java executable should reside at JAVA_HOME/bin/java). "
            sys.exit(-1)
        print

PS.

创建自定义模块非常简单:

play new-module mymodule

这是一个初级读本:http://playframework.wordpress.com/2011/02/27/play-modules/,考虑到官方Play! module documentation在这方面非常有限

编辑

我以为我会添加一些信息:

在能够执行命令之前,您必须构建模块.它不像动态编译的其余部分那样运行.

play build-module mymodule

new-module / build-module期望模块位于项目文件夹的根目录下,但如果你有很多变得一团糟. build-module module-srcs / mymodule工作得很好.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...