Ruby環境で使用するRailsスクリプトを書いていますが、Railsコンソールのリロードが面倒なため、irbから実行することにしました。待機時間はirbよりもはるかに短くなりましたが、変更を行うたびにirbを再起動し、スクリプトを要求する必要があることに悩まされています。 irbからスクリプトをリロードする簡単な方法はありますか?
this thread でメソッドを見つけましたが、明らかにgemファイルにのみ適用されます。私のrequireステートメントは次のようになります
require "#{File.expand_path(__FILE__)}/../lib/query"
編集:load
ではなくrequire
を試しても、まだ動作しませんでした。これらのエラーを止めることはできません。
Ruby-1.9.2-p0 > load "#{File.expand_path(__FILE__)}/../lib/query.rb"
LoadError: no such file to load -- /Users/newuser/Dropbox/Sites/Rails/hacknyc/(irb)/../lib/query.rb
Irbでは、File.expand_path(__FILE__)}
は"#{path you ran irb from}/(irb)"
を返すだけです。これにより、実際には存在しないパスが作成されます。幸いなことに、すべてのファイルパスは、いずれにしてもirbを実行した場所からの相対パスです。つまり、必要なものは次のとおりです。
load "lib/query.rb"
実際のファイルで__FILE__
を使用したい場合は問題ありませんが、irbで有効なパスが生成されることを期待しないでください。 irbには「ファイル」がないため、有効なパスをまったく返すことができません。
また、__FILE__
は、loadまたはrequireを介してirbにロードされたファイルで使用された場合、正常に機能します。それはちょっとそれが何のためであるので。
require
を使用する代わりに、load
を試してください。前者はソースファイルを一度だけロードし、後者は呼び出すたびにロードします。
load
があなたが探しているものだと思います。