2013-09-13 4 views
1

Я хочу создать файл на основе блога. У меня есть несколько сценариев, которые я не могу хранить в базе данных/недостаточно знать о базах данных для хранения/будет плохо подходит. Хотя было бы неплохо создать блог на базе файлов. Это не блог для каждого.создание файлов на основе sinatra blog sinatra

структура

Папка Я хотел бы использовать следующим образом:

App folder 
-- Posts 
--- file1.erb 
--- file2.erb 

-- Posts2 
--- file3.erb 
--- file4.erb 

Как я могу прочитать содержимое папки сообщений и создать массив, содержащий название? Я знаю, что могу хранить их в поле зрения, но я, хотя мнения были для макетов сайта.

Это то, что я делал:

get '/posts1/:id' do 
    erb "posts_#{params[:id]}".to_sym 
end 

get '/posts2/:id' do 
    erb "posts2_#{params[:id]}".to_sym 
end 

Примечание на блоге, это не блог, его просто самый простой способ объяснить, что это такое.

ответ

0

Я создал несколько приложений с Sinatra, которые используют Markdown. Пожалуйста, не используйте ERB для контента.

Markdown файл может нравится:

title: Breathe 
date: 2013-08-05 

Breathe. 

Учитывая ваш каталог «Сообщения» с уценкой файлами, вы можете сделать это:

Dir.glob "./app/posts/*.md" do |file| 
    meta, content = File.read(file). split("\n\n", 2) 
    article = OpenStruct.new YAML.load(meta) 
    article.date = Time.parse article.date.to_s 
    article.content = content 
    article.slug = File.basename(file, '.md').gsub("_", '-') 
    on "#{article.slug}" do 
    erb :post, locals: { article: article } 
    end 
end 

Это создает маршруты на основе имени файла вашей уценки файл. Так что, если это называется "Breathe", то маршрут "дышать"

В файле ERB, вам нужно использовать

to_html (article.content)

Добавить помощник:

require 'maruku' 

def to_html(str) 
    Maruku.new(str).to_html 
end 
Смежные вопросы