タケユー・ウェブ日報

Ruby on Rails や Flutter といったWeb・モバイルアプリ技術を武器にお客様のビジネス立ち上げを支援する、タケユー・ウェブ株式会社の技術ブログです。

2020-04-01から1ヶ月間の記事一覧

DockerCompose + PostgreSQL Replication

Railsの複数データベース機能を開発環境でも有効にしたかった docker-compose up でセットアップから起動まで一発で動くようにしたい Docker Compose docker-compose.yml version: "3" volumes: pg_primary_data: driver: local pg_readonly_data: driver: l…

Ruby で Firebase User を作成

動機 Firebase Auth を使ったWebアプリの Rails System Spec を書きたい フロントエンドで Firebase JavaScript SDK を使っているため、バックエンドでのstubでは書けない サンプルコード(一部抜粋) Google::Apis::IdentitytoolkitV3::IdentityToolkitServ…

rspec で Firebase ID Token を stub

class SessionsController < ApplicationController def create id_token = params.required(:id_token) user = User.from_firebase(id_token) # (snip) end end class User < ApplicationRecord CIRTIFICATE_URL = 'https://www.googleapis.com/robot/v1/me…

rspec で ActionMailer の deliver_later のジョブはすぐに処理する

ActiveJob へのキューインの spec で示したように ActiveJob::Base.queue_adapter = :test を使うと、 perform_later のジョブはキューに溜まるようになる。 しかし、 ActionMailer の deliver_later で非同期送信を使っている場合にまでキューインされてし…

ActiveJob へのキューインの spec

まとめ ActiveJob::Base.queue_adapter = :test を使うと、 ActiveJob::Base.queue_adapter.enqueued_jobs にジョブが入る have_enqueued_job マッチャーでジョブが入っていることを expect する サンプルコード it 'enqueues PaymentIntentSuccessedJob' do…

aws-sdk-ruby で AWS CodeCommit の SSH キーを登録する

まとめ SSHキーペア生成は OpenSSL::PKey::RSA#generate を使う アップロードは Aws::IAM::Client#upload_ssh_public_key を使う 事の起こり 開発中のWebシステムでは、必要に応じてAWS上のリソースを生成しています。 CodeCommitへのコミットに使用するIAM…

WSLのバックアップとインポート

まとめ wsl --export と wsl --import インポートした後はデフォルトのユーザーが root になってしまうので、設定してやる必要がある .bat を書けばバックアップをとってからシャットダウン、もできる forest.watch.impress.co.jp 事の起こり WSL2をゴリゴリ…

AWS SDK for Ruby で EC2 ImageBuilder のパイプラインを作成する

まとめ Aws::Imagebuilder::Client クラスを使う 事の起こり EC2 ImageBuilder でゴールデンAMIを作成している EC2 ImageBuilder のコンポーネントを変更する際、それを使うようにパイプラインを更新するには、コンポーネント、レシピ、パイプラインとそれぞ…

ApplicationLoadBalancer で Basic認証

まとめ リスナールールで Authorization ヘッダーをチェックする Lambda で WWW-Authenticate: Basic を返す アプリケーションの実装なしに簡易認証できて便利 事の起こり ALB をフロントに置いたWebサイト 全体に認証をかけたい サーバー側コード等の変更は…

特定のActionで読み込み専用のレプリカを使う

ActiveRecord::Base.connected_to で包む class PostsController < ApplicationController around_action :set_reading_role, only: %i[index show] def index @posts = Post.all # :reading end def show @post = Post.find(params[:id]) @post.touch # => …

ACMでCAAエラーが発生したとき

まとめ CAAレコードが1つでも指定されている場合、指定にない認証局によるSSLサーバ証明書発行は失敗する CAAレコードに amazon.com が必要 事の起こり AWS Certificate Manager を使い、クライアント指定のドメインのサブドメインで Amazon 発行のSSLサー…

CodePipeline のアクションで AWS Lambda を実行する

まとめ CodePipeline のアクションとして AWS Lambda を実行すれば、いろいろなことができる たとえばRailsのdb:migrateをデプロイ時に自動設定したり、ECSスケジュールタスクを登録したり Lambdaのタスクロールを適切に指定すればAWSアクセスキーなしにAWS …

Windows10標準の機能でVSCode(でなくてもよい)+マイク音声を録画する

まとめ Windows 10 の標準機能 GameBar を使うと、任意のアプリケーションを録画できる マイクからの音声を含めることができる 事の起こり タケユー・ウェブでは、お客様からの技術的な質問に対してお答えする顧問的な業務もあります。 その中でVSCodeを使っ…

EC2 ImageBuilder コンポーネントのデバッグ

まとめ Terminate instance on failure を false にしてもテスト用のインスタンスは殺される S3へのログ保存は絶対に有効にしろ ステップはなるべく小分けに 事の起こり EC2 ImageBuilder でゴールデンAMIを作っている ある日昨日まで成功してたテストをパス…