【问题标题】:creating files based sinatra blog sinatra创建基于文件的 sinatra 博客 sinatra
【发布时间】:2014-02-12 04:02:45
【问题描述】:

我想创建一个基于文件的博客。我有几个脚本无法存储在数据库中/对数据库的存储了解不够/不合适。我认为创建一个基于文件的博客是个好主意。这不是一个博客。

我想使用的文件夹结构如下:

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

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

如何读取 Posts 文件夹的内容并创建包含标题的数组?我知道我可以将它们存储在视图中,但我认为视图是针对站点布局的。

这就是我一直在做的:

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

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

请注意博客,它不是博客,它只是解释它是什么的最简单方法。

【问题讨论】:

    标签: sinatra blogs


    【解决方案1】:

    我用 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
    

    这会根据您的降价文件的文件名创建路由。所以如果它被称为“呼吸”,那么路线就是“呼吸”

    在您的 ERB 文件上,您需要使用

    to_html(article.content)

    添加助手:

    require 'maruku'
    
    def to_html(str)
      Maruku.new(str).to_html
    end
    

    【讨论】:

      猜你喜欢
      • 2010-11-06
      • 1970-01-01
      • 1970-01-01
      • 2013-03-03
      • 1970-01-01
      • 2013-03-10
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      相关资源
      最近更新 更多