2012-12-09 4 views
1

모듈 형 스타일 suggested in this stackoverflow answer을 사용하여 Sinatra 앱을 작성하고 Heroku에 성공적으로 배포했지만 AppFog에 배포하려고 시도했을 때 (datamapper mysql/postgres gems를 제외한 동일한 코드) 내가 정의한 모든 경로에 대해 "찾을 수 없음"오류가 발생합니다. 설정에서Sinatra 모듈러 앱이 AppFog에서 경로를 인식하지 못합니다.

== Sinatra/1.3.3 has taken the stage on 47195 for production with backup from Thin 
myIP, 127.0.0.1 - - [08/Dec/2012 21:28:53] "GET/HTTP/1.0" 404 18 0.0030 
myIP, 127.0.0.1 - - [08/Dec/2012 21:28:54] "GET /any_route HTTP/1.0" 404 18 0.0010 
myIP, 127.0.0.1 - - [08/Dec/2012 21:28:58] "GET /about HTTP/1.0" 404 18 0.0008 

내보기 및 공용 경로 :

settings.views = "./views" 
root = "." 
settings.sin_auth_view_path = "/mnt/var/vcap.local/dea/apps/myapp-0-d1d1d1dc0e543b1759afda27b/app/views/" 
public_folder = "./public" 

정의 경로의 예 :

class MyApp < Sinatra::Application 
    get '/' do 
    @title = "Site Index Page" 

    haml :index 
    end 
end 

Config.ru는

require ::File.join(::File.dirname(__FILE__), 'app') 

run MyApp.new 

구조와 기본적으로 동일하다 위에 링크되어 있습니다.

"Not Found"메시지와 해당 404 "GET"항목 만 로그에 응용 프로그램 오류가 없습니다. PUBLIC 폴더가 정상적으로 작동하고 있습니다. 사이트 URL (예 : site.com/img/anypic.jpg)에서 모든 정적 파일에 액세스 할 수 있습니다. 그리고 내가 언급했듯이, 똑같은 응용 프로그램은 Heroku에서 완벽하게 실행됩니다.

나는 번들 패키지를 사용하기 때문에 주문형 보석을 사용할 수 있으며 모듈러 구조로 전환 할 때까지 아무런 문제가 없습니다.

AppFog에 설치되어 있습니다. Ruby 1.9.3 런타임.

생각 ....

답변

1

덕분에,이 솔루션은 대신 시나 응용 프로그램의 응용 프로그램으로 배포하는 것이 었습니다.

참고 : require_relative :

0
나는 그것이 절대 경로는 (다른 두 상대 반면)의대로 "settings.sin_auth_view_path"항목에 문제가 될 수 있는지 확인 할

. Heroku는 앱 소스 외부로 올라 가면 개발 상자에서 보았던 일반적인 파일 시스템 레이아웃을 갖고 있지 않습니다. AppFog Google 사용자 그룹에 사용자에게

+0

Heroku가 정상적인 파일 시스템 레이아웃을 가지고 있지 않다면, 왜이 다음 내 로컬 시스템에서 작동 하는가를 사용하는 경우 또한, --runtime ruby193 명령 줄 옵션을 사용해야합니다? 문제는 AppFog에서 작동하지 않는다는 것입니다. 하지만 "settings.sin_auth_view_path"를 상대적인 것으로 변경하고 그 차이가 있는지 확인한 후 다시보고합니다. 감사. AWS EC2 인스턴스 (Bitnami Ruby 193 AMI)에 직접 설치해보십시오. 어떻게 진행되는지 확인할 수 있습니다. –

+0

당신은 Heroku 파일 시스템의 차이점에 대한 설명을 가르쳐 주시겠습니까? 감사. –

+0

[this] (https://devcenter.heroku.com/articles/dynos#ephemeral-filesystem)를 참조하십시오. 매우 설명 적이 지 않지만 기본적으로 로컬 파일은 언제든지 사라질 수 있으며 앱 소스 트리 외부에서 액세스 할 수 없습니다. – mjbraun