告诉Webrick在下一个请求上加载一切/重启(类似于restart.txt)

时间:2014-03-17 21:17:09

标签: passenger webrick

有没有办法告诉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

但让它自动重启会很棒。

我还尝试了其他选项,例如powpowder一起自动重新加载pow成功,还phusion passenger使用了一个触及tmp/restart.txt的guard-shell脚本,也有效。

BUT:我想在服务器输出中使用pry,所以我只需在代码中的某处添加binding.pry并在控制台中调试它,无论是战俘还是乘客似乎都允许这样做:虽然战队无视任何binding.pry并且停止,但乘客似乎停止了,但与撬的互动非常奇怪,并非每次按键似乎都达不到它等等。

所以webrick仍然是我最喜欢的,效果很好......如果我能以某种方式自动重启...

1 个答案:

答案 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,重新运行将在重要文件发生更改时重新启动服务器。