我想编写一个脚本,从本地 SQLite3 数据库中检索数据,然后将该数据格式化为 HTML 文件。
我不确定要使用什么“工具”,但我想我需要 sqlite3 gem,然后我正在考虑将 Sinatra 用于 HTML 位。
更新:我不打算创建 Web 服务。我只想运行一个以 sqlite3 数据库作为输入的 Ruby 脚本并提取一组特定的数据,然后我想将其格式化并输出为单个文件。我提到了 HTML,但是任何像 markdown 这样的东西都会很棒,因为它可以以你想要的任何格式导出。
我想编写一个脚本,从本地 SQLite3 数据库中检索数据,然后将该数据格式化为 HTML 文件。
我不确定要使用什么“工具”,但我想我需要 sqlite3 gem,然后我正在考虑将 Sinatra 用于 HTML 位。
更新:我不打算创建 Web 服务。我只想运行一个以 sqlite3 数据库作为输入的 Ruby 脚本并提取一组特定的数据,然后我想将其格式化并输出为单个文件。我提到了 HTML,但是任何像 markdown 这样的东西都会很棒,因为它可以以你想要的任何格式导出。
我喜欢您为 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 的范围。希望这能让你开始。
如果您不需要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"