문제

지금까지의 이야기:

"용어"라는 모델이있는 Rails 앱이 있습니다. 오이를 설치하려고 할 때까지 모든 것이 좋습니다. 달리면

rake cucumber

나는 얻다

Term is not a class (TypeError)

오이에는 또 다른 보석, '용어-분석기'(콘솔에서 멋진 색상 텍스트 출력을 수행하기 위해)가 포함되며, 용어 분석기는 "용어"라는 모듈을 정의하기 때문입니다. 오이에는 Rails 모델을 포함하기 전에 용어 분석 콜러가 포함되므로 "용어"는 "용어"모델을로드 할 때 이미 모듈로 정의됩니다. 최상위 모듈과 클래스는 루비에서 동일한 이름을 가질 수 없으므로 충돌이 발생합니다.

모델의 이름을 바꾸지 않는 것을 선호하면서, 나는 항아리 콜러 보석을 패치하는 것을 설정했습니다. 이것은 내가 생각했던 것보다 더 어려웠다. 모듈 이름이라는 용어 이름을 "ansiterm"으로 변경했지만 오이가 수정 된 보석을로드하는 방법을 알 수는 없습니다.

어떤 아이디어? 내가 잘못된 나무를 짖고 있습니까?

도움이 되었습니까?

해결책

두 가지 솔루션 :

1) 앱의 용어 모델을 다른 것으로 변경하십시오.

2) 패치 용어 분석 콜러는 네임 스패닝 용어를 갖고 대신 그 보석을 사용합니다.

다른 팁

내가 한 일은 다음과 같습니다.

sudo gem uninstall term-ansicolor
sudo gem uninstall cucumber

Github에서 용어 분석 및 오이의 소스를 다운로드하십시오
용어 분석용 소스를 검색하십시오 "module Term" 그리고 대체하십시오 "module ANSITerm"
오이 소스를 검색하십시오 "include Term" 그리고 대체하십시오 "include ANSITerm"
오이 소스를 검색하십시오 "::Term" 그리고 대체하십시오 "::ANSITerm"

sudo gem install term-ansicolor 내 지역 저장소에서
sudo gem install cucumber 내 지역 저장소에서

이제 유지해야 할 두 가지 보석이 있지만 앱의 모든 모델 참조를 변경하는 것보다 쉽습니다.

의견/제안을 환영합니다.

내 애플리케이션 모델 노드와 CapyBara :: 노드와 네임 스페이스 충돌을 받았습니다. 문제를 해결하기 위해 사양에 Toplevel 네임 스페이스를 명시 적으로 진술하는 것으로 충분했습니다.

it "should find the specified node scoped under the current user" do
  ::Node.should have_received(:find_by_id_for_user).with(node.id, user)
end
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top