> rvm list
rvm rubies
=* ruby-1.9.2-p290 [ i686 ]
ruby-1.9.3-p194 [ i686 ]
> rails -v
Rails 3.1.1
관련,하지만 대답하지 않았다 : Is there a Rails Console command (Rails 3+) to reload changed code? 나는 시도하고 내 모델의 메소드가 호출되지 않는 이유를 알아 내기 위해 레일을 콘솔을 사용하고레일즈 콘솔에서 모델을 어떻게 다시로드합니까?
. 모델은 ./app/models/product.rb에 있습니다. 방법을 self.trim_history
에서 trim_history
으로 변경하고 있습니다. 나는 여전히 self.do_stuff
또는 단지 do_stuff
과 같은 메소드를 호출 할 때 내 머리를 감싸고있다.
글쎄 이것을 알아내는 과정에서 나는 reload!
으로 문제를 겪었습니다. 내 이해는 reload!
모든 모델과 컨트롤러를 다시로드 할 것이라고했지만 작동하지 않는 것 같습니다. 코드를 디버깅 할 때 do_stuff
으로 변경된 줄은 여전히 디버거에 self.do_stuff
으로 표시됩니다.
나는이 문제를 해결하기 위해 reload!
으로 해결하려고했습니다. 다시로드 한 후에 데이터베이스에서 객체를 다시로드했습니다. load './app/models/product.rb'
으로 직접 모델을로드 한 다음 데이터베이스에서 오브젝트를로드했지만 수정하지 않았습니다. 개체가 tail
으로 변경되고 있음을 확인했습니다.
레일 콘솔에서 모델을 다시로드하는 가장 좋은 방법은 무엇입니까? 모델 코드가 변경 될 때마다 콘솔을 다시 시작해야합니까? 콘솔을 다시로드하지 않고 모든 기존 모델과 해당 코드를 덤프 할 수있는 방법이 있습니까?
:이 사람은 낯선 사람입니다. 이제 내 코드가 다시로드되는 것 같지만 디버거는 새 코드를 반영하지 않습니다. 코드를 단계별로 실행하면 이전 코드가 있지만 새 코드가 실행됩니다. 나는 raise
을 추가하여이를 테스트했다. raise
은 디버거에 표시되지 않지만 발생한다. 와트?
재로드 된 코드를 보려면 디버거와 관련이 있습니까? 이것은 버그처럼 보입니다 ...
클래스 자체 또는 클래스 인스턴스에서 메서드를 호출하려고합니까? –
@ChrisSchmitz 클래스의 인스턴스; 나는 그것을 이해할 때까지 자기를 사용하고 코드를 어지럽히는 것에 대해 읽고있다. – jcollum
Ruby에는 여러 가지 디버거가 있지만 사용중인 디버거를 지정하는 것이 좋습니다. –