2009-08-07 35 views

回答

184

Sinatra FAQ

"How do I make my Sinatra app reload on changes?"

首先,在处理代码在Ruby中重装是硬且具有 解决方案,为每一个场景的作品在技术上是不可能的。

这就是为什么我们建议您进行进程外重装。如果你开始你的末日应用这样

$ gem install rerun 

现在:

$ ruby app.rb 

所有你必须重新加载做的是不是

首先,你需要安装rerun,如果你还没有准备好这样做:

$ rerun 'ruby app.rb' 

如果您是例如使用rackup,而不是 如下:

$重播 'rackup'

你的想法。

如果您仍然需要进行中重新加载,请查看Sinatra::Reloader

+0

真棒!感谢:D – jocap 2010-12-03 22:40:42

+3

霰弹枪不适用于Windows,但 – 2013-02-13 14:27:16

+0

霰弹枪需要一个最小的config.ru。如果你还没有,创建它,并将“require”./my_app'“(其中my_app.rb是你的ruby应用程序)放在它中,你将被设置。 – 2014-01-12 09:10:34

40

创业板安装西纳特拉,reloader

require 'sinatra' 
require 'sinatra/reloader' 

注意:它会重新仅西纳特拉处理程序(和,也许有些西纳特拉服务器配置命令),但不能自定义文件,您必须手动重新加载。

+0

嘿@Nakilon,我该如何去手动重新加载这样的文件?我正在做'require'./my-file“',但没有成功 – kristianlm 2011-09-30 21:23:49

+0

@kristianlm,如果require已经被要求,'require'不会重新加载文件。你代替加载。 – Nakilon 2011-10-01 10:59:15

+0

你是对的。但是我必须重新保存我的'server.rb',才能重新加载我的外部文件。它不会单独检查我的外部文件,所以每次我对外部文件进行更改时都必须重新保存我的'sever.rb'。 [霰弹枪](http://rubygems.org/gems/shotgun)似乎在这方面效果更好,但它似乎也重新加载数据库会话。 – kristianlm 2011-10-05 12:44:11

6

创业板安装西纳特拉,reloader

require 'sinatra/base' 
require "sinatra/reloader" 

class MyApp < Sinatra::Base 
    register Sinatra::Reloader 

    get '/' do 
    "Hello Testing1!" 
    end 
end 

您可能需要环境变量设置为开发和有条件地加载宝石。

6

当您运行与Passenger Standalone的应用程序,只需创建一个tmp/always_restart文件:

$ touch tmp/always_restart.txt 

见乘客documentation获取更多信息。

+0

你是一位金神!谢谢。 – 2012-06-25 21:58:40

11

您可以使用rerun宝石。

gem install rerun 
rerun 'ruby app.rb' 

,或者如果您使用rackup

rerun 'rackup' 
1

你可以使用护架。从article at dblock.org解禁:

添加到您的Gemfile:

guard 'bundler' do 
    watch('Gemfile') 
end 

guard 'rack' do 
    watch('Gemfile.lock') 
    watch(%r{^(config|app|api)/.*}) 
end 

最后,跑卫:

group :development do 
    gem "guard" 
    gem "guard-bundler" 
    gem "guard-rack" 
end 

然后,在你的项目与此内容的根目录中创建一个Guardfile ,如下所示:bundle exec guardrackup每次都会重新加载。

4

在Windows上,我用我的restart gem此:

restart ruby my_app.rb 

,或者与rackup:

restart rackup 

更多信息,请参见here,希望你觉得它有用。

+0

该文件指出,它不能在Windows上工作,我试过了,它加载了sinatra,但没有重新加载chenges – peter 2015-04-20 09:10:06

5

我喜欢猎枪宝石。如果您使用的是模块化的Sinatra应用程序并且拥有config.ru文件,那么它很容易运行。

shotgun config.ru 

检查宝石出来here。它非常直接,无需配置。

0

如果你只能改变你的模板西纳特拉总会重新描绘他们,如果你设置环境发展:

ruby app.rb -e development 
相关问题