Google Books API | PostgreSQL の使い方
公式リファレンス
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=...'
gemの書き方
gem 'googlebooks', '~> 0.0.9'
Rails PostgresSQLを使う
qiita.comrails s した時のエラーメッセージ
Action Controller: Exception caught PG::ConnectionBad ~~
- 先にpostgresqlを起動すること
以下参考サイトの引用
起動&接続
以下で実行してみる。
$ 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.
コンフィグファイルを指定していないのが原因
postgresql を brew で install したときに、
/usr/local/var/postgres
が作成されている。これを環境変数にセットしておく。
~/.bashrc に以下を追加。 export PGDATA='/usr/local/var/postgres'
もちろん $ source ~/.bashrc する。
今度は起動できる
$ postgres
- その後Databaseを作成すること
# データベースを作成 rails db:create
Postgresqlの操作方法
- postgresqlのデータベースへの接続
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にユーザを追加して、ログインする
ユーザを指定してデータベースログインする
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名
bootstrapまとめ
Bootstrapの導入と基本的な使い方
Ruby+WebAPI TrelloでWebAPIの使い方を学ぶ 1 -API keyの保護-
Ruby + WebAPIをいうことで、TrelloAPIを使ってTODOアプリを使ってみる
www.youtube.com
Rails RubyでAPI作成 ~JSON形式のデータをcurlでPOSTできないとき~
curlでJSON形式のデータをPOSTできない.permitの問題だった
これコケたのでメモ。絶対忘れる。
$ rails new api-project --api $ rails g scaffold users
- controllerにJSONデータを受けた時の返し方が書かれてる
class UsersController < ApplicationController before_action :set_user, only: [:show, :update, :destroy] # GET /users def index @users = User.all render json: @users end # GET /users/1 def show render json: @user end # POST /users def create @user = User.new(user_params) if @user.save render json: @user, status: :created, location: @user else render json: @user.errors, status: :unprocessable_entity end end ~~~ private ~~~ # Only allow a trusted parameter "white list" through. def user_params params.fetch(:user, {}) end end
- curl -X POST http://localhost:3000/users -d 'user[name]=meru'
下記のエラー
Error:ActiveModel::ForbiddenAttributesError
POSTできないやんけ!!!
Error:ActiveModel::ForbiddenAttributesError
原因- Rails4のコア機能であるStrong Parametersの仕様による「検証通ってないよー」というエラーだそうです。
- パラメータに許可を与えなくてはいけない
strong parameterのパラメータに.permitメソッドを追加すればいい
変更前
class UsersController < ApplicationController before_action :set_user, only: [:show, :update, :destroy] ~ # POST /users def create @user = User.new(user_params) if @user.save render json: @user, status: :created, location: @user else render json: @user.errors, status: :unprocessable_entity end end ~~~ private ~~~ # ここが問題だった def user_params params.fetch(:user, {}) end end
変更後
class UsersController < ApplicationController before_action :set_user, only: [:show, :update, :destroy] ~ # POST /users def create @user = User.new(user_params) if @user.save render json: @user, status: :created, location: @user else render json: @user.errors, status: :unprocessable_entity end end ~~~ private ~~~ # createアクションに渡すstrong_parameterに許可.permitを与える def user_params params.fetch(:user, {}).permit(:users, :name, :string) end end
進捗出たな
Rails Web本棚制作 ~AWS:S3の利用~
AWSの使い方、Amazonアソシエイトアカウントの作成など、
外部サービスの利用開始までの一連の流れがめんどい。
Amazon APIの利用 が死ぬほどめんどくさくて、詰んだ
利用申請中Amazon APIを利用するのに、必要な認証情報
ASSOCIATE_TAG = [AmazonAPIのアソシエイトタグ] AWS_ACCESS_KEY_ID = [AmazonAPIのアクセスキー] AWS_SECRET_KEY = [AmazonAPIのシークレットキー]
Amazonアソシエイトからの認可待ってるのめんどいし、
Google Books APIに鞍替えしようかな
Rails + Vue.js
次の3段階でVue.jsを使えるようにする【Rails】rails webpacker:install に失敗する場合の対処法 - Qiita
- 2. Vue.jsとRailsでTODOアプリを作る
- 3. Vue.jsを使ってホームページを3時間で爆速公開
やっと解決した:バージョン指定してyarnをインストール
古いyarn入れてもどうにもならんかったqiita.com
システムからyarnを削除する
②平然とyarnのバージョンが帰ってきた場合yarnのアンインストールが完了していなさそうです。
困ってしまったのでyarnの公式からもリンクされている下記issueを参考にして進めました。
https://github.com/yarnpkg/yarn/issues/1139#issuecomment-441168002
まず先ほど$which yarnで調べた場所を見にいきます。そこに入っている yarn と yarnpkg というファイルを削除してみます。
$rm -f yarnpkg
$rm -f yarn
これで$yarn --versionしてもコマンドが通らなくなりました。
yarnが通らなくなったことが確認できたので上記の2ファイルが入っていたディレクトリを削除します。
私の場合 .yarnにyarn と yarnpkgが入っていたので削除します。
$rm -rf .yarn
次に、かつてyarnをインストールするときにダウンロードしたであろう、yarn.repoを削除します。
$cd /etc/yum.repos.d/
上記フォルダの中にyarn.repoが入っていたのでこれを削除しました。
$sudo rm -f yarn.repo
Rails Web本棚制作 ~Ruby, Railsのバージョン指定~
Ruby 2.5.1 Rails 5.2.2で 開発したい
Bundlerというgemを使って、ライブラリの依存関係もまとめて管理
- これでいける
$ bundle exec rails s 起動しても、アクセスエラーとなる場合
- Postgresql がうまく起動できていならしい
$ brew install postgresql
$ brew link postgresql
$ pg_ctl -D /usr/local/var/postgres start
こちらの最後のコマンドを忘れていたみたいです。起動はできました!
みなさん、ありがとうございます。
Ruby - Postgresqlに接続ができません|teratail
加えてデータベースが無いとのエラーが出る
ActiveRecord::NoDatabaseError
$ rails db:create
で作ってあげれば解決