【问题标题】:How to speed up reload and development process with Sinatra/Ruby/Rack/Haml?如何使用 Sinatra/Ruby/Rack/Haml 加快重新加载和开发过程?
【发布时间】:2014-08-07 15:11:22
【问题描述】:

我正在构建一个 Sinatra 站点,在尝试 Shotgun 之后,我正在使用 Rerun 在编辑文件后重新加载我的 Thin server

但是,我发现开发/反馈循环非常耗时。例如,对 CSS、JavaScript 或 Haml 文件进行小的更改需要等待服务器重新加载 7-8 秒,然后我才能在浏览器中重新加载页面以查看更改。 (我的应用使用Sprockets 来管理资产等)

忽略这些重新加载是不太可能的,因为页面因此不会反映更改并且会完全关闭反馈循环。

有没有什么方法可以简化这个过程,或者每个人每次都想看到变化的反映时都经历了这个等待?来自 PHP/CSS/HTML 背景,我发现使用 Sinatra/HAML 开发相当痛苦,并且我觉得我不知何故错过了一个核心概念?

【问题讨论】:

标签: css ruby sinatra haml


【解决方案1】:

@Cereal - 谢谢,但我在问题中提到我尝试使用 Shotgun,但它的运行速度也很慢。

@the Tin Man - 谢谢,很高兴知道对 HAML 的更改不需要重新加载。

我想在这一切之后,一些研究让我看到了这篇文章,这对于实现警卫/机架 livereload 非常有用: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

【讨论】:

    【解决方案2】:

    首先,我不认为您必须重新加载服务器才能看到静态文件的更改。因此,只需保存您的更改并刷新页面即可。

    现在,当您需要更改一些后端内容时,我通常使用 Shotgun gem。假设你不在 Windows 上,你可以运行 gem install shotgun 来安装它,然后运行 ​​shotgun config.ru 来自动开始使用 Rack。当您更改任何后端内容时,Shotgun 会自动重新加载服务器,并且比手动执行此操作要快得多。如果需要,您也可以使用带有 shotgun file.rb 的直接 Ruby 文件运行它。

    您可以在Shotgun repository 上查看完整的 Shotgun 文档和源代码。

    【讨论】:

    • 永远不会重新加载服务器以更改静态文件,也不会更改 Haml 处理的文件,除非我需要将新的本地变量传递到模板中。
    猜你喜欢
    • 1970-01-01
    • 2014-12-24
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-05
    相关资源
    最近更新 更多