2011-07-26 2 views
1

내 Sinatra 앱에서 내가 require 'sinatra' 일 때 예상대로 내 공용 폴더에 액세스 할 수 있다고 알았지 만 require 'sinatra/base' 할 수 없습니다. 여기에 (내가 /base로 변경할 때까지 작동) 내 관련 코드입니다 :sinatra/base를 요구할 때 공용 폴더를 찾는데 문제가 있음

config.ru

root = ::File.dirname(__FILE__) 
require ::File.join(root, 'app') 
run MyApp.new 

app.rb

require 'sinatra' 
require 'sinatra/namespace' 
require 'haml' 

class MyApp < Sinatra::Application 
    # ... 
end 

require_relative 'models/init' 
require_relative 'helpers/init' 
require_relative 'routes/init' 

script.haml

%script(type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.2/jquery.min.js") 
%script(type="text/javascript" src="/js/table.js") 
%link(rel="stylesheet" type="text/css" href="/css/table.css") 

그리고 네, 올바른 디렉토리 구조를 가지고 있습니다. 내가 말했듯이, 그것은 require sinatra을 사용하여 작동합니다. 왜 이런 일이 발생하고 그것을 해결하기 위해 무엇을 할 수 있는지 아는 사람이 있습니까?

답변

11

Sinatra::Base을 요구하면 configuration settings이 기본값 인 Sinatra을 필요로하지 않습니다. 적절한 값으로 직접 set :public_folder ...해야합니다 (예 :

set :public_folder, 'public' 
+0

) 감사합니다. 그것은 그것이 무엇인지, 그리고 나는 Sinatra를 요구하는 두 가지 방법의 차이점을 깨닫지 못했습니다. 참고 :': public' 다음에 쉼표가 필요합니다. –

+0

쉼표에 대해 죄송합니다 - –

+5

내 문제를 해결했습니다. 정말 고마워요! 구문이 'set : public_folder'으로 변경되었습니다. – kinopyo

관련 문제