Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.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 Heroku Repo大小和段塞大小随着每次部署而增加。为什么?_Ruby On Rails_Ruby_Git_Ruby On Rails 4_Heroku - Fatal编程技术网

Ruby on rails Heroku Repo大小和段塞大小随着每次部署而增加。为什么?

Ruby on rails Heroku Repo大小和段塞大小随着每次部署而增加。为什么?,ruby-on-rails,ruby,git,ruby-on-rails-4,heroku,Ruby On Rails,Ruby,Git,Ruby On Rails 4,Heroku,我在应用程序中更改了一些文本,并使用 git推送heroku主机 但每次我推,它都会增加很多。我在这里写下每次部署后的增量 168.2 KB 37.9 MB 178.6 KB 38.7 MB 187 KB 39.4 MB 194 KB 40.2 MB 205.3 KB 40.9 MB 232.8 KB 41.8 MB 277.9 KB 42.4 MB 286.5 KB 43 MB 如果我在我的应用程序项目中选择所有我用Sluge ignore忽略的文件夹(包括public/、tm

我在应用程序中更改了一些文本,并使用

git推送heroku主机

但每次我推,它都会增加很多。我在这里写下每次部署后的增量

168.2 KB
37.9 MB

178.6 KB
38.7 MB

187 KB
39.4 MB

194 KB
40.2 MB

205.3 KB
40.9 MB

232.8 KB
41.8 MB

277.9 KB
42.4 MB

286.5 KB
43 MB
如果我在我的应用程序项目中选择所有我用Sluge ignore忽略的文件夹(包括public/、tmp/和log/),总大小只有198 KB


为什么会这样?

很可能是由于生成缓存。为了加快构建过程,Heroku下载依赖项,随着时间的推移,它会被构建起来

使用他们的repo插件清除构建缓存并重新部署。您将看到段塞大小降低


以下是关于他们的构建缓存的更多信息:

可以遵循以下几个步骤来减少段塞大小

清除生成缓存

BuildPack缓存一些内容以加快将来的构建。但有时,当依赖项发生更改时(特别是删除依赖项时),可能无法从缓存中删除依赖项。因此,如果您面临意外的高段塞大小,并且您已经从项目中删除了一些依赖项,请首先尝试此方法(如果您可以在下一次部署中忍受缓慢的构建)

忽略带有.slugignore的文件

你的.sliggnore应该列出repo中的目录和文件(不被.gitignore忽略),但应用程序在prod上运行不需要这些目录和文件。类似的一些文件示例包括测试、文档和设计文件。要从slug中删除这些,请在项目的根目录下创建.slugignore

*.psd
/doc
/test
要查看slug中放入了哪些文件,还可以输入heroku bash并检查文件系统

heroku run bash -a appname  
du -sh .[^.]* * | sort -hr 
节点模块

此部分特定于包含将所有JavaScript代码捆绑到单个脚本的资产管道的应用程序。如果您使用的是节点服务器,这可能不适用于您

如果您将Rails与webpacker一起使用,那么在node_模块中可能有很多依赖项。但是在资产管道编译资源之后,您可能不需要node_modules目录(除非您在运行时运行使用这些模块的自定义节点脚本)。在这种情况下,要删除node_modules目录,我们可以使用heroku buildpack post build clean buildpack和.slug post clean文件。此文件的格式与.gitignore或.sliggnore相同,因此只需从最后一个slug中列出要忽略的目录,它们就会被删除。要确保buildpack的一点是,这应该是顺序中的最后一个,否则它将在实际的buildpack运行之前删除文件

但是,如果您正在使用在运行时访问node_模块的自定义节点脚本,该怎么办?在这种情况下,我们要做的是将这些脚本移动到一个单独的目录中,其中包含自己的package.json文件。要在安装root package.json的同时将依赖项安装到该目录中,请向root package.json添加一个安装后脚本。这将指示Thread将目录更改为自定义脚本,并在安装根项目的依赖项后在其中安装依赖项

"scripts": {
  "postinstall": "yarn --cwd lib/custom-node-script"
}
这样,即使在生产Rails应用程序中使用自定义节点脚本,也可以安全地删除根节点\u modules目录


解决同样的问题。

If可能有助于向Heroku显示您的
git push的输出。您的具体意思是什么?Heroku上的大小包括您的应用程序及其所有依赖项(ruby、rails、所有gems等)。在您的开发计算机上,依赖项不存储在应用程序目录中。是的,我知道。但是为什么当我只在某个地方更改文本时它会增加???一些新的东西?有什么消息吗?我在释放之前尝试了清除缓存命令,是的,它确实将大小减小到了正常值。但我想问的是,在部署到heroku之前,我们是否必须一次又一次地运行这两个命令?不,我注意到只有在删除某些依赖项时才需要清除缓存。这是因为heroku可能会继续将这些依赖项保留在缓存中,即使它们不再是必需的。这使用了一个buildpack,每当我将代码推送到heroku时,它都会缓存node_模块,因此slug大小会增加。要使应用程序恢复到原来的大小,我必须运行purge命令。如果你试着用这个将react应用程序开发到heroku上,你能告诉我是否有一个解决方案来确保每次我推的时候slig大小都保持不变吗?我没有试过这个,但我不明白为什么slug大小会不断增加。即使它正在缓存节点模块,除非您继续添加/升级依赖项,否则它应该保持不变。您的构建脚本是否每次都生成具有不同名称的文件?如果是,您可以尝试
slagingore
文件模式,看看这是否有帮助。我如何知道它是否每次都生成不同名称的文件?
"scripts": {
  "postinstall": "yarn --cwd lib/custom-node-script"
}