2011-01-08 45 views
54

私はRails環境で使用するためのRubyスクリプトを作成していますが、Railsコンソールを再ロードすると苦労する可能性があるため、irbから実行することを選択しました。今は待ち時間がirbからかなり短くなっていますが、変更するたびにirbを再起動してスクリプトを要求する必要があります。 irbからスクリプトをリロードする簡単な方法はありますか?IRBでスクリプトを再ロードするにはどうしたらいいですか?

私はthis threadにメソッドを見つけましたが、明らかにgemファイルにのみ適用されます。文を必要とマイはこの

require "#{File.expand_path(__FILE__)}/../lib/query" 

EDIT次のようになります。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 

答えて

84

irbでは、File.expand_path(__FILE__)}はちょうど"#{path you ran irb from}/(irb)"を返します。実際には存在しないパスが作成されます。幸いにも、すべてのファイルパスは、あなたがirbを実行した場所に関係しています。

load "lib/query.rb" 

あなたはそれは大丈夫ですが、それはIRBに有効なパスを生成するために期待していない、実際のファイルで__FILE__を使用する場合:これはあなたが必要とするすべてがあることを意味します。 irbには "ファイル"が全くないので、有効なパスを返すことはできません。

また、loadまたはrequireによってirbにロードされたファイルで使用された場合、__FILE__は正常に動作します。それはちょっとそれが何のためですか。

34

代わりのrequireを使用して、loadを試してみてください。前者はソースファイルを一度だけロードし、後者はソースファイルを呼び出すたびにロードします。

+1

私はロードしようとしましたが、ファイルが見つからないと不満を持ち続け、行末にrb拡張子を置いていました。 – picardo

+0

参考までに、「Rubyが必要ですVS負荷VS拡張を含む」 - http://ionrails.com/2009/09/19/ruby_require-vs-load-vs-include-vs-extend/ – Purplejacket

1

私はloadがあなたが探しているものだと思います。

+1

私は 'それはファイルを見つけることができないと不満を続け、私は行の最後にrb拡張子を入れました。 – picardo

+1

ファイルの拡張子を入れてみてください – hyeomans

3

this linkに従うと、ファイルをロードする必要があり、拡張子を忘れないでください。

this link number 2でこれを使用すると、あなたも参考になるはずの美しいバージョンです。

なぜあなたのレールコンソールがうまく動作しないのか解説してみてください。

+0

Railsコンソールの読み込みが遅すぎます。私は 'load'を試しましたが、ファイルを見つけることができないと不満を持ち続けました。そして、行末にrb拡張子を入れました。 – picardo

+0

このファイルがlibディレクトリの中にある場合は、ロードされ、起動時にエラーが発生しない限り、そのファイルを使用することができます。それを別のファイルで使用するには、あなたのレールアプリのファイルの1つに 'require NameOfModuleOrClass'(そのクエリファイルの中に)を追加するだけです。 – pjammer

関連する問題