可能是一些简单但似乎没有得到我想要的输出,但是说我有一个红宝石脚本
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_NAME
时,它会以空白
我在这里做错了什么?
由于
答案 0 :(得分:1)
首先,您正在从类中调用该方法。 (可能只是帖子中的拼写错误)
第二,为什么“.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
我希望它有所帮助,我理解你的问题。
答案 1 :(得分:0)
只需添加到CookieNinjas,一旦我在groovy中添加了这一切,一切都按预期工作
SLACK_NAME = sh (
script: """#!/bin/bash -l
ruby ruby_scripts/slack_names.rb \"${DEV_NAME}\"
""",
returnStdout: true
)