使用Ruby验证Jenkins插件表单

我正在使用 Ruby开发一个Jenkins插件.您应该能够配置连接到服务器的每个节点,以便在节点失去与主服务器的连接时将电子邮件发送到指定的地址. EmailNodeProperty添加一个字段以输入电子邮件地址:
# 
# Save an email property for every node
#
class EmailNodeProperty < Jenkins::Slaves::NodeProperty
    require 'java'
    import 'hudson.util.FormValidation'  

    display_name "Email notification"

    attr_accessor :email

    def initialize(attrs = {})
        @email = attrs['email']
    end

    def doCheckEmail value
        puts "  ENP.doCheckEmail:#{value}"
    end
end

配置节点时,会有一个名为email的字段,您可以在其中输入电子邮件地址.我希望在您输入地址时验证此字段.

保存配置时,会创建一个EmailNodeProperty,从而可以访问该电子邮件地址.

当节点失去连接时,将调用MyComputerListener的离线:

class MyComputerListener
    include Jenkins::Slaves::ComputerListener
    include Jenkins::Plugin::Proxy

    def online(computer,listener)
    end

    def offline(computer)
        #Do nothing when the Master shuts down
        if computer.to_s.match('Master') == nil
            list = computer.native.getNode().getNodeProperties()
            proxy = list.find {"EmailNodeProperty"}
            if proxy.is_a?(Jenkins::Plugin::Proxy)
                rubyObject = proxy.getTarget()
                email = rubyObject.email #<= Accesses the email from EmailNodeProperty
                [...]
            end
        end
    end
end

MyComputerListener找到电子邮件地址并发送电子邮件.

有人知道是否有可能在Ruby中验证表单?根据Jenkins wiki,这是应该实现的(FIELD应该被交换为字段名称,所以我想它应该是doCheckEmail):

public FormValidation doCheckFIELD(@QueryParameter String value) {
    if(looksOk(value))
        return FormValidation.ok();
    else
        return FormValidation.error("There's a problem here");
}

你会如何在Ruby中做到这一点?该方法应该在哪里实施?在EmailNodeProperty或MyComputerListener中?你如何处理QueryParameter? @会使它成为Ruby中的一个intstance变量. (什么是Queryparameter?)

任何帮助将非常感激!

/了Jonatan

解决方法

这在今天根本不存在,我们非常需要添加它.这已经在 Thursday morning’s hack session中已经提出了几次,所以它在Todo列表中很高.但截至 ruby-runtime plugin 0.10年,这是不可能的.抱歉让你失望.

相关文章

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