Hitsuji_monのブログ~ 村上春樹のあれ ~

文学好きな組み込み系エンジニア

Google Books API | PostgreSQL の使い方

公式リファレンス

developers.google.com

Rubyでの書き方(ラッパー):Google Books
サンプルコード

# .rb
require 'googlebooks' # unless you're using Bundler

books = GoogleBooks.search('The Great Gatsby')
first_book = books.first

first_book.authors #=> 'F. Scott Fitzgerald'
first_book.isbn #=> '9781443411080'
first_book.image_link(:zoom => 6) #=> 'http://bks2.books.google.com/books?id=...'

www.rubydoc.info


rubygems.org

gemの書き方

gem 'googlebooks', '~> 0.0.9'

解説
Google Books APIの解説
vintage.ne.jp

Rails PostgresSQLを使う

qiita.com

qiita.com

rails s した時のエラーメッセージ

Action Controller: Exception caught
PG::ConnectionBad
~~

以下参考サイトの引用


起動&接続
以下で実行してみる。

$ postgres

エラーになるはず。

postgres does not know where to find the server configuration file.
You must specify the --config-file or -D invocation option or set the PGDATA environment variable.

コンフィグファイルを指定していないのが原因

postgresqlbrew で install したときに、
/usr/local/var/postgres
が作成されている。これを環境変数にセットしておく。

~/.bashrc に以下を追加。

export PGDATA='/usr/local/var/postgres'

もちろん $ source ~/.bashrc する。

今度は起動できる

$ postgres

  • その後Databaseを作成すること
# データベースを作成
rails db:create

Postgresqlの操作方法

qiita.com
qiita.com

bundle exec rails db
  • データベース一覧を表示
データベース名=# \l
  • ユーザ一覧を表示
データベース名=# \du
  • テーブル一覧を表示
データベース名=# \d
  • テーブル定義を確認する
データベース名=# \d groups
  • データベースへの接続を終了
データベース名=# \q

Postgresqlのユーザへのロールの与え方

  • データベースを作成し、そのデータベース用の管理ユーザを設定する
  • 新規作成したユーザにロールを与えることができない

作成したユーザにSuperuser権限(ロール)を与えたい

データベース名_development=> ALTER ROLE "データベース名" WITH Superuser;
ERROR:  must be superuser to alter superusers

作成したユーザにスーパユーザ権限を与えないといけない
  • postgresqlにrootユーザでログインするのってどうやるの?
psql -l //データベース名を確認
psql postgres // rootでpostgreSQLにログイン

ALTER ROLE "データベース名" WITH Superuser;

できた!!

Postgresqlにユーザを追加して、ログインする

qiita.com

ユーザを指定してデータベースログインする

psql -U role_sample

DBを指定して、指定ユーザで再度ログイン

$ psql -U role_sample -d postgres
$ psql -U ユーザ名(ロール) -d データベース名

データベースでのログインユーザを確認する

  • データベース情報を確認
データベース名=# \c データベース名

Postgresql のデータベースの削除方法

 
qiita.com

# DROP DATABASE データベース名 だと以下のエラー
cannot drop the currently open database 


PosgreSQLで強制的にデータベースを削除する方法

psql -l //データベース名を確認
psql postgres //postgreSQLにログイン
\du //ユーザーと権限を確認

ps aux | grep 消したいDB名 // 消したいDB名のプロセスID(数字)を確認
sudo kill プロセスID
//以下例
sudo kill 45912
# postgresqlだとエラーだったので、以下は権限ユーザに書き換え
dropdb -U postgres(もしくは消す権限のもったユーザー) 消したいDB名