1

我想编写一个脚本,从本地 SQLite3 数据库中检索数据,然后将该数据格式化为 HTML 文件。

我不确定要使用什么“工具”,但我想我需要 sqlite3 gem,然后我正在考虑将 Sinatra 用于 HTML 位。

更新:我不打算创建 Web 服务。我只想运行一个以 sqlite3 数据库作为输入的 Ruby 脚本并提取一组特定的数据,然后我想将其格式化并输出为单个文件。我提到了 HTML,但是任何像 markdown 这样的东西都会很棒,因为它可以以你想要的任何格式导出。

4

2 回答 2

1

我喜欢您为 Web 应用程序选择 Sinatra,并建议为数据库适配器选择Sequel。这是一个简短的未经测试的应用程序:

require 'sinatra'
require 'sequel'
require 'haml'

DB = Sequel.connect('sqlite://blog.db')
get '/' do
  @entries = DB[:posts].filter(live:true).order(:posted_on.desc).all
  haml 'home' # finds 'views/home.haml' and makes a string
end

get '/:postname' do
  @post = DB[:posts][short: params[:postname]]
  haml 'post'
end

主页.haml

- # this will be wrapped in layout.haml if you have one
%h1 My Posts
%p Welcome to my site, I hope you like it.
#posts
  - @entries.each do |post|
    %h2{id:post[:short]}
      %a{href:post[:short]}= post[:title]
    %p= post[:overview]

post.haml

%h1= @post[:title]
%p#overview= @post[:overview]
 #contents= @post[:html]

Sinatra、Sequel 或 Haml 的完整介绍超出了 Stack Overflow 的范围。希望这能让你开始。

于 2012-02-01T07:31:33.003 回答
1

如果您不需要http协议,我建议您使用模板语言,例如haml

require "rubygems"
require "haml"

template = Haml::Engine.new(<<-EOD)
%table
  - vs.each do |v|
    %tr
      %td= v
EOD
template.render(Object.new, :vs => ["a", "b", "c"])
#=> "<table>\n  <tr>\n    <td>a</td>\n  </tr>\n  <tr>\n    <td>b</td>\n  </tr>\n  <tr>\n    <td>c</td>\n  </tr>\n</table>\n" 
于 2012-01-31T21:48:50.660 回答