从 Pow 切换到 Puma-Dev
本文的前提是你已经用了 pow,但是没有用 Powprox 或 Invoker 捣鼓过本地开发环境的 HTTPS。
起因
Pow 不支持 HTTPS,而这几乎是近年 Web 的标配之一了。我想在本地的开发环境也捣鼓捣鼓这玩意。
安装
- Uninstall Pow
    - 根据你安装 pow 方式的不同,使用 curl get.pow.cx/uninstall.sh | sh或者brew uninstall pow
 
- 根据你安装 pow 方式的不同,使用 
- Add Puma to your Rails app
    - Gemfile 中添加 gem 'puma'
- bundle install
 
- Gemfile 中添加 
- Install puma-dev
    - brew install puma/puma/puma-dev安装
- sudo puma-dev -setup自动配置 DNS 并生成开发使用的 CA 证书 4.
- puma-dev -install后台监听本地 80 和 443 端口以便处理- .dev域名的请求
 
使用
链接一个项目
cd ~/projects/my-project
puma-dev link
这样会将 my-project.dev 链接到 ~/projects/my-project
用别名链接一个项目
puma-dev link -n other-name ~/projects/my-project
域名
详细内容在 Chrome 63 forces .dev domains to HTTPS via preloaded HSTS 这里有介绍。
太长不想读,不想听原理,就说怎么办吧。
如果站点没用 HTTPS,那不用 site.dev 改用 site.localhost 就行,什么配置都不需要做。
环境变量
- 首先加载 source ~/.powconfig
- 然后利用 source命令加载项目目录下的.env, .powrc, .powenv
- 如果以前使用 pow 的话,注意 POW_*开头的变量都无效了
- puma-dev 提供 CONFIG, THREADS, WORKERS方便你控制 puma 的启动
Webpacker 配置
- bundle binstub bundler --force
- 参考 webpack-dev-server.md
    - config/webpacker.yml设置 https 参数为 true
- 按照文档解决 https://localhost:3035/sockjs-node/info?t=1503127986584 net::ERR_INSECURE_RESPONSE报错的问题
 
- 新开一个 terminal 窗口运行 ./bin/webpack-dev-server
最后
并没有简单多少,你需要开至少 4 个窗口。
- ./bin/webpack-dev-server加速你的前端编译
- tail -f log/development.log查看开发日志
- 随时 rails restart
- 要看一下 puma-dev 日志 tail -f ~/Library/Logs/puma-dev.log
其它
常用命令
- tail -f ~/Library/Logs/puma-dev.log查看日志
- puma-dev -stop关闭
- puma-dev -install启动
- curl -H "Host: puma-dev" localhost/status查看状态
SSL 证书无效
- 关闭 SIP,参考 Unix/Linux 系统中的 Operation Not Permitted 问题
- 将证书移动到 System 目录下,参考原文中关于 Invalid SSL certificate 的部分
DNS 未生效
- 重连 WiFi
- 重启浏览器

