カクカクしかじか

技術的なアレコレ

2019-01-01から1年間の記事一覧

git checkout - がめっちゃ便利

Git

結論 git checkout - で一つ前に操作したブランチに戻れて便利! (知らなかった...) # 最初にいたブランチ ~/w/taskleaf (master|✔) $ # 移動する ~/w/taskleaf (master|✔) $ git checkout add_csv_download_function Switched to branch 'add_csv_download_…

ActiveHashのデータに対してSet型の値で検索を行う場合の注意点

検証環境 Rails 5.1.7 Ruby 2.5.7 結論 Set型の値をto_aで配列に戻してあげないと、配列として解釈してはくれない模様.. # 都道府県モデル class Prefecture < ActiveHash::Base field :name field :english add id: 1, name: 'ほげ県', english: "Hoge" <中…

bundle outdatedコマンド

bundle outdatedコマンド 現在のアプリディレクトリのgemに更新がないかをチェックしてくれるコマンドらしいです!(今日知ったw) RailsやGemのバージョンアップ対応などで、地味に助かりそうな機能だなという感想でした(小並感...) 実際にコマンドを打ってみ…

webpackerでCSSのコンパイルがうまくいかない場合の解決法

発生事象 webpackerのgemのバージョンを上げて本番リリースした際に不具合が発生し、revertしてgemのバージョンを戻したところローカルではそれまで正常にコンパイルされてたCSSが正常にコンパイルされなくなってしまいました... なお、エラー文言をメモしそ…

Vue CLIでデフォルトのポート番号を変更する方法

はじめに めちゃめちゃレベルの低い内容ですが、久々で記憶が消滅していたので忘れないためにここに記します。 ちなみにセキュリティソフトによっては 8080のポートが使えない場合があるっぽいので、今回はその対応のためにデフォルトのポートを変更するとい…

現在のブランチをリモートにプッシュするときはgit push origin HEADが便利

Git

経緯 これまで現在の作業ブランチをリモートにプッシュする際は現在のブランチ名を指定してプッシュしていました。 しかし、そんなことをしなくていいということを先日知ったのでここにメモ。 これまで $ git push origin ブランチ名 現在 $ git push origin…

ActiveRecordでのあいまい検索(mongoidと比べた)

経緯 久々にActiveRecordを業務でいじることになり、あいまい検索の方法を忘れてたのでメモ。 ちなみにmongoidだとこんな感じで正規表現的に書ける。 Model.where(name: /hoge/).to_a 書き方 mongoidに慣れすぎててパッと分かんなかった... key = "Supreme" …

RailsでActiveRecord::Enumを使わずにそれっぽい機能を実装する方法

経緯 普段の業務でmongoidというActiveRecordとは異なるORM(正確にはODM)を使っています。 当たり前ですが、ActiveRecordを使用しないRailsアプリではActiveRecordの使用を前提としたRailsの機能を使用することが出来ません。 というわけで、ActiveRecord::E…

exportした環境変数を削除する方法

経緯 Slack通知処理を直していた際にそのリファクタリングでこれまで環境変数をソースコードの中でセットする書き方からローカル環境で設定された環境変数を読み込んでSlack通知するように変更することになりました。 その際ローカルの動作確認では export S…

Nuxt.jsのasyncDataについて

近況 最近、突然無性にやりたくなりNuxt.jsの勉強を始めました! という訳でノロノロと勉強したメモを放流します。 asyncDataについて Vue.jsにはdata関数というDOMで扱うプロパティを予め定義しておいてコンポーネント内で使用出来る仕組みがあります。 さ…

障害報告書の書き方

経緯 本日とある運用作業中に一部データを誤って欠損させてしまい、 その復旧作業を行いました。 今までこうしたトラブルを起こしたことがなかったため障害報告書といったものをほとんど書いてきませんでした。 そこで今回は今後のために今回やったことを自…

Otemachi.rb #20でリファクタリング学習法のLTをしました!

報告 こちらのイベントでLTをしてきました! enechange-meetup.connpass.com 発表 発表資料はこちらです! 要約すると、過去の恥ずかしい負の遺産のようなコードをペアプロでリファクタリングすると学びが深いので、勉強のマンネリ打破にオススメですぞ!っ…

CircleCI上でPG::ConnectionBad: could not traslate host name "db" to address: Name or service not knownが起こった時に確認したこと

発生した事象 CircleCI上でRSpecを実行するための前準備として bundle exec rails db:create を行う場面で PG::ConnectionBad のエラーが発生してしまっていました。 結論 database.ymlとconfig.ymlの設定内容を確認しましょう。 今回の場合で言うとdatabase…

mongoidで値がセットされて変更されるフィールド値(save前)をコンソールで確認する方法

やり方 公式ドキュメントによるとこんな感じの書き方でフィールドの値の変更をコンソールで確認出来るみたいです。 user.name = "hoge" => "hoge" user.changed_attributes => {"name"=>"hoge"} saveされると消えるっぽい。 user.save user.changed_attribut…

mongoidのor条件クエリany_of

基本構文 そういえばmongoidでOR条件どうやるんだっけ? そんな私の今日のメモ Model.any_of({フィールド: 条件}, {フィールド: 条件}) 使用例 良い例が思い付かなかった... # クーポンが適用されていない or クーポンの期限が切れていない Coupon.any_of({a…

Tama Ruby会議01〜主催者レポート〜

自己紹介 どうも初めまして! Tama.rbという地域Rubyコミュニティで オーガナイザーをしているfuqda(ふくだ)です! 先日のTama Ruby会議01というカンファレンスではイベント主催者として色々動いておりました。 ここでは今更ながら、そのイベントに関して主…

定期的にbundle cleanupをしたいね

このコマンド知らんかった... bundle cleanup というコマンドを打つとローカルのbundle install先の使われていないGemを綺麗に削除してくれるそうな... Deploy用の踏み台サーバーで無駄にディスク容量を食ってそうなゴミファイルの掃除をした際に知りました.…

mrubyから入るシステムプログラミング入門に参加してきた

行って来た! こちらのイベントに参加して来ました! handsons.doorkeeper.jp 来たかったけれどキャンセルすることになってしまった方が自分の周りにいたので、可能な限りやったことを詳細に書き起こせればと思います。 なお私自身の理解の甘さで不備がある…

mrubyから入るシステムプログラミング入門ハンズオン用の開発環境セットアップ

はじめに mrubyから入るシステムプログラミング入門 に参加するための事前環境構築を行いました! ちなみに、その手順リポジトリはこちらです。 github.com 振り返りがてら行なった内容を記します!! ※ ハンズオン当日の実施内容を記した記事はこちら 以下…

Mongoidで本番DBのslaveにアクセスするためのコード

mongoidに纏わる誰の役にも立たない内容 本番でコンソールに入ってスクリプトを打つときについ忘れがちですが、 データ更新を行わないスクリプトを実行する場合はslaveを見るように指定するのが肝要です。 slaveを見るために必要なコード ※ 以下の例では mon…

Macで git grep "キーワード" の検索結果をクリップボードにコピーする方法

結論 以下のようにすればOKです! $ git grep "キーワード" | pbcopy 用途 私の場合は、とある事情でサービス内の特定のリンク先の死活状況を調べるためにキーワードでgrepしてその結果をリストアップしたいという用途で使いました。 pbcopyとは? Macに標準…

fishシェルでbashとzshのCtr + Rに相当する履歴検索コマンドを打つ方法

結論 fish シェルは何かを打ち始めるとデフォルトで予測変換を行います。 何かを打った際にその状態で Ctrl + P を打てば、その時点で入力されたキーワードの部分一致で過去に打ったコマンドを検索することが出来ます。 例 fishと入力する (動画撮るのめんど…

基礎が出来てなさすぎてツライので個人的に忘れやすいLinuxコマンドをまとめる

情けない... 滅多にサーバーでゴニョゴニョ作業をしないので 本日、久々に作業をすることになり Linuxコマンドの習熟度の低さが露わに... ファイルの行数だけ出したい 以下のコマンドでファイルの行数がわかります。 今回はサーバーで実行したスクリプトから…

mongoidのModel.where(field: { '$exists' => true }はフィールドが存在したら無条件で値を取ってきてしまうのでnilチェックされないという落とし穴

前提 BlogモデルとUserモデルがある BlogはUserにbelogs_toの関係 Blogのデータに対してUserが存在するデータだけを検索したい場合 落とし穴 mongoidの Blog.where(user: { '$exists' => true } は フィールドが存在したら無条件で値を取ってきてしまうので…

webpackのTree Shaking知らんかった...

本日の気付き 会社でフロントエンド・エンジニアチームの人々のこんな会話を耳にしました。 export default で オブジェクトを返すやり方は、 webpackのtree shaking ができなくなって、 結果パフォーマンスに悪影響がある フロントエンド人間ではないので何…

Railsで作られるファイルのデフォルトコメントを何も考えずに削除する習慣はやめとけ!

今回の結論 Railsのgemに用意されたコマンドからジェネレートされるファイルのデフォルトで書かれている英文のコメントは何も考えずに削除しない方が幸せになれますよ!という話です。 もっと詳しく 例えば、RSpecの初期ファイルにはRSpecの仕様に関する重要…

bundle installでAn error occurred while installing nokogiri (1.9.1)になった場合の解決法

nokogiriのインストールで死ぬ問題 とあるアプリでbundle installしようとしたところ... $ bundle install --path vendor/bundle <中略> Fetching nokogiri 1.9.1 Installing nokogiri 1.9.1 with native extensions Gem::Ext::BuildError: ERROR: Failed to…

Vee ValidateでEventを指定してバリデーションを発火出来るってよ!

Vee Validateって? Vue.js公式バリデーションライブラリです。 https://baianat.github.io/vee-validate/ 知らんかった... Vee Validateでイベント指定してバリデーションの発火タイミングをコントロール出来るなんて... こんなの普通に考えたら、そういう…

Dockerのミドルウェア(DB)のバージョンを上げた時にデータベースに接続出来なくなる場合の雑な解決法

前提 Docker for Macを使用している RailsアプリのミドルウェアだけをDocker化している /provisioningディレクトリを作り、そこにdocker-compose.ymlを配置している dockerコマンドはdocker-compose.ymlを配置したディレクトリで実行 概要 Dockerを使って起…

mongoidへ送ったプルリクエストが無事マージされた話

概要 先日のブログで書いた内容の経過報告です。 fuqda.hatenablog.com PR送った結果 先日mongoidに送ったプルリクエストが無事にマージされました。 github.com 所感 今回マージされたリポジトリには明確なコントリビューションガイドは無かったのですが、…