Sinatra + Octopress em um subdiretório

Isso será útil se você quiser que seu blog seja executado em um subdiretório de um aplicativo Sinatra.

Após gerar seu blog Octopress, seguindo os passos para implantar em um subdiretório , coloque a pasta gerada na pasta / public do seu aplicativo Sinatra. Em seguida, edite seu arquivo site.rb e adicione estas linhas:

get(/.+/) do
send_sinatra_file
(request.path) {404}
end

not_found
do
send_file
(File.join(File.dirname(__FILE__), 'public', '404.html'), {:status => 404})
end

def send_sinatra_file(path, &missing_file_block)
file_path
= File.join(File.dirname(__FILE__), 'public', path)
file_path
= File.join(file_path, 'index.html') unless file_path =~ /.[a-z]+$/i
File.exist?(file_path) ? send_file(file_path) : missing_file_block.call
end

Depois disso, seu blog deve estar acessível quando você iniciar o servidor, em localhost: 4567 / yoursubdirectoryname

Eu criei um pequeno aplicativo para demonstrar seu funcionamento. Você pode acessá-lo no GitHub aqui .