ECのウェブ担当者のメモ

ECサイトを運営管理している、WEB担当プログラマのメモ

スポンサーリンク

Rails の graphql を サブディレクトリのパスで運用する

f:id:jun9632:20220113220705p:plain

/api/graphql とか /admin/graphql とか /api/graphiql とか

のパスでgraphqlするための router.rbの設定です。

Rails.application.routes.draw do
  namespace :api do
    if Rails.env.development?
      mount GraphiQL::Rails::Engine, at: '/graphiql', graphql_path: '/api/graphql'
    end

    post '/graphql', to: 'graphql#execute'
  end
end

コントローラーも下記においています。

app/controllers/api/graphql_controller.rb

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

RDS Proxy が PostgreSQL 12 のサポートを開始したらしい

f:id:jun9632:20211214214520p:plain

RDS Proxy が PostgreSQL 12 のサポートを開始したらしいです。

https://aws.amazon.com/jp/about-aws/whats-new/2021/11/amazon-rds-proxy-supports-postgresql-major-version-12/

RDS のバージョン上げすぎて RDS Proxyに対応していないという状況が続いていましたが、 どうやらPostgre12 もサポート対象になったようです。

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

AWS CLIを使って ファイル名指定してS3内のファイルを削除する

f:id:jun9632:20210610140430p:plain

実行するコマンドは下記のようになります

aws s3 rm --recursive s3://my.bucket.com/logs/ --exclude '*' --include 'log-*'

s3://my.bucket.com/logs/

my.bucket.com バケットの logs/ ディレクトリを対象にする。

--recursive

指定のディレクトリ内またはプレフィックス内のすべてのファイルやオブジェクトに対してコマンドを実行する。

--exclude '*'

いったん全部除外

--include 'log-*'

log- で始まるファイルを削除対象とする。

補足

削除確認するときは --dryrun をつけてから実行すると安全です。

aws s3 rm --recursive s3://my.bucket.com/logs/ --exclude '*' --include 'log-*' --dryrun

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com

AWS ELBでメンテナンス(503)画面を表示する

f:id:jun9632:20210527103255p:plain

awsのelbだけで、メンテナンス画面を表示させる方法です。

elbのルートの条件は下記のようにしています。

f:id:jun9632:20210527103658p:plain

条件やレスポンスなど 適宜調整してください。

パス

 *

レスポンスコード

503

Content-Type

text/html

レスポンス本文

<!DOCTYPE html>
<html>
<head>
  <title>メンテナンス作業中です。(503)</title>
  <meta content="width=device-width, initial-scale=1.0" name="viewport" />
  <meta charset="UTF-8" />
  <style>
    .page {
        margin-top: 60px;
    }
    .tit_box.center {
      text-align: center;
    }
    .page .page_inner {
      max-width: 640px;
      text-align: center;
      margin: 0 auto;
    }
  </style>
</head>
<article class="page">

  <div class="tit_box center">
    <img src="https://placehold.jp/60/666666/ffffff/300x300.png?text=503%0A" >
  </div>
  <div class="tit_box center">
    <h1 class="page-title">503 Service Unavailable<br>ただいま、メンテナンス作業中です</h1>
  </div>

  <div class="page_inner">
    <p>
      メンテナンス作業中のため、ただいまサービスをご利用頂くことができません。<br>
      ご迷惑をおかけして大変申し訳ありませんが、終了までしばらくおまちください。<br>
    </p>
  </div>
</article>

<body>
</body>
</html>

上記のようなルートを作っておき、 必要な時に、条件の一番先頭に移動すると、いつでもメンテナンス画面に変更することができます。

f:id:jun9632:20210527103926p:plain

関連記事

marketing-web.hatenablog.com

Local開発用に スタンドアローン版 graphql playground を インストールして使う

f:id:jun9632:20210514104351p:plain

aws Lambda の serverless で graphqlのAPIサーバーを開発しているけど、 コンソールからこんな感じのコマンド叩くのに辛みを感じできたので

curl http://localhost:3000/local/graphql  -X POST -H "Content-Type:application/json" -d '{"query": "query {user {id, name}}"}'

graphql-playground とか graphiql を使いたい!

最初は、Lambda に一緒にのせてホスティングできないかなとも考えましたが、 もろもろ大変そうなので graphql-playground のスタンドアローン版を使うことにしました。

インストール

早速インストールですが、 インストーラー(.dmg)をこちらのページからをダウンロードしてインストールしました。

www.electronjs.org

起動

今回ローカル環境として、serverless offline プラグインで起動しています。

github.com

下記で起動

sls offline start -s local

すると

http://localhost:3000/local/graphql

でアクセスできるように設定しています。

設定

graphql-playground のアプリを起動すると、 Localのフォルダを指定するか、エンドポイントを指定するかをきかれるので 先程起動したローカル環境のエンドポイントを指定して Openします。

f:id:jun9632:20210514094353p:plain

設定はほとんどなくこれだけで使えるようになります。

f:id:jun9632:20210514102646p:plain

AWSにデプロイ後の、APIゲートウェイの エンドポイントに設定を変えるだけでも使えるので フロント側の開発が別の人でも、簡単に共有できると思います

関連記事

marketing-web.hatenablog.com

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

初めてのGraphQL ―Webサービスを作って学ぶ新世代API

homebrewで入れたnodenvのバージョンアップ

f:id:jun9632:20210513141625p:plain

nodenv で

nodenv install -l

したけど、一覧に該当の新バージョンがないので、nodenvをバージョンアップしたいときの話

下記を実行する!

brew upgrade nodenv node-build

これで無事に最新バージョンが一覧で確認できました。

関連記事

marketing-web.hatenablog.com

Node.jsデザインパターン 第2版

Node.jsデザインパターン 第2版

brew update でエラー

f:id:jun9632:20210513140717p:plain

brew updateしたら下記のようなエラーが発生

Error:
  homebrew-core is a shallow clone.
  homebrew-cask is a shallow clone.
To `brew update`, first run:
  git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
  git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow
This restriction has been made on GitHub's request because updating shallow
clones is an extremely expensive operation due to the tree layout and traffic of
Homebrew/homebrew-core and Homebrew/homebrew-cask. We don't do this for you
automatically to avoid repeatedly performing an expensive unshallow operation in
CI systems (which should instead be fixed to not use shallow clones). Sorry for
the inconvenience!

メッセージにあるとおり下記をそれぞれ実行して解決しました。

  git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-core fetch --unshallow
  git -C /usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask fetch --unshallow

関連記事

marketing-web.hatenablog.com

marketing-web.hatenablog.com