我正在构建一个Sinatra站点,在尝试了Shotgun之后,我正在使用Rerun在编辑文件之后重新加载我的Thin server。
然而,我发现开发/反馈循环非常耗时。例如,对CSS、JavaScript或Haml文件进行小的更改需要7-8秒等待服务器重新加载,然后我才能在浏览器中重新加载页面以查看更改。(我的应用程序正在使用Sprockets管理资产等。)
忽略这些重新加载是不太可能的,因为页面因此不会反映更改,并且会完全关闭反馈循环。
有没有办法简化这个过程,或者每个人在每次想要看到一个变化时都要经历这种等待?来自PHP/CSS/HTML背景,我发现使用Sinatra/HAML开发是相当痛苦的,并且我的印象是我不知何故错过了一个核心概念?
发布于 2014-06-17 23:14:15
首先,我不认为您必须重新加载服务器才能看到静态文件的更改。因此,只需保存更改并刷新页面即可。
现在,当你需要改变一些后端的东西时,我通常使用猎枪gem。假设你不是在Windows上,你可以运行gem install shotgun来安装它,然后运行shotgun config.ru来自动开始使用Rack。当您更改任何后端内容时,Shotgun将自动重新加载服务器,并且比手动执行此操作快得多。如果你愿意,你也可以用shotgun file.rb用一个直接的Ruby文件来运行它。
你可以在Shotgun repository上查看完整的猎枪文档和源代码。
发布于 2014-06-18 07:25:59
@Cereal -谢谢,但我在问题中提到我试过使用猎枪,但它的运行速度也很慢。
@the Tin Man -谢谢,很高兴知道对HAML的更改不需要重新加载。
我想在所有这些之后,一些研究将我带到了这篇文章,这篇文章对实现守卫/机架负载非常有用:Lightning-Fast Sass Reloading
经过这个过程后,一切都运行得很好,实时重新加载功能令人惊叹。由于本文是针对rails的,所以我不得不(而不是在config/environments/development.rb中)添加:
config.ru
require 'rack-livereload'
use Rack::LiveReload然而,最重要的是意识到sprockets确实提供了更改的.js, .css等,而不需要重新加载服务器,即使它是缩小/连接的。因此,可以通过强制重新运行忽略.haml, .scss, .css, .js来产生巨大的加速,这最终就像修复我的rerun命令来忽略这些文件一样简单:
rerun rackup config.ru -i '**/*.{haml,scss,css,js}'
不过,我还是很喜欢使用guard/livereload,而且最终,这个组合非常好:
最终解决方案(配置后)
使用更改后的rerun命令运行服务器(以便服务器在实际更改.rb文件时重新加载):
rerun rackup config.ru -i '**/*.{haml,scss,css,js}'
运行防护以监视资产更改/livereload:
bundle exec guard -P livereload
https://stackoverflow.com/questions/24266642
复制相似问题