我正在构建Sinatra网站,在尝试Shotgun后,我正在使用Rerun在编辑文件后重新加载Thin server。
但是,我发现开发/反馈循环非常费时。例如,对CSS,JavaScript或Haml文件进行少量更改需要7-8秒等待服务器重新加载,然后才能在浏览器中重新加载页面以查看更改。 (我的应用正在使用Sprockets来管理资产等。)
忽略这些重新加载是不可能的,因为页面因此不能反映这些变化并完全关闭反馈循环。
有没有办法简化这个过程,或者每个人每次想要看到变化时都会经历这种等待?来自PHP / CSS / HTML背景,我发现使用Sinatra / HAML进行开发相当痛苦,而且我觉得我错过了一个核心概念?
答案 0 :(得分:0)
首先,我不认为您必须重新加载服务器以查看对静态文件的更改。因此,只需保存更改并刷新页面即可。
现在当你需要改变一些后端的东西时,我通常使用Shotgun宝石。假设您不在Windows上,可以运行gem install shotgun
进行安装,然后运行shotgun config.ru
以自动开始使用Rack。当您更改任何后端内容时,Shotgun会自动重新加载服务器,并且比手动执行此操作要快得多。如果需要,您也可以使用带有shotgun file.rb
的直接Ruby文件来运行它。
您可以在Shotgun repository找到完整的Shotgun文档和来源。
答案 1 :(得分:0)
@Cereal - 谢谢你,但是我在尝试使用Shotgun的问题中提到过,但它的运行速度也很慢。
@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
,最后,这种组合非常好:
最终解决方案(配置后)
使用更改的重新运行命令运行服务器(因此服务器在实际更改.rb文件时重新加载):
rerun rackup config.ru -i '**/*.{haml,scss,css,js}'
运行警卫以监控资产变更/ livereload:
bundle exec guard -P livereload