0

Ruby から Postgres データベースの存在を確認する必要があることに気付き、最終的に次の (醜い) コードになりました。

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

私の懸念は、これが水密ではないだけでなく、この種のことを行う機能がすでにそこにあるに違いないということです.

これをきれいに行うためにRubyに存在する関数を誰か教えてもらえますか?

4

1 に答える 1

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}クエリに追加して空の結果セットをチェックすることで、おそらくこれをより効率的にすることができます。

于 2013-08-29T22:37:16.947 に答える