exec.rbとlib.rbの2つのRubyファイルがあります。lib.rbはexec.rbに必要です。lib.rbを変更するたびに、exec.rbを再起動する必要があります。
実行中にexec.rbにlib.rbをリロードさせることは可能ですか?
exec.rbとlib.rbの2つのRubyファイルがあります。lib.rbはexec.rbに必要です。lib.rbを変更するたびに、exec.rbを再起動する必要があります。
実行中にexec.rbにlib.rbをリロードさせることは可能ですか?
File.mtime
lib.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分ごとにチェックするように設定しましたが、ニーズが異なる場合があります。
ファイル変更通知をサブスクライブできます。これがosxのlibです:rb-fsevent。
ファイルが変更されたという通知を受け取ったら、ファイルをリロードできます。
filename = './lib.rb' # get file name from event
load filename
ファイルを一度だけロードしてから再度ロードしないため、load
の代わりにを使用する必要があります。require
require