Ruby: void value expression while using if else with break
Ruby: void value expression while using if else with break
我是 Ruby 语言的新手。我正在努力整合 Danger 以添加对 GitHub PR 的检查。用例之一是检查我的 PR 中修改后的文件是否包含特定更改。我在 DangerFile
中添加了以下代码
filesArray = ["Resources/Config.plist", "Resources/Deployment.plist"]
def modified_files_contains_change(files, change)
does_contain_required_changes = false
for file in files do
message "diff in #{file}"
diff = git.diff_for_file(file)
patch_contains_change = diff.patch =~ #{change}
if diff && patch_contains_change
does_contain_required_changes = true
else
does_contain_required_changes = false
break
end
end
message "Does contain changes in all files => #{does_contain_required_changes}"
does_contain_required_changes
end
if modified_files_contains_change(files, change)
warn "Some useful warning message goes here"
end
虽然 运行 这在我的 CI 上,但我遇到了错误
[!] Invalid `Dangerfile` file: void value expression.
# from Dangerfile:33
# -------------------------------------------
# does_contain_required_changes = false
> break
# end
# end
# -------------------------------------------
我尝试搜索但不明白出了什么问题。有人可以帮我了解确切的问题是什么吗?提前致谢。
=~ #{change}
被读作 =~
因为 #
开始内联注释。 =~
需要在其中一侧使用正则表达式。要解决此问题,请更改以下行:
patch_contains_change = diff.patch =~ #{change}
至:
patch_contains_change = diff.patch =~ Regexp.new(change)
这假设您传递的字符串为 change
。
此外,这将是或多或少 rubyish 方式来完成任务:
def modified_files_contains_change(files, change)
does_contain_required_changes =
files.all? do |file|
message "diff in #{file}"
# break will immediately exit the `all?` unless diff is present
break false unless diff = git.diff_for_file(file)
diff.patch =~ Regexp.new(change)
end
message "Does contain changes in all files => #{does_contain_required_changes}"
does_contain_required_changes
end
到 return 我们发现问题的文件:
def modified_files_contains_change(files, change)
problematic_file =
files.detect do |file|
message "diff in #{file}"
(diff = git.diff_for_file(file)).nil? || diff.patch !~ Regexp.new(change)
end
does_contain_required_changes = problematic_file.nil?
if does_contain_required_changes
message "All good!"
else
message "We have issues with file #{problematic_file}"
end
does_contain_required_changes
end
我是 Ruby 语言的新手。我正在努力整合 Danger 以添加对 GitHub PR 的检查。用例之一是检查我的 PR 中修改后的文件是否包含特定更改。我在 DangerFile
中添加了以下代码filesArray = ["Resources/Config.plist", "Resources/Deployment.plist"]
def modified_files_contains_change(files, change)
does_contain_required_changes = false
for file in files do
message "diff in #{file}"
diff = git.diff_for_file(file)
patch_contains_change = diff.patch =~ #{change}
if diff && patch_contains_change
does_contain_required_changes = true
else
does_contain_required_changes = false
break
end
end
message "Does contain changes in all files => #{does_contain_required_changes}"
does_contain_required_changes
end
if modified_files_contains_change(files, change)
warn "Some useful warning message goes here"
end
虽然 运行 这在我的 CI 上,但我遇到了错误
[!] Invalid `Dangerfile` file: void value expression.
# from Dangerfile:33
# -------------------------------------------
# does_contain_required_changes = false
> break
# end
# end
# -------------------------------------------
我尝试搜索但不明白出了什么问题。有人可以帮我了解确切的问题是什么吗?提前致谢。
=~ #{change}
被读作 =~
因为 #
开始内联注释。 =~
需要在其中一侧使用正则表达式。要解决此问题,请更改以下行:
patch_contains_change = diff.patch =~ #{change}
至:
patch_contains_change = diff.patch =~ Regexp.new(change)
这假设您传递的字符串为 change
。
此外,这将是或多或少 rubyish 方式来完成任务:
def modified_files_contains_change(files, change)
does_contain_required_changes =
files.all? do |file|
message "diff in #{file}"
# break will immediately exit the `all?` unless diff is present
break false unless diff = git.diff_for_file(file)
diff.patch =~ Regexp.new(change)
end
message "Does contain changes in all files => #{does_contain_required_changes}"
does_contain_required_changes
end
到 return 我们发现问题的文件:
def modified_files_contains_change(files, change)
problematic_file =
files.detect do |file|
message "diff in #{file}"
(diff = git.diff_for_file(file)).nil? || diff.patch !~ Regexp.new(change)
end
does_contain_required_changes = problematic_file.nil?
if does_contain_required_changes
message "All good!"
else
message "We have issues with file #{problematic_file}"
end
does_contain_required_changes
end