Rails动作缓存
动作缓存
有前置过滤器的动作不能使用页面缓存,例如需要验证身份的页面。此时,应该使用动作缓存。动作缓存的工作原理与页面缓存类似,不过入站请求会经过 Rails 栈处理,以便运行前置过滤器,然后再伺服缓存。这样,可以做身份验证和其他限制,同时还能从缓存的副本中伺服结果。
动作缓存已从Rails 4中删除
动作缓存actionpack-action_caching的地址
安装
在Rails项目中的Gemfile文件中添加
gem 'actionpack-action_caching'
然后执行bundle install命令安装
使用
详细介绍查看动作缓存actionpack-action_caching
class ListsController <...
Rails页面缓存
页面缓存
页面缓存是 Rails 提供的一种缓存机制,让 Web 服务器(如 Apache 和 NGINX)直接访问静态页面,而不经由 Rails 动态生成。虽然这种缓存的速度超快,但是不适用于所有情况(例如需要验证身份的页面)。此外,因为 Web 服务器直接从文件系统中访问文件,所以要自行实现缓存失效机制
页面缓存已从Rails 4中删除
页面缓存actionpack-page_caching的地址
安装
在Rails项目中的Gemfile文件中添加
gem 'actionpack-page_caching'
然后执行bundle install命令安装
设置
设置缓存文件存放位置page_cache_directory
config.action_c...
在Ubuntu上部署Gogs
Gogs 是一款极易搭建的自助 Git 服务。
为什么选择Gogs
我之前也部署过Gitlab,但是太吃资源了,Gogs相比就很轻量,正好合适搭建私人Git服务器。
安装Nginx和数据库
要部署Gogs,需要安装Nginx和数据库
安装Nginx
sudo apt-get update
sudo apt-get install nginx
安装和初始化数据库
Gogs支持MySQL,PostgreSQL,SQLite3,MSSQL和TiDB,这里我选择PostgreSQL
sudo apt-get update
sudo apt-get install postgresql
命令执行完毕后,配置数据库
设置密码
安装完毕后需要更改postgres用户的密码...
Gogs无法读取远程仓库(fatal: XX/XX.git does not appear to be a git repository)
错误描述:fatal: 'XX/XX.git' does not appear to be a git repository
问题
部署完Gogs后,在Web页面创建好仓库后,本地向远程推送出现无法读取远程仓库的问题,可能原因:~/.ssh/authorized_keys 文件中存在重复的 SSH 密钥,所以公钥使用冲突了
解决方案
删除~/.ssh/authorized_keys文件里除了属于 Gogs 自动添加以外的重复密钥,这样就可以正常了
新的问题
但是这样又出现了个新的问题,就是我用ssh登不上我的远程服务器了,原来刚刚删除的那个秘钥是ssh远程登录密钥,这样可不行的呀
新的方案
额外再生成一个新的密钥id_rsa_gogs
ssh-keygen -t rs...
Git钩子
原地址在这里:自定义-Git-Git-钩子
Git钩子
Git 能在特定的重要动作发生时触发自定义脚本。 有两组这样的钩子:客户端的和服务器端的。 客户端钩子由诸如提交和合并这样的操作所调用,而服务器端钩子作用于诸如接收被推送的提交这样的联网操作
Git钩子在哪?
钩子都被存储在 Git 目录下的 hooks 子目录中。 也即绝大部分项目中的 .git/hooks 。 当你用 git init 初始化一个新版本库时,Git 默认会在这个目录中放置一些示例脚本。这些脚本除了本身可以被调用外,它们还透露了被触发时所传入的参数。 所有的示例都是 shell 脚本,其中一些还混杂了 Perl 代码,不过,任何正确命名的可执行脚本都可以正常使用 —— 你可以用 Rub...
向Gogs仓库推送代码后,自动更新远程仓库的代码
Gogs服务同博客静态服务在同一服务器,我想每次push后,Gogs接受成功后会自动更新远程服务器的资源
用Hexo框架写完博客后,使用hexo d -g会将生成好的静态资源推送到自己的远程仓库,远程服务器每次都要登上去手动git pull,而写个crontab有又觉得不怎么好,然后就找到了Git 服务端钩子post-receive此挂钩在整个过程完结以后运行,可以用来更新其他系统服务或者通知用户
这个钩子在Gogs的gogs-repositories目录下,每一个仓库目录下都有hooks/post-receive这个钩子,将以下改好后添加到文件内即可
unset GIT_DIR
NowPath=`pwd`
DeployPath="/var/www/blog" # 要将这里...
共计 22 篇文章,4 页。