Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何像CDN服务器一样使用github repo上传资产文件?_Ruby On Rails_Ruby_Git_Github_Cdn - Fatal编程技术网

Ruby on rails 如何像CDN服务器一样使用github repo上传资产文件?

Ruby on rails 如何像CDN服务器一样使用github repo上传资产文件?,ruby-on-rails,ruby,git,github,cdn,Ruby On Rails,Ruby,Git,Github,Cdn,我正在学习RubyonRails。我正在开发一个rails 5应用程序。 我不想使用AmazonS3服务来包含我的资产文件。 我想使用github像CDN一样为我的资产文件提供服务 但我面临一个问题,我有动态文件和图像上传系统。 因此,当我上传我的文件和图像时,所有的文件和图像都会上传到github存储库中(假设我有一个名为busket;所以,所有的图像和文件都会从我的服务器上传到busketrepo中,并为rails应用程序的所有资产提供服务) 那么,如何使github与CDN一样?请帮我解决

我正在学习RubyonRails。我正在开发一个rails 5应用程序。 我不想使用AmazonS3服务来包含我的资产文件。 我想使用github像CDN一样为我的资产文件提供服务

但我面临一个问题,我有动态文件和图像上传系统。 因此,当我上传我的文件和图像时,所有的文件和图像都会上传到github存储库中(假设我有一个名为
busket
;所以,所有的图像和文件都会从我的服务器上传到
busket
repo中,并为rails应用程序的所有资产提供服务)


那么,如何使github与CDN一样?请帮我解决这个问题。

我觉得将图像和一般类型的内容文件上载到GitHub进行长期存储通常是个坏主意。GitHub被设计成Git的存储库提供者,而不是NoSQL或其他类型的数据存储。在GitHub中更新文件需要对特定分支进行提交。因此,每次更改图像文件时,都需要新的提交。这不会扩展,因为Git不能很好地处理二进制文件

所以,如果你需要为你的图像和内容文件建立一个长期的数据存储,我建议你研究一下专门为此设计的工具,比如亚马逊的S3,谷歌云存储,以及类似的东西。

1。)将图像编码到base 64 参考:

2.)对github进行API调用

参考:

这将上载并返回github中存储的图像的url,并将其存储在数据库中


尽管您表示不想使用S3,但回形针gem使其非常精简。

正如@Tim所述,这通常是个坏主意。 但是,如果您仍然希望将Git用作文件服务器,请执行以下操作:

?原始=真实

在URI的末尾。 比如说

会给你文件的内容

https://cdn.jsdelivr.net/gh/username/repository/file
用户名=github用户的名称
repository=github repo的名称

file=文件的实际名称

为什么不使用S3?是不是太慢了(只是因为你提到你想像CDN一样提供文件而问)?由于GitHub甚至比S3慢,这可能是一个不好的选择。只需使用JSDeliveri echo Tim的顾虑,从适当的CDN或S3/GCS之类的对象存储中发送这样的文件肯定会更好。因此,可以更高效地存储大型二进制文件(如图像)——这不是最好的主意。