Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
运行ruby脚本并分配给变量Groovy/Jenkins_Ruby_Jenkins_Groovy - Fatal编程技术网

运行ruby脚本并分配给变量Groovy/Jenkins

运行ruby脚本并分配给变量Groovy/Jenkins,ruby,jenkins,groovy,Ruby,Jenkins,Groovy,可能是一些简单的东西,但似乎没有得到我想要的输出,但是假设我有一个ruby脚本 class SlackNames def developers { "Richard Lewis" => "/@richlewis", "Name 2" => "/@name2", "Name 3" => "/@name3" } end def slack_handle puts developers["#{ARGV[0]}"] if developers.key?("

可能是一些简单的东西,但似乎没有得到我想要的输出,但是假设我有一个ruby脚本

class SlackNames

def developers
  { "Richard Lewis" => "/@richlewis",
    "Name 2" => "/@name2",
    "Name 3" => "/@name3"
  }
end

def slack_handle
 puts developers["#{ARGV[0]}"] if developers.key?("#{ARGV[0]}")
end

end

SlackNames.new.slack_handle
我会在命令行上运行它

ruby slack_names.rb "Richard Lewis"
正如您所看到的,当我在Groovy脚本中运行它时,它将只返回一个给定值,如何将该值保存到变量

-- Groovy
-- DEV_NAME here equals "Richard Lewis"

SLACK_NAME = sh """#!/bin/bash -l
                   ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
                """
echo "${SLACK_NAME}"
当我回显
SLACK\u NAME
时,它返回为空白

我做错了什么


谢谢

首先,您是从类内部调用该方法的。(可能只是文章中的一个输入错误)

第二,为什么是“.key”(“{ARGV[0]}”)”之类的东西?在ruby中,如果哈希没有给定键的值,它将只返回nil,而nil的布尔值为false

class SlackNames

    def developers
      { "Richard Lewis" => "/@richlewis",
        "Name 2" => "/@name2",
        "Name 3" => "/@name3"
      }
    end

    def slack_handle
     developers["#{ARGV[0]}"] if developers["#{ARGV[0]}"]
    end

end

puts SlackNames.new.slack_handle
至少对我来说这是正确的

ruby slack_names.rb "Richard Lewis"
=> /@richlewis

我希望这会有所帮助,并且我正确地理解了您的问题。

首先,您仍然在类中调用该方法。(可能只是文章中的一个输入错误)

第二,为什么是“.key”(“{ARGV[0]}”)”之类的东西?在ruby中,如果哈希没有给定键的值,它将只返回nil,而nil的布尔值为false

class SlackNames

    def developers
      { "Richard Lewis" => "/@richlewis",
        "Name 2" => "/@name2",
        "Name 3" => "/@name3"
      }
    end

    def slack_handle
     developers["#{ARGV[0]}"] if developers["#{ARGV[0]}"]
    end

end

puts SlackNames.new.slack_handle
至少对我来说这是正确的

ruby slack_names.rb "Richard Lewis"
=> /@richlewis

我希望这会有所帮助,并且我正确地理解了您的问题。

只要添加到CookieNinjas答案中,一旦我在groovy中添加了这个,一切都会正常工作

SLACK_NAME = sh (
             script: """#!/bin/bash -l
                        ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
                     """,
             returnStdout: true
)

为了补充CookieNinjas的答案,我在groovy中添加了这个选项后,一切都按预期工作

SLACK_NAME = sh (
             script: """#!/bin/bash -l
                        ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
                     """,
             returnStdout: true
)

我认为这与Ruby没有任何关系。它是关于如何将一个值从shell脚本中获取到groovy中。您的Ruby代码中也有一个错误。谢谢。。。您想详细说明一下吗?错误在于您在结束类的声明之前实例化了该类。实际问题是什么?对不起,我对Groovy一无所知。我建议你修改一下你的问题,把它减少到最基本的部分。也就是说,删除ruby部分,然后简单地询问人们如何在Groovy中存储shell脚本的返回值。shell脚本可以是
echo“foo”
?啊,是的,我明白了。。谢谢你指出这一点out@Richlewis您是否设法找到了如何将值从Ruby脚本返回Groovy脚本的方法?我需要完全相同的东西?我想这和Ruby一点关系都没有。它是关于如何将一个值从shell脚本中获取到groovy中。您的Ruby代码中也有一个错误。谢谢。。。您想详细说明一下吗?错误在于您在结束类的声明之前实例化了该类。实际问题是什么?对不起,我对Groovy一无所知。我建议你修改一下你的问题,把它减少到最基本的部分。也就是说,删除ruby部分,然后简单地询问人们如何在Groovy中存储shell脚本的返回值。shell脚本可以是
echo“foo”
?啊,是的,我明白了。。谢谢你指出这一点out@Richlewis您是否设法找到了如何将值从Ruby脚本返回Groovy脚本的方法?我需要完全相同的东西?谢谢,有助于唤起我对一些事情的记忆…-)这不是理查德·刘易斯(richard lewis),我在想你,在一些事情上帮我唤起了记忆…-)这不是我想到的理查德·刘易斯