2009-08-07 54 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 
相關問題