web-dev-qa-db-ja.com

変更のたびにSinatraにファイルを自動リロードさせる方法は?

使っています

# my_app.rb
load 'index.rb'

そして、このようにサーバーを起動します

Ruby my_app.rb

.

114
ez.

Sinatra FAQ を参照してください。

「変更時にSinatraアプリをリロードするにはどうすればよいですか?」

まず、インプロセスコードをRubyでリロードするのは難しく、すべてのシナリオで機能するソリューションを持つことは技術的に不可能です。

そのため、アウトプロセスの再読み込みをお勧めします。

まず、インストールする必要があります rerun まだインストールしていない場合:

 $ gem install rerun

次のようにSinatraアプリを起動した場合:

$ Ruby app.rb

リロードのために必要なのは、代わりにこれを行うことです:

$ rerun 'Ruby app.rb'

たとえば、ラックアップを使用している場合は、代わりに次の手順を実行します。

$ 'rackup'を再実行

あなたはアイデアを得る。

それでもインプロセスのリロードが必要な場合は、 Sinatra::Reloader

195
dbr

gemインストールsinatra-reloader

require 'sinatra'
require 'sinatra/reloader'

:sinatraハンドラー(および場合によってはいくつかのsinatraサーバー構成コマンド)のみをリロードしますが、手動でリロードする必要があるカスタムファイルはリロードしません。

42
Nakilon

rerun gemを使用できます。

gem install rerun
rerun 'Ruby app.rb' 

または、ラックアップを使用している場合

rerun 'rackup'
11
zeronone

gem install sinatra-reloader

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

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

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

環境変数を開発用に設定し、条件付きでgemをロードすることができます。

7
rafidude

Passenger Standalone でアプリケーションを実行するときは、tmp/always_restartファイル:

$ touch tmp/always_restart.txt

詳細については、乗客 ドキュメント をご覧ください。

6
karmi

Shotgun gemが好きです。モジュール式のSinatraアプリを使用していて、config.ruファイルがある場合は、簡単に実行できます。

shotgun config.ru

Gemを確認してください here 。それはかなり簡単で、設定は必要ありません。

5
user427390

Windowsでは、このために restart gem を使用しています。

restart Ruby my_app.rb

または、ラックアップ付き:

restart rackup

詳細については here をご覧ください。

4
Vais Salikhov

ガードラックを使用できます。 dblock.orgの記事 から削除:

これをGemfileに追加します。

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

次に、プロジェクトのルートに次のコンテンツでGuardfileを作成します。

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

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

最後に、Guardを次のように実行します:bundle exec guard、およびrackupは毎回リロードされます。

1
jeffbyrnes

テンプレートを変更するだけの場合、環境を開発に設定すると、sinatraは常にそれらを再レンダリングします。

Ruby app.rb -e development
0
three