我发现自己需要从Ruby检查Postgres数据库是否存在,并最终得到以下(丑陋)代码:
def database_exists
`sudo su postgres -c 'psql -l | grep #{database_name} | wc -l'`.strip.to_i > 0
end
我担心的是,这不仅不防水,而且必须有一种功能来做这种事情。
任何人都可以让我知道Ruby中存在哪些功能可以干净利落地完成这项工作吗?
答案 0 :(得分:1)
这可能不如您的代码有效,并且需要使用pg
库(https://github.com/ged/ruby-pg):
require 'pg'
def database_exists?(database_name)
conn = PG.connect(:dbname => 'postgres')
res = conn.exec("SELECT datname FROM pg_database").values.flatten
res.include?(database_name)
end
您可以通过向查询添加where datname = #{database_name}
并检查空结果集来提高效率。