前人未踏の領域へ WEB・インフラ・プログラミング全般編

フロントエンド、バックエンド、インフラ、言語など、アプリ開発、IOT以外の記録

rbenv: Ruby3.2インストールエラー

内容 rbenv でruby 3.2.2をインストールしようとしたら以下のエラーが発生した。 $ rbenv install 3.2.2 To follow progress, use 'tail -f /tmp/ruby-build.20231021091520.5507.log' or pass --verbose Downloading ruby-3.2.2.tar.gz... -> https://cache…

Rails : bundle updateの前にdry-runしたい

課題 bundle updateコマンドを叩いてライブラリを更新したらエラーで動かなくなったので少しずつ進めることに。 じゃあ少しずつ進めるために、どのライブラリに新しいバージョンがあるのかを知るにはどうすればよいか。 対応 bundle outdated を使うと古くな…

Rails: "7月15日".to_date

内容 とあるエラー調査をしていたところ、入力された日付とは異なる日付で取り込まれている問題が発生していた。 入力されたデータは 7月15日 。指定した日付フォーマットとは異なる、何年かも分からない日本語書式である。 これを受け取ったコードではだい…

Rails: 条件付きfind

内容 特定のIDでテーブルからfind()を使ってレコード取得したいが、ついでに条件も指定したい。 対応 Whereを先に書いて、最後にfindをつける。 仮にBooksとテーブルがあり、statusがactiveなものだけ対象にしたい場合は以下のようになる。 book = Books.whe…

Stripe: API実行レシピ

RailsコンソールおよびRails内でコピペして使う用の実例サンプル集。 カスタマー カスタマーを取得する cus = Stripe::Customer.retrieve("cus_XxwqzgXcn1XXsk") サブスクリプション付き cus = Stripe::Customer.retrieve("cus_XxwqzgXcn1XXsk", {expand:'su…

Apple Silicon版のMacで古いHomebrewを操作する

課題 M1 Macを購入。古いMacからデータを移行したものの、Apple Silicon版の M1 MacではHomebrewのインストール先が /opt/homebrew に変更になっている。旧MacでインストールしたHomebrew内のライブラリにアクセスするにはどうすればよいか。 対応 単にbrew…

Stripe:任意のWebhookにイベントを再送する

課題 ローカル環境にて、StripeのWebhookが発生する処理をWebhookを無効化している状態で実行してしまった。 webhookが動作してないと必要なデータが更新されない。どうすればよいか。 対応 15日間以内ならイベント詳細画面から「Webhook の試行」再送ボタン…

CSS:参考記事一覧

CSS

CSSで目的の操作をするときに何度もググらずにベストな参考サイトに遷移するための一覧が欲しいなと思ったので 良いなと思ったサイトや記事をまとめておくことにする。 まだ始めたばかりなので何もコンテンツが無いけど、随時更新を予定。 全体 developer.mo…

AWS:IAMユーザーにMFA更新権限を追加する

AWSのドキュメント迷宮すぎてマジ苦手。 課題 AWSにIAMユーザーを追加したがMFA認証の設定権限がないと言われた。どうすればよいか。 対応 既存のポリシー名をMFAで検索しても出てこないのでMFAをサクッと可能にするデフォルトポリシーがないっぽい。 なので…

Rails: Cronジョブ実行時にExecJSでエラー

課題 RailsのJobを実行する処理をcrontabに記述したがExecJSでJavaScriptの実行環境が見つからないとエラーになる。 bundler: failed to load command: bin/rails (bin/rails) ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https:…

GitHub チームアカウントのシート数を4以下にする

GitHubのチームアカウントは5アカウントからの購入となっており、実際に利用するユーザー数がそれに満たない場合でも 最低5ユーザー分の料金がかかる。 ......と思っていたが違った。 Settings の Billing から GitHub Team のEditボタンを押下し、Remove Se…

Rails destroyがdependent: :destroy から呼ばれたかどうかを知るには

課題 あるテーブルがすべて削除されたタイミングで親のテーブルを削除したい。 これを子テーブルのモデル側でやろうとすると、そのモデルの after_destroy で、belongs_to 関連を持つ親テーブルを 削除することになる。 これは普通に上手くいくが、楽観的排…

Vue.js プロパティの変更をデータに反映する

課題 Vuexでstateを管理していて、stateの変更によって 親コンポーネントで変更した内容を子コンポーネント(state未使用)に 反映したいが変更されたプロパティがデータに反映されなかった。どうすればよいか。 ちなみに親から渡されるプロパティはオブジェ…

Vue.js 強制的に再レンダリングする

課題 vuexのstateオブジェクトを更新したが画面に反映されない。 とりあえず現状のオブジェクトの内容で画面を更新したい。 注意 stateオブジェクトの更新が反映されなくなったら、まず最初にオブジェクトの構成が変わってしまっていることを 疑うべし。最初…

ActiveModel::Serializer::Null with Hash

課題 gemを追加したところ、以下のようなエラーが出るようになった Rendered ActiveModel::Serializer::Null with Hash 対応 何が原因でこの状態になるのか分からなかったが、どうやら追加したライブラリ内で使用している依存ライブラリの名前と こちらでCon…

Nginxの標準エラー画面をカスタマイズする

課題 Nginxにてベーシック認証でエラーになった場合のエラーページのHTMLを変更したい。どうすればよいか 対応 ベーシック認証でエラーになるとサーバーはエラーコード401を返す。なので401エラー時の処理を指定して あげればよい。 401.html を用意する 401…

database.ymlの環境変数が読み込まれない

課題 DBのパスワードを設定したが環境変数が読み込まれない。stagingだと問題ないがproductionでエラーになる。 production: <<: *staging database: hoge_production host: <%= ENV['DB_HOST'] %> password: <%= ENV['DB_PASS'] %> 原因 自動生成させて設定したproduction用のパスワードの先頭に # が含まれていたため(><) </:>…

rbenv設定

UbuntuにrbenvをインストールしてRubyを使えるようにしたい。 手順メモ。 インストール rbenv-installerを使う github.com $ wget -q https://github.com/rbenv/rbenv-installer/raw/master/bin/rbenv-installer -O- | bash PATHに .rbenv/bin を追加 $ echo…

Capistrano3: 環境変数を読み込んで使う

課題 Capistranoで環境変数を使用したい。deploy.rb の default_env などで割り当てることはできるが、パスワードなど情報はここで持ちたくなく、 普段使用している direnv の .envrc ファイルを使いたい 対応 (注)前提: capistrano-rbenvが設定済みであ…

CSS:ボックスの角にだけ色をつける

課題 CSSでボックスの左上にだけ色をつけたい 対応 linear-gradient を利用する。もともとはある角度で複数の色をグラデーションさせる機能だが、パラメータによってはくっきりと別れさせることもできる 色をつけたい位置によって直線の角度を変える 左上 13…

CSS display: flexにしたら内部コンテンツの一部のスタイルが反映されなくなった

課題 親の要素を display: flex に変更したところ、子要素に定義していた :hover とVueJsのclickイベントが発生しなくなった。 原因 子のdivタグに z-index: -1 が指定してあったため。 .data-area { z-index: -1; } 対応 作るサイトによると思うけど0にした…

CircleCI 2.0 セットアップはまり道

この記事について Rails + MySQLなプロジェクトをCircleCI上で動作させようとした際に遭遇したエラーの対応メモ。随時加筆、修正。都度必要な設定しか記載してないのでまるごとコピって使うようなことはできません。 CicleCIのconfig.ymlは2.1が最新なのだけ…

Rails whenever指定方法あれこれ

Wheneverとは Rails上でcronによる定期実行バッチの処理時間を管理するためのライブラリ。crontabに記述する内容をruby言語で書ける セットアップ $ gem install whenever $ bundle exec wheneverize . コマンド 用途 コマンド Cronを書き換えずに更新内容を…

ubuntuへのmysql2インストール時にエラーになる

課題 Railsの 5.2.4がリリースされたのでupdateしようとしたところ、mysql2のアップデートでエラーになった。 /usr/bin/ld: cannot find -lssl /usr/bin/ld: cannot find -lcrypto collect2: error: ld returned 1 exit status Makefile:260: recipe for tar…

RSpecで _before_last_saveのテストが上手く動作しない

課題 値が変更されていた場合にのみ実行されるようなテストを書いたが、FactoryBotでcreateしたオブジェクトに _before_last_saveにFactoryBotでセットしていない値がセットされていて、調べるとDBのデフォルト値だった。 原因 FactoryBotでcreateしたオブジ…

Nginx CORS対応で複数ドメインを許可する

課題 SPAサービスを作るにあたり、APIとWebでドメインが異なるのでCORS対応をしたい。 かつ検品環境なのでlocalホストからのアクセスも許可したい。 環境 nginx version: nginx/1.14.0 (Ubuntu) 対応 Access-Control-Allow-Origin に同時に複数のドメインを…

曜日付きで日付を表示する

課題 Rubyで現在の日付を曜日付きのJPフォーマット 2019年11月15日(金) で返したい。 どうするのがよいか。 結論 I18nにそのものが定義されてた。 I18n.l Date.today, format: :long => "2019年11月15日(金)" フォーマットは strftime に従っているので ja.y…

バリデーションを項目ごとに1つにしたい

課題 ある項目に対して数値チェックと存在チェックを行いたい。数値チェックがNGな時点で存在チェックを満たさないのは自明なので これをスキップしたい。どうするのが良いか。 対応 バリデーションがNGだった項目は errorsにaddされるので、その存在チェッ…

異なるカラム名のモデルに対するバリデーションをConcernで共通化したい

課題 バリデーションを共通化したい。Concernを使いたいがモデルごとに違う名前を割り当ててしまった。 カスタムバリデータは大げさなので使いたくない。どうすればよいか。 対応 ActiveRecordの has_attribute を使うと項目の有無をチェックしてくれるので…

RubyMineのRSpec実行時にテストが固まる

課題 Mac上のRubyMineからRSpecを実行しているが、config内のファイルやModelクラスのvalidationなどを編集すると テストを実行しても途中で止まってしまい、RubyMineを再起動しないとテストが実行できなくなった。 原因 springのリロードがうまく機能してい…

/* Responsive: yes */