2011-08-04 5 views
1

나는 두 가지 버전의 static_resource 찾고 있어요는 : 매개 변수가 static_resource에 전달 된 두 경우 모두Webmachine : 누가 static_resource를 설정합니까? init/1?

https://github.com/basho/wriaki/blob/master/apps/wriaki/src/session_resource.erl 
http://lambder.com/2009/06/providing-static-content-in-webmachine/ 

을 : 두 Webmachine 응용 프로그램에서/1 init을/1 DOCROOT입니다 초기화하기. 그러나이 함수가 설정된 곳이나 DocRoot가 정의 된 곳을 찾을 수 없습니다.

누구든지 나를 향해 대답 해 줄 수 있습니까?

많은 감사,

LRP

답변

1

나는 here에서 webmachine_demo_fs_resource 한 번 봐 가지고, init/1에 전달 된 값이 dispatch.conf에 설정되어 있는지 나타납니다. here을 볼 수 있듯이 webmachine_demo_fs_resource에 대한 구성의 마지막 매개 변수는 [{root, "/tmp/fs"}]이며 문서 루트를 지정합니다. 물론, 같은 방법으로 읽는 한, 원하는대로 속성에 레이블을 붙일 수 있습니다 (init/1).

여기서는 데모가 어떻게 작동하는지 설명하지만 응용 프로그램의 관점에서 볼 때 옳은 일이 아닐 수도 있습니다. 어쩌면 환경 변수 또는 boot arg을 읽고 문서 루트가 있어야 할 위치를 파악하고 싶을 것입니다. 예를 들어 :

init([]) -> 
    DocRoot = 
     case init:get_argument(doc_root) of 
      {ok, [[DR]]} -> DR; 
      error -> "/tmp/fs" 
     end, 
    {ok, #context{root=DocRoot}}. 

당신은 당신이 원하는대로 일하기 위해 Context 값을 설정할 수 있습니다, 그래서 당신은 당신의 자신의 모험을 선택할 수 있습니다!

+0

안녕하세요 @ david, 귀하의 제안 된 코드를 시도했습니다. 하지만 내 static_resource.erl 모듈에 버그가 있음을 알리는 오류가 발생합니다. 오류는 다음과 같습니다. = 오류 보고서 ==== 2011-08-04 :: 00 : 37 : 27 === 웹 컴퓨터 오류 : 경로 = "/ static" {error, function_clause} Erlang 쉘에서이 모듈의 함수들? 오류 메시지는 단서를 제공하지 않습니다. 많은 고마워, LRP –

+0

그 오류는 일치하는'init/1' 절이 없다는 것을 의미합니다. 당신의'dispatch.conf' 파일은 튜플의 마지막 요소로서'{root, "/ tmp/fs"}'와 비슷한 것을 가지고있는 반면, 자원은 빈리스트만을 받아들이는'init/1'을 가지고 있습니다. 둘 중 하나를 수정하면 좋을 것입니다. 'init (_) ->'. 'dispatch.conf'를 변경하면 실행중인 노드를 다시 시작해야한다고 생각합니다. –

+0

안녕하세요 @ 데이비드, 제안 주셔서 감사합니다,하지만 난 여전히 오류가 발생합니다. 내가 앞으로 나아갈 때 많은 것을 얻을 것이라고 확신한다. 그래서 나를위한 진짜 문제는이 기능들을 디버깅하는 방법이다. 스레드가 깨질 위험이 있으므로 새로운 질문을 게시 해 보겠습니다. 코드 예제도 쉽게 볼 수 있어야합니다. 다시 한 번 고마워. LRP –

관련 문제