これは私にとっては非常に奇妙なようですが、私は実行中のスクリプトを持っています。これは以前のload
のスクリプトの以前の値を保持しています。 req1
の値は、スクリプトの連続したロードにダンプされません。ここでirbに読み込まれたスクリプトが以前の値を保持できないようにするにはどうすればよいですか?
はスクリプトです:ここでは
require 'amazon_product'
req1 = nil
req1 = AmazonProduct["us"]
puts req1.inspect
req1.configure do |c|
c.key = "[...]"
c.secret = "[...]"
c.tag = "[...]"
end
puts req1.inspect
req1 << {
'Version' => '2010-11-01',
'Operation' => 'ItemLookup',
'SearchIndex' => "Books",
'Keywords' => 'Corrections'
#, 'A' => 'B'
}
puts req1.inspect
resp = req1.get
File.open(File.join(File.dirname(__FILE__),
"amazon_response.xml"), 'w') {|f| f.write(resp.body) }
は、手順は次のとおりです。
- オープンIRB(レールを介して、C)
- は、loadコマンドを経由して
- コメント解除スクリプトを実行します。 A => B行
- 再度スクリプトを実行
- コメント A => Bライン
- 実行スクリプトを再度
終わりreq1
オブジェクトは、その中に'A' => 'B'
を持つことになります。私は、スクリプトの実行ごとに新しいオブジェクトを作成しているように見えるので、なぜこれが起こっているのかは不明です。オブジェクトはすべての実行で記憶されているようです。
このようなことを防ぐにはどうすればよいですか?私はいくつかのことを試しましたが、なぜそれが最初に起こっているのかわからないので、私はストローで握っているように感じます。
AmazonProduct []が実際に何をしているかによって異なります。あなたは何も作成していない、あなたはAmazonProduct ["us"]を参照しています。 –
これは理にかなっていますが、負荷全体にキャッシュされますか?ソースはhttp://rubydoc.info/github/hakanensari/amazon_product/master/AmazonProduct#%5B%5D-class_methodです。 'us'は@requestsオブジェクトに渡されます。 AmazonProductオブジェクトに.newがないため、これが起こっていますか? – jcollum