이것은 나에게 매우 이상하게 보입니다. 그러나 나는 이전에 스크립트의 load
에서 이전 값을 유지하는 스크립트를 실행하고 있습니다. req1
의 값은 스크립트의 연속로드에 덤프되지 않습니다. irb에로드 된 스크립트가 이전 값을 유지하지 못하게하려면 어떻게해야합니까?
- 열린 IRB : 여기
이 단계는 다음과 같습니다 여기 스크립트입니다 A => B 줄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) }
- 다시 스크립트 실행
- 코멘트
req1
객체가 거기에'A' => 'B'
있을 것이다 끝에 A => B 라인 - 실행 스크립트를 다시
. 스크립트가 실행될 때마다 새 객체를 만드는 것처럼 보이기 때문에 이것이 왜 일어날 지 잘 모르겠습니다. 그것은 모든 실행에 개체가 기억되고있는 것으로 보입니다.
이런 종류의 일을 방지하는 가장 좋은 방법은 무엇입니까? 저는 몇 가지 시도를 해봤지만 왜 처음부터 일어 났는지 이해하지 못하기 때문에 빨대를 쥐고있는 것처럼 느낍니다.
AmazonProduct []가 실제로하는 일에 달려 있습니다. 당신은 아무것도 제작하지 않고 AmazonProduct [ "us"]를 참조하고 있습니다. –
그건 의미가 있지만로드간에 캐시 될까요? 출처는 http://rubydoc.info/github/hakanensari/amazon_product/master/AmazonProduct#%5B%5D-class_method입니다. 'us'는 @requests 객체로 전달됩니다. AmazonProduct 객체에 .new가 없기 때문에 이런 일이 발생합니까? – jcollum