パパエンジニアのアウトプット帳

30歳に突入した1児のパパエンジニアのブログ

Railsアプリを型チェックできるようにSteepに入門してみた

今年も残り少なくなってきて、そういえばRailsアプリに型チェックを導入してみたいなーと思っていたのを思い出したのでSteepに入門してみた。 RailsアプリへのSteep導入は神速さんのブログがすごく丁寧だったのでそれを参考にしてやった sinsoku.hatenablog.…

ActiveJob::TestHelperでセットされるTestAdapterを無効にしたい場合

下記のように ActiveJob::TestHelperをincludeしているとqueue_adapterが強制的にTestAdapterになります。 [spec/rails_helper.rb] RSpec.configure do |config| config.include ActiveJob::TestHelper end RSpecのJobのテストとかを書く分には便利なアサー…

RailsでPostgreSQLのVIEW定義を管理する

初めてちゃんとPostgreSQLのVIEWを使うので、Railsで使う場合の調査。 下記のgemを利用するのが定番みたい。 github.com このgem使うと何が嬉しいのか RailsガイドにもCREATE VIEWする方法が書かれてる。 railsguides.jp gem利用しないとCREATE VIEWする生SQ…

AWS Batch(AmazonLinux1)のボリュームサイズを増やす時はDockerのストレージ制限もお忘れなく

マネージド型コンピューティング環境(EC2)(AmazonLinux1)のAWS Batchのお話です。 AWS BatchでNo space left on deviceでエラーになった場合はディスク容量を増やせばとりあえずはいいのですが、EBSのサイズアップだけでなくDockerのストレージ制限もサイズ…

プライベートなS3バケットにあるファイルをCloudFront経由でアクセスできるようにする

なにかの度にやることがあるけど、スッと設定できずに403エラーになるのでメモで残しておく まず、下記にあるように静的ウェブサイトホスティングとは設定が異なるので見るページ間違えないこと CloudFront ディストリビューションを使用して Amazon S3 バケ…

RailsでenumerizeのカラムをSTIとして使う

これのenumerize版。 qiita.com 既存のモデルを分けたかったので、参考にさせてもらった。 すでにenumerizeの利用しているカラムをSTIのカラムにしたかったので、inheritance_columnでのSTIのデフォルトカラム(type)を変更もした。 class Payment < ActiveRe…

Goでの日付変換

最近やっとのことGoを真面目にやりだしてTwitterのAPIで取得したtweet.CreatedAtの日時文字列をISO8601形式の文字列にしたいなと思ったけど、time.parseのformatの指定とかが独特で少しハマった。 Rubyとかだと%Y/%m/%dとかでformat指定するけど、Goだと2006…

VPCピアリング越しのAurora(PostgreSQL)にRedshiftのFederated Queryで接続する

お仕事でRedshiftのFederated Queryを試してみたのでそのメモ。 ネットで見つかるやつは大体パブリックなネットワークとか同じVPC内のやつなので、仕事の環境のようにVPCが分かれている環境の場合に繋ぐのに苦労した。 やることはほぼ参考記事と同じだけど、…

MacでChromecastでデスクトップをキャストができず、システム環境設定>セキュリティとプライバシーの画面収録でChromeのアプリが表示されていない場合

職場でChromecastが使えるようになったけど、なぜかデスクトップをキャストができなかった(タブをキャストはできる) 色々ググってもシステム環境設定のプライバシー >画面収録でChromeにチェック付けてあげればいいですよーって書いてあるが、こっちとらそ…

Alpine Linuxにmecabをインストールする

Alpine LinuxのDockerコンテナにmecabを入れる必要があったので参考にしたやつメモ。 docker-mecab/Dockerfile at master · smizy/docker-mecab · GitHub Python/NLP/機械学習のためのDocker環境構築 - Qiita mecabはgoogle driveからwgetするパターンが多い…

solidusの画像アップロードができない時

solidusを触り始めら商品の画像アップロードがspoofed_media_typeエラーでできなかった。 でコンソールには下記のようなログが出ていてfileコマンドを実行しようとしているけどないのでcontent type取れずにエラーになっているっぽい。 [paperclip] Content …

embulk-output-bigqueryでパーティションテーブルを扱うときのアレコレ

お仕事でEmbulkを使ってBigQueryにデータインポートやることがあって、その時にパーティションテーブルに対してアレコレやるときに色々検証したのでメモ。 Embulkはv0.9.23でembulk-output-bigqueryはv0.6.4です。 github.com パーティションの利用方法 embu…

input[type=email]はブラウザによって挙動が異なる

お仕事でinput[type=email]に悩まされたのでメモ。 input[type=email]とは まあ、説明は説明は不要ですかね。 メールアドレスの入力でいい感じに入力形式のチェックもブラウザでしてくれるやつです。 developer.mozilla.org とまあ、ブラウザ側でのお手軽な…

actを使うとGithub Actionsのワークフロー定義をローカルで確認しながらやれて便利

お仕事でGithub Actionsを利用してプルリクのラベル自動付与するworkflowを定義するときに、ローカルである程度確認作業とかできないかなーと思っていたらactを思い出したので使ってみました。 actとは github.com Dockerを利用して.github/workflowsに沿っ…

postgresqlのクライアントだけをMacにインストールする

下記のstackoverflowの通りなんだけど、Mac新しくなると忘れそうなのでメモ。 Docker使うようになってホスト側にPostgresqlとか入れなくなったので、クライアントだけ欲しい感じです。 stackoverflow.com $ brew install libpq $ vi ~/.zshrc ---PATHに追加-…

AWS Elasticsearch Serviceの監視項目

初めてElasticsearchを実運用するので監視は何を見ればいいのかと思ったのですが、調べてみると公式ドキュメントにあるのでそれを参照するだけです。はい。 https://docs.aws.amazon.com/ja_jp/elasticsearch-service/latest/developerguide/cloudwatch-alar…

AWS EBSのボリュームサイズ変更をやった

やったと言っても、クラメソさんの下記のブログの通りにやっただけなんですねどねっていう。 dev.classmethod.jp 今回の対象はAmazonLinux1だったので下記のコマンドを実行した。 # 現状の確認 $ df -h $ lsblk # パーミッション拡張 $ sudo growpart /dev/x…

TypescriptをES2015+なJSにコンパイルするtsconfig.json

下記のようなtsconfig.jsonにしたらES2015+(今回の場合は正しくはES2016なんだけど)なjavascriptにコンパイルできたっぽい。(Typescript入門したてで自信ない moduleのコメントにES6なんてのはないけど、ドキュメントには書いてある。 試しにmoduleをes20…

プライベートなVPC内のEC2にSession Managerで接続する

Internet GatewayすらアタッチされていないVPCにSession Managerで接続するにはVPCエンドポイントを設定すればいいんだろうなとは思っていたが実際にはやったことないので試してみた。 セットアップは公式に書いてある通り大体やればいいのだけど、それでで…

ALBのログをAthenaで検索するために

Athenaのコンソールでテーブル定義ポチポチするの面倒だなーと思ったら公式ドキュメントにそのまま実行できるCREATE TABLEコマンドがあった。 docs.aws.amazon.com DATABASEも分けておきたいので、CREATE DATABASE文も一緒に書いておく。 あとデフォルトだと…

RailsのActiveRecord保存時にtimestamp(created_at,updated_at)が自動更新されないようにする

結論は下記なんだけど。 # Rails5以上 book.save(touch: false) # Rails4以下 ActiveRecord::Base.record_timestamps = false どうも古くからRailsをやっているからかsaveのtouchオプションが全く出てこず、record_timestampsの方でゴニョゴニョしたので下記…

Sorbetを使ってみようとするも速攻エラーで困った

話題のSorbetを使ってみようと、下記のSTEP1から始めたが速攻Verify installationで詰まったという。。 sorbet.org bundle exec srb typecheck -e 'puts "Hello, world!"'がどうしてもエラーになり実行出来ずに??と思っていたが、ツイートしたように解決し…

マネージャーとして自分の役割を考える

現在の会社で初めてマネージャーという役割になったが、役割の範囲が分からないので悶々としていたら下記のツイートを見つけました。 エンジニアリングマネージャーのジョブディスクリプションを定義したいと思ったら、次の画像のどこを求めているのかを明記…

terraformでaws_rds_clusterのcreateに2hかかるとtimeoutする

スナップショットからの復元の場合はクラスター作成に時間がかかるのだが、terraformでやってると2hでポーリングがタイムアウトするという。 aws_rds_cluster.aurora57: Error waiting for RDS Cluster state to be "available": timeout while waiting for …

Serverless Framework for Ruby - 複数関数作成編

下記の続き。今回は複数のファンクションを定義してみようと思う。 masaru-tech.hateblo.jp serverless.ymlの書き方からなんとなく複数ファンクションの書き方は予想がつく。 handerにファイル名.アクション名だろうと。 $ vi serverless.yml --- functions:…

Auroraのスナップショット復元時間はどれくらいかかるのだろうか?

ちょっとスナップショットからAuroraを復元する必要があったので、試しにやってみたら時間がかかった。 なんでこんなに時間かかるのだろう?と調べているとまさにドンピシャな実験をされている方がいた(圧倒的感謝) blog.father.gedow.net だいたいこの検…

TerraformでAurora2を立てる時のengine、engine_versionの指定

TerraformでAurora2のRDSを立てようと思ったらengine_versionになに指定したらいいか分からなかったのでメモ。 create-db-cluster — AWS CLI 1.16.103 Command Reference --engine (string) The name of the database engine to be used for this DB cluster…

Serverless Framework for Rubyをやってみる

AWS LambdaにRubyがきたので、Lambdaをより使う意欲が出てきた。(今まではpythonがほとんどでたまにnodejsで書いていた) そこで、前からLambdaやるならServerless/Apexのどちらかかなーと思っていたのでまずはServerless Frameworkを試してみる。 serverle…

has_oneのbuildはhas_manyと違う

Railsでhas_many :commentsみないな時にbuildするときは@blog.comments.buildだけど、has_oneの場合は.buildはnilエラーになる。 has_oneの場合はbuild_xxxというメソッドがあるので、そちらを使うと言うことを今頃になって知った。 class Blog has_one :sta…

RubyMineでSlim+Vue.jsを利用していると開けなくなるファイルの条件が判明した

環境 macOS High Sierra 10.13.6 RubyMine 2018.2.4 Build #RM-182.4505.55, built on October 8, 2018 今の会社になってからRubyMineも会社で購入してくれるのでバリバリ使っているのですが、ジョインした時からいくつかのslimファイルがRubyMineで開けない…