私はRailsプロジェクトのlibの下にある。私は 'Rails c'を実行し、コンソールでいくつかの実験を行う。コンソールはファイルをリロードしませんコンソールを終了して再起動する必要があります.
そのファイルをリロードするより良い方法はありますか?
これを試して:
load "#{Rails.root}/lib/yourfile.rb"
興味のある方のために、サーバーを再起動せずに Railsでファイルを自動再読み込みする方法 に関する私の調査結果を以下に示します。
ソリューションはRuby gem require_reloader として利用可能になりました。
次をconfig/initializers/reload.rb
に追加します
class Object
def reload_lib!
Dir["#{Rails.root}/lib/**/*.rb"].map { |f| [f, load(f) ] } #.all? { |a| a[1] }
# uncomment above if you don't want to see all the reloaded files
end
end
コンソールでreload_lib!
と入力することで、lib
内のすべてのファイルをリロードできるようになりました
これはあなたを助けることができるサルパッチです、これをRails consoleに貼り付けてください(またはこのコードをmonkeypatchファイルに入れることができます-ユーティリティメソッドでオブジェクトをmonkeypatchingすることはお勧めしませんが):
class Object
def self.reload_myself!
method = (self.instance_methods(false) + self.methods(false)).select{|method| method.to_s[0] =~ /[A-Za-z]/}.last
if method
if self.instance_methods(false).index method
method = self.instance_method(method)
elsif
method = self.method(method)
end
if (method.source_location)
source_location = method.source_location[0]
puts "reloading: #{source_location}"
load "#{source_location}"
else
puts "could not reload #{self.name}"
end
end
end
end
そして、あなたは電話することができます
reload_myself!
任意のオブジェクトでソースコードを再ロードします。