有没有办法告诉Webrick在下次请求时重新加载所有内容?像乘客tmp/restart.txt
这样的东西?
我喜欢guard并希望每当关键文件发生变化时重启我的开发服务器。我完成了使用guard-shell停止服务器:
guard :shell do
watch %r{\.ruby-version|Gemfile|Gemfile\.lock|config/(application|environment)\.rb|config/environments/.*\.rb|config/initializers/.*\.rb} do |m|
`lsof -i tcp:3000 | awk 'NR!=1 {print $2}' | xargs kill -9`
n "#{m[0]} saved, restart of development server needed", 'Webrick restart'
end
end
但让它自动重启会很棒。
我还尝试了其他选项,例如pow与powder一起自动重新加载pow成功,还phusion passenger使用了一个触及tmp/restart.txt
的guard-shell脚本,也有效。
BUT:我想在服务器输出中使用pry,所以我只需在代码中的某处添加binding.pry
并在控制台中调试它,无论是战俘还是乘客似乎都允许这样做:虽然战队无视任何binding.pry
并且不停止,但乘客似乎停止了,但与撬的互动非常奇怪,并非每次按键似乎都达不到它等等。
所以webrick仍然是我最喜欢的,效果很好......如果我能以某种方式自动重启...
答案 0 :(得分:1)
我找到了另一种方法。只需在Rails项目中创建一个bin/server
可执行文件,其中包含以下内容:
#!/bin/bash
# This starts webrick using rerun which automatically restarts it after critical config files are changed
rerun --pattern '{Gemfile.lock,config/environment.rb,config/environments/development.rb,config/initializers/*.rb,lib/**/*.rb}' --no-growl --signal INT --background --clear -- rails s
然后安装rerun gem:gem install rerun
。
现在只需键入server
(而不是rails server
)即可开始webrick,重新运行将在重要文件发生更改时重新启动服务器。