내 Rails 4 앱에는 기본 모델이 있습니다 /app/models/badge.rb
..
그럼, 배지에서 상속이의 말을하자 특정 배지의 다수가 GoldBadge
와 SilverBadge
(실제로, 많은 등). 이러한 파일은 모두 /app/model/badge/<name>_badge.rb
. 예 : /app/model/badge/gold_badge.rb
.
GoldBadge의 클래스 선언은 다음과 같습니다.
class GoldBadge < Badge
...
그러나 Rails (또는 Ruby, 정말 잘 모르겠습니다) 자동 로더 는 첫 번째 시도에서만 이러한 파일을 찾는 데 문제가 있습니다. 그 의미는를 사용해야하는 페이지에 처음 액세스 할 때 GoldBadge
예를 들어 다음 오류가 발생한다는 것입니다.
Unable to autoload constant Badge::GoldBadge, expected /path_to_my_rails_app/app/models/badge/gold_badge.rb to define it
클래스가 해당 파일에 정의되어 있기 때문에 이상합니다. 그러나 더 이상하게도 페이지를 새로 고치면 모든 것이 작동합니다. 클래스가 발견됩니다!
여러 유형의 배지를 참조하는 페이지에서 각 유형에 대해 한 번씩 페이지를 새로 고쳐야 작동합니다. 내가 사용하는 페이지가 있다면 예를 들어 GoldBadge
, SilverBadge
그리고 BronzeBadge
, 나는 전에 작업 마지막 것, 각 배지 유형에 대해 한 번 표시되고 그 오류 페이지 3 회 새로 고침 것이다.
이것은 개발 모드에서 발생합니다. 내가 읽은 바에 따르면 이것은 프로덕션에서는 사라질 수 있지만 개발 모드에서는 여전히 매우 짜증납니다. 그것을 고칠 수있는 방법이 있습니까 (가급적 캐싱 클래스없이)?
app/models/badge
폴더 와 같은 네임 스페이스 아래에두면 다음과 같이 클래스를 정의해야합니다.
class Badge::GoldBadge < Badge
#...
end
자동로드하고 Badge::GoldBadge
. 을 호출하여 액세스 GoldBadge
하려면 app/models
디렉토리 로 이동하십시오 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다