Rerun 使用教程
1. 项目介绍
Rerun 是一个监控文件系统变化的命令行工具,当监控的文件发生变化时,它会自动重启程序。Rerun 适用于长时间运行的应用程序和短时间运行的测试。它是一个无需配置文件的简单命令行工具,可以替代 Guard、Shotgun、Autotest 等,适用于任何命令,而不仅仅是 Ruby 程序。
Rerun 的优势在于其简单的设计。它使用 Unix 的 exec
和标准的 SIGINT
、SIGKILL
信号,确保重启的应用程序与从命令行首次运行时行为一致。
2. 项目快速启动
首先,确保你已经安装了 Ruby。然后,通过以下命令安装 Rerun:
gem install rerun
启动 Rerun 来监控文件变化并重启程序,使用以下命令:
rerun [options] [--] cmd
例如,如果你想运行一个名为 app.rb
的 Sinatra 应用程序:
rerun ruby app.rb
或者更简单:
rerun app.rb
如果你想要监控特定的目录和文件模式,可以使用 --dir
和 --pattern
选项:
rerun --dir app,web --pattern "*.rb" rails s
这将监控 app
和 web
目录下的所有 Ruby 文件,并在文件变化时重启 Rails 服务器。
3. 应用案例和最佳实践
案例一:自动化测试
使用 Rerun 运行自动化测试,当测试文件变化时自动重新运行测试:
rerun -x rake
或者如果你使用的是 RSpec:
rerun -cx rspec
案例二:Spork 服务器
如果你在使用 Spork 与 Rails,当 Rails 环境文件变化时,你需要重启 Spork 服务器。可以在 Rakefile 中添加以下任务:
desc "run spork (via rerun)"
task :spork do
sh "rerun --pattern '{Gemfile,Gemfile.lock,spec/spec_helper.rb,.rspec,spec/factories/**,config/environment.rb,config/environments/test.rb,config/initializers/*.rb,lib/**/*.rb}' -- spork"
end
然后使用以下命令启动 Spork 服务器:
rake spork
案例三:Erector Widgets
使用 Rerun 来在每次 Erector widget 变化后重新生成 HTML 文件:
rerun -x erector --to-html my_site.rb
4. 典型生态项目
Rerun 可以与其他开源项目配合使用,例如:
-
Foreman:如果你使用 Heroku Cedar,Rerun 现在与 Foreman 兼容。可以本地运行所有
Procfile
进程,并在必要时重启它们:rerun foreman start
-
Guard:如果你更喜欢使用 Guard,可以查看
guard-spork
,它提供了类似 Rerun 的功能。
通过以上介绍,你可以开始使用 Rerun 来简化你的开发流程,并自动化文件监控和程序重启的任务。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考