检查Ruby / Rails中是否存在Postgres数据库

时间:2013-08-29 05:33:06

标签: ruby-on-rails ruby postgresql

我发现自己需要从Ruby检查Postgres数据库是否存在,并最终得到以下(丑陋)代码:

def database_exists        
  `sudo su postgres -c 'psql -l | grep #{database_name} | wc -l'`.strip.to_i > 0
end

我担心的是,这不仅不防水,而且必须有一种功能来做这种事情。

任何人都可以让我知道Ruby中存在哪些功能可以干净利落地完成这项工作吗?

1 个答案:

答案 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}并检查空结果集来提高效率。