0
我開發了基於Sinatra::Base
的Rack應用程序。現在我想在一個Rack應用程序中使用它的很多實例,每個實例的配置略有不同。具有不同配置的Sinatra :: Base應用程序的多個實例
我rackup
應該像
use Rack::Lint
map '/mel' do
run Site.new('/home/mel/site').app
end
map '/pub' do
run Site.new('/pub').app
end
的Site
類收集各種參數(在這個例子中只有根目錄),並做一些準備工作。方法#app
應該返回一個Server
對象,該對象擁有對提供的Site
實例的引用。
這是的Site
和Server
代碼的示例:
class Site
def initialize(root_dir)
@root_dir = root_dir
# ... set up things ...
end
def app
# This is where a new Server Rack application should be created
return Server.new { |server| server.set :site, self }
end
end
class Server < Sinatra::Base
before do
@content = settings.site.all_files
end
get /(.*)/ do |url_path|
# do things...
end
end
這段代碼的問題是,#app
方法不返回一個有效的Rack應用。
我應該怎麼做#app
返回一個新的,配置Server
機架應用?