Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 我可以在不重新启动服务器的情况下执行Sinatra程序吗?_Ruby_Sinatra - Fatal编程技术网

Ruby 我可以在不重新启动服务器的情况下执行Sinatra程序吗?

Ruby 我可以在不重新启动服务器的情况下执行Sinatra程序吗?,ruby,sinatra,Ruby,Sinatra,当我修改代码时,必须重新启动服务器才能看到结果。有什么出路吗?有几个选项,详细内容见。最简单的方法似乎是使用鸟枪,您可以按如下方式安装和调用: $ sudo gem install shotgun $ shotgun myapp.rb 或者,如果您使用从Sinatra::Base继承来定义应用程序,并使用config.ru文件: $ shotgun config.ru -p 4567 如果使用Phusion Passenger,可以将此文件放在应用程序的根文件夹中 tmp/always_re

当我修改代码时,必须重新启动服务器才能看到结果。有什么出路吗?

有几个选项,详细内容见。最简单的方法似乎是使用鸟枪,您可以按如下方式安装和调用:

$ sudo gem install shotgun
$ shotgun myapp.rb
或者,如果您使用从
Sinatra::Base继承来定义应用程序,并使用
config.ru
文件:

$ shotgun config.ru -p 4567

如果使用Phusion Passenger,可以将此文件放在应用程序的根文件夹中

tmp/always_restart.txt

它将在每次请求时重新启动


(第8.7节)

更好的方法是使用来自sinatra contrib gem(也来自)的重新加载程序:首先安装sinatra contrib gem,然后确保您的应用程序.rb文件以以下行开头:

require 'sinatra'
require 'sinatra/reloader' if development?

然后将重新加载任何修改的配置文件(无需重新启动服务器!)

如果从项目目录执行
shotgun
,它将自动找到
config.ru
。请注意,shotgun会自动重新启动应用程序。应该明确区分自动考虑更改和重新启动应用程序+1尽管如此。如果在OS X上使用37signal的
pow
,上述方法也有效,并且在开发过程中非常方便。()我认为如果您以模块化方式运行Sinatra,则此方法不起作用?