2013-08-17 2 views
2

최근에 모든 것을 폴더로 그룹화하여 코드를 구성 할 수있었습니다.
는 내가 app/ 디렉토리에 컨트롤러의 내 그룹과 lib/ 디렉토리에 내 모듈 모두에 대해 동일한 "그룹 이름"을 갖는 문제를했지만, 나는이 다음에 의해 해결할 수 있었다 :컨트롤러 코드를 수정 한 후 "NameError, uninitialized constant"오류가 발생했습니다.

Rails: Same name for a library module and a group of controllers?

을 나는 또한 당신이 lib 코드를 변경할 때마다 필자가 직접하는 레일 서버를 다시 시작해야한다는 것을 알고있다.

하지만 최근의 재편성 후 컨트롤러에서 코드를 변경할 때마다 다음 오류가 발생합니다 !!!

NameError at /admin 
uninitialized constant Admin::PagerDuty 

그리고이 문제를 해결하기 위해 간단히 서버를 다시 시작하십시오 !!

어떤 조언이 필요합니까?

EDIT : 구조 : 헬퍼 main_helper.rb는 LIB pager_duty.rblib/admin

하에

module Admin::MainHelper 
     require "admin/pager_duty.rb" 

     def pager_duty 
     pagerduty = Admin::PagerDuty.new() 
     @on_call = pagerduty.on_call() 
     @counts = pagerduty.open_incidents() 
     end 
end 

app/helpers/admin하에

class Admin::MainController < ApplicationController 
end 

app/controllers/admin하에

컨트롤러이다 main_controller.rb 691,363,210

module Admin 
    class PagerDuty 
    .... 
    end 
end 
+0

그래서 lib 클래스에 자동 로딩을 사용하고 있습니까? 또는 명시 적으로 자동 로딩없이 필요합니까? – jurglic

+0

명시 적으로 질문을 수정하여 자세한 정보를 추가하겠습니다. – nevermind

+0

Rails 기본 설정으로 개발 모드에서 서버를 다시 시작하지 않아도됩니다. lib 디렉토리에서 루비 파일을 자동으로로드하려면'config/application.rb' 설정 파일에 다음을 추가하십시오 :'config.autoload_paths + = % W (# {config.root}/lib)' –

답변

8

시도 모듈에

require "admin/pager_duty.rb" 

require_dependency "admin/pager_duty.rb" 

을 변경.

+0

require_dependency에 대해 들어 본 적이 없지만 문제가 해결되었습니다! – nevermind

+0

It 's Rails 내부 메소드, 일반'require'는 변경 사항을 다시로드하지 않으므로 '초기화되지 않은 상수'오류가 발생합니다. – zrl3dx

+0

내 파일을 다시 구성한 후에 만이 문제를 겪었습니다! 어쨌든 고마워 – nevermind

관련 문제