"Test"라는 모델이 있습니다. (디버깅을 위해 class Test
end
남았습니다.) 그리고 레일즈 콘솔에서 인스턴스화를 시도 할 때마다 Test:Module
에 대해 "새로운"방법이 존재하지 않는다는 오류가 나타납니다. 이 오류는 다른 모델을 인스턴스화 할 때 발생하지 않으며 레일 콘솔이 Test :: Unit 또는 그와 비슷한 것을로드한다는 사실과 관련이 있다고 생각합니다. (예 : Test.constants
을 실행하고 콘솔을 [:Unit]
, 그래서 나는 그게 문제라고 확신한다). 여하튼, Test라는 이름의 모듈이 레일 콘솔에 의해 실행되고 있다는 것은 의심의 여지가 없습니다. 어떻게 이것을 피할 수 있습니까? 나에게 클래스 이름을 다른 값으로 변경하는 것은 매우 불편할 것입니다. 그렇다면이 문제를 해결할 수있는 방법이 있다면 ~!레일즈 콘솔이 로딩되는 것을 막을 수 있습니다. Test :: Unit
0
A
답변
1
방금 테스트 대신 내 수업 "시험"을 호출하는 간단한 방법을 사용했지만이 문제를 해결하지 않고 올바르게 해결하는 방법을 알고 싶습니다.
1
모듈을 추가하고 모듈 내부에 테스트 클래스를 만들어 문제를 피할 수 있습니다. 그런 다음 module :: class와 같은 클래스를 처리해야합니다.
나는이 접근법이 좀 지저분하다고 생각합니다. 레일즈 콘솔이 읽는 것으로 보이는 Test 클래스를 "정의 해제"하는 코드 조각을 많이 가지고 있습니다. 또한이 캡슐화 모듈 접근법을 사용하면 , 나머지 코드 (데이터베이스 액세스 등)에 어떤 영향이 있습니까? – Kvass
또한 온라인에서 살펴 보았으며 분명히 네임 스페이스 모델은 Rails의 절대적인 번거 로움/혼란입니다 - http://stackoverflow.com/questions/601768/namespaced-models-in-rails-whats-the-state-of -노조. 그래서 Test :: Unit을로드하지 않으려면 레일즈 콘솔이 정말로 필요합니다. – Kvass
그것은 지저분하지 않습니다. 정확하게 모듈이 필요한 것입니다. 방금 정의 된 클래스에 메서드를 추가하려고했습니다. 이미 미리 정의 된 클래스 다음에 클래스의 이름을 지정하지 않거나 모듈에 클래스를 넣지 않습니다. 또는 네가 테스트를 모두 제거한다고 말했듯이, 루비가 puts를 방해하기 때문에 puts를 제거하고 싶다고 말하는 것과 같습니다. –