我正在铁轨上学习红宝石。我正在开发rails 5应用程序。 我不想使用amazon s3服务来包含我的资产文件。 我想使用github来提供我的资产文件,就像CDN一样。
但是我遇到了问题,我有动态文件和图片上传系统。
因此,当我上传文件和图像时,所有文件和图像都将上传到github存储库中(假设我有一个名为busket
的git repo;因此,所有图像和文件都将上传到{{ 1}}来自我的服务器的repo,将从rails应用程序提供所有资产。)
那么,我如何使github像CDN一样?请帮我解决这个问题。
答案 0 :(得分:2)
我觉得将图像和一般类型的内容文件上传到GitHub进行长期存储通常是个坏主意。 GitHub被设计成Git的存储库提供者,而不是NoSQL或其他类型的数据存储。在GitHub中更新文件需要对特定分支进行提交。因此,每次更改图像文件时,都需要新的提交。这不会扩展,因为Git不能很好地处理二进制文件。
因此,如果您需要为图像和内容文件建立长期数据存储,我建议您查看专为此设计的工具,例如亚马逊的S3,Google云存储以及类似的内容。
答案 1 :(得分:0)
1。)将图像编码到基础64 参考:http://ruby-doc.org/stdlib-2.2.0/libdoc/base64/rdoc/Base64.html
2。)对github进行API调用
参考:https://developer.github.com/v3/repos/contents/#create-a-file
这将在github中上传并返回您存储的图像的URL,并将其存储在您的数据库中。
虽然您声明自己并不想使用S3,但回形针宝石却非常精简。
答案 2 :(得分:0)
如@Tim所述,通常这是一个坏主意。 但是,如果您仍然想将Git用作文件服务器,请附加
URI末尾的?raw = true
。 例如
https://github.com/git/git/blob/master/ewah/bitmap.c?raw=true
将为您提供文件的内容。
答案 3 :(得分:0)
https://cdn.jsdelivr.net/gh/username/repository/file
username = github用户的名称
仓库= github repo的名称
文件=文件的实际名称