我正在使用jira-ruby gem通过我的应用创建一次jira问题。应在一个或两个板上创建Jira板上的票证,具体取决于之前触发的操作。例如,当新成员添加到仓库中时,应在两个单独的面板(支持和安全)中创建两个票证。我必须两次使用client.Issue.build
(这是一个gem方法),因此我需要执行以下操作:
def call
if SUPPORTBOARD_WEBHOOKS_CLASSES.include?(webhook.action_type_class)
issue = client.Issue.build
issue.save({"fields"=>{"summary"=>"example.rb","project"=>{"id"=>"10001"},"issuetype"=>{"id"=>"3"}}})
end
if SECURIY_WEBHOOKS_CLASSES.include?(webhook.action_type_class)
issue = client.Issue.build
issue.save({"fields"=>{"summary"=>"example.rb","project"=>{"id"=>"10001"},"issuetype"=>{"id"=>"3"}}})
end
end
但是我收到来自rubocop的错误消息:use a guard clause
答案 0 :(得分:2)
尝试这种方式
def call
if SUPPORTBOARD_WEBHOOKS_CLASSES.include?(webhook.action_type_class)
issue = client.Issue.build
issue.save(issue.save({"fields"=>{"summary"=>"example.rb","project"=>{"id"=>"10001"},"issuetype"=>{"id"=>"3"}}}))
end
return unless SECURIY_WEBHOOKS_CLASSES.include?(webhook.action_type_class)
issue = client.Issue.build
issue.save({"fields"=>{"summary"=>"example.rb","project"=>{"id"=>"10001"},"issuetype"=>{"id"=>"3"}}})
end
答案 1 :(得分:1)
我认为 rubocop 规则试图阻止方法顶部的大型 if/else 逻辑。该规则有助于限制方法内部的缩进量。
在我看来,您的两个“if”块中的代码块是相同的。假设 SUPPORTBOARD_WEBHOOKS_CLASSES 和 SECURIY_WEBHOOKS_CLASSES 是数组,您可以这样做:
def call
if (SUPPORTBOARD_WEBHOOKS_CLASSES | SECURIY_WEBHOOKS_CLASSES).include?(webhook.action_type_class)
issue = client.Issue.build
issue.save({"fields"=>{"summary"=>"example.rb","project"=>{"id"=>"10001"},"issuetype"=>{"id"=>"3"}}})
end
end
或者如果你真的想使用保护条款规则:
def call
return unless (SUPPORTBOARD_WEBHOOKS_CLASSES | SECURIY_WEBHOOKS_CLASSES).include?(webhook.action_type_class)
issue = client.Issue.build
issue.save({"fields"=>{"summary"=>"example.rb","project"=>{"id"=>"10001"},"issuetype"=>{"id"=>"3"}}})
end