2012-11-28 7 views
1

나는 작동하는 Dancer 앱이 있습니다. DBIC를 사용하고 있습니다.Dancer DBIC schema_class를로드 할 수 없습니다.

데이터베이스에 테이블을 추가하고 싶습니다. 따라서 새 파일을 만들었습니다. 나는 응용 프로그램을 다시 시작할 때 그러나 지금, 나는 새로운 파일을 제거하면

Error while loading ././bin/app.pl: Could not load schema_class MyApp::Schema at /usr/local/share/perl/5.14.2/Dancer/Plugin/DBIC.pm line 42. 
Compilation failed in require at ././bin/app.pl line 5. 
BEGIN failed--compilation aborted at ././bin/app.pl line 5. 

이 모든 것이 잘 작동 다음과 같은 오류를 얻을. 여기

package MyApp::Schema; 

# Created by DBIx::Class::Schema::Loader 
# DO NOT MODIFY THE FIRST PART OF THIS FILE 

use strict; 
use warnings; 

use base 'DBIx::Class::Schema'; 

__PACKAGE__->load_namespaces; 

1; 

가 어디에서 오류에 대한 자세한 정보를 얻을 수 있습니다 내가 뭘 잘못했는지 내 Schema.pm 파일입니다?

+0

라인 42와 그 주변 라인은 무엇입니까? – jordanm

+0

스키마를로드 할 수 없을 때 DBIC의 다이 행입니다. http://api.metacpan.org/source/IRONCAMEL/Dancer-Plugin-DBIC-0.1505/lib/Dancer/Plugin/DBIC에서 볼 수 있습니다. pm – Craigy

답변

3

__PACKAGE__->load_namespaces을 사용하고 있으므로 새로운 클래스가 모두로드되어 새로운 클래스 파일이 단순하게 존재하면 오류가 발생하는 이유가 설명됩니다. 새 클래스 파일에 구문 오류가 있으면 스키마로드가 중단됩니다.

새 클래스 파일에 perl -c을 사용하여 파일을 컴파일하고 문제가없는 경우 더 잘 이해할 수 있습니다.

+0

DBIx :: Class :: Core에서 파생 된 클래스를 서브 디렉토리에 추가하여 새 테이블을 정의하기 전까지는 문제가되지 않는다. 여하튼 이것은 내가 준 오류를 일으킨다. – Craigy

+0

@Craigy - 코드를 보지 않고도 말하기 어렵습니다. 하나의 쉬운 실수는 클래스 파일을 추가하는 것이지만 새로운 클래스를'MyApp/Schema.pm'에 추가하는 것이 아니라 오류가 그 클래스와 일치하지 않는다는 것입니다. – jordanm

+0

@Craigy - 새 클래스 파일은'require'에서 true를 반환하도록'1;'로 끝나야합니까? – jordanm