【发布时间】:2021-11-18 16:23:25
【问题描述】:
在我的 Rails 6 应用程序中,我试图实现负责从不同的 Github 存储库获取文件的功能。代码应尝试从 GitHub 获取文件 name.json 或 name.master.json(因为文件可能是主 json 或标准 json)。
代码如下:
#lib/github_client.rb
module GithubClient
extend self
def fetch_file(file_name)
if (response = translate(file_name)).success?
response
else
translate(file_name, master: true)
end
end
private
def client
@client ||= Octokit::Client.new(access_token: Rails.application.credentials.github[:access_token])
end
def translate(file_name, master: false)
return client.contents('user/my-repo-name', path: "#{file_name}.master.json") if master == 'true'
client.contents('user/my-repo-name', path: "#{file_name}.json")
end
end
行if (response = translate(file_name)).success?不起作用,因为如果没有文件,例如book.master.json 会返回:
Octokit::NotFound (GET https://api.github.com/repos/user/my-repo-name/book.json: 404 - 未找到 // 请参阅:https://docs.github.com/rest/reference/repos#get-repository-content)
如何检查此响应的状态,以便在必要时搜索另一个文件?
【问题讨论】:
标签: ruby-on-rails ruby octokit