1

exec.rbとlib.rbの2つのRubyファイルがあります。lib.rbはexec.rbに必要です。lib.rbを変更するたびに、exec.rbを再起動する必要があります。

実行中にexec.rbにlib.rbをリロードさせることは可能ですか?

4

2 に答える 2

1

File.mtimelib.rbの最終変更タイムスタンプを使用して比較することで、これを行うことができます。

コードでmtime、ファイルを最初にロードするときにを取得します。

last_mtime = File.mtime('lib.rb')
load 'lib.rb'

後で、処理中のループで、変更時刻が変更されたかどうかを再度確認し、必要に応じてリロードします。

current_mtime = File.mtime('lib.rb')
if (current_mtime != last_mtime)
  last_mtime = current_mtime
  load 'lib.rb'
end

私は過去に同様のテクニックを使用しましたが、それはうまくいきました。5分ごとにチェックするように設定しましたが、ニーズが異なる場合があります。

于 2013-02-15T13:14:15.327 に答える
1

ファイル変更通知をサブスクライブできます。これがosxのlibです:rb-fsevent

ファイルが変更されたという通知を受け取ったら、ファイルをリロードできます。

filename = './lib.rb' # get file name from event
load filename

ファイルを一度だけロードしてから再度ロードしないため、loadの代わりにを使用する必要があります。requirerequire

于 2013-02-15T07:12:11.990 に答える