コード日進月歩

しんくうの技術的な小話、メモ、つれづれ、など

Tips

レビューコメントの意味通りを良くするためのヘッダTips

よくコードレビュー事例で『そのコメントの最初に [MUST] [MAY] とかをつけることにより対応の度合いを説明できる』 みたいな事例を見るけど、どういうのがあるのかの事例集。 英語パターン MUST 必ず直して欲しい部分に関して使う。RailsでいうところのN+1…

デフォルトのRailsログで突き合わせ用のIDとして使われているのはリクエストヘッダのX-Request-ID

Railsログの先頭に一意のIDが出てるなー、きっとよしなに何か振ってくれているんだろうなーとか思ったら違った。という話。 環境 rails (5.2.0) やっている設定 enviromentsのこの記述 # Prepend all log lines with the following tags. config.log_tags = …

bashで環境変数をexportせずにシェルスクリプトを実行したい場合はコマンドの前に記述することで代替できる

実は最近まで知らなかったのでメモ。 環境 $ bash --version GNU bash, version 3.2.57(1)-release (x86_64-apple-darwin17) Copyright (C) 2007 Free Software Foundation, Inc. やり方と例 こんな感じでシェルスクリプトを用意する $ cat test.sh echo hog…

Confluenceのエディタは { でマクロのショートカット入力ができるし、{ code } でコードスニペット領域が作れる

コードスニペットを書くためのコードブロック領域に関して、意外とみんな知らなかったのでメモ。 コードブロックマクロとは マークダウンでやるところの ``` で囲む表現あたるものとして「コードブロック」のマクロがある。 ↑のような感じで表示できる。 作…

AWS SDK for Ruby を使っている際に、Aws.config[:stub_responses] を設定すれば雑にスタブは作れる

一番簡単なやつは本当に雑なんですよ、という意識を込めたメモ 環境 aws-sdk (3.0.1) やり方 Aws.config[:stub_responses] = true とすればAWS系のメソッドは全てモック返答が返ってくる。 雑ポイント AWS SDKすべての返答がモック化し、特定のものだけ差し…

Railsで時間において小数点以下の差分時間を取る手法

ログから処理時間が欲しいときに小数点以下で欲しいな、とか思ったときにやる方法メモ 環境 やり方 一番簡単なのは Time の型同士で引くこと。 t0 = "2018-10-10 10:00:51.14".in_time_zone # => Wed, 10 Oct 2018 10:00:51 JST +09:00 t1 = "2018-10-10 10:…

RubyのRange生成である .. は終端を含め、 … は終端を含めない

忘れて痛い目をあったので備忘録的メモ 環境 $ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16] 参考元 範囲オブジェクトはRangeクラス のインスタンスです。 ... で生成された範囲オブジェクトは 終端を含みません。 - 演算子式 (Ruby…

ディレクトリに含まれるファイルを拡張子別にカウントするRubyのコードを書いてみた

ググったらWindowsでの知見しか出てこないので、Rubyでサクッと作ってみた。Macならこれを書き換えればカウントできます。 環境 $ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16] コード require 'find' # @param [String] target_pat…

AWSコマンドにおいてAWSのアカウント設定情報を複数持ち、切り替える方法

やり方を忘れるのでメモがてら 環境 $ aws --version aws-cli/1.11.129 Python/2.7.10 Darwin/17.7.0 botocore/1.5.92 設定情報を複数用意する 作り方 $ aws configure --profile {{作りたいプロファイル名}} 例 sandbox という profile を作りたい場合 $ aw…

Time.zone.nowを大量のくりかえしで使うときは一時保存しましょう

ゲームとかやってると割と当たり前なんだけど、そういうコードを見かけたので一応メモがてら。 環境 rails (5.2.0) 例 たとえばこんなコード # 10日前のものを選出したい(whereしろというツッコミは忘れる) User.all.each do |user| next if user.created_a…

Rails5のActiveRecrodにてOR条件で検索したければorを使えばいい

あまり浸透していないのと忘れるのでメモ 環境 rails (5.2.0) 使い方 文法 条件1もしくは条件2に合致する場合 Model.where({{条件1}}).or(Model.where({{条件2}}) 例 Userのidが1かcreated_atが今現在のレコードを調べる User.where(id:1).or(User.where(cre…

常設ディスプレイに計測系ダッシュボードを表示するときに便利なChromeプラグイン『Revolver - Tabs』

よくGoogleAnalytics等のダッシュボード表示系コンテンツをディスプレイとかで表示することがあると思うんですが、そういうときに役立つプラグインをご紹介 DL先 Revolver - Tabs 使い方 このツール自体は「GoogleChromeで複数タブを開いているときに一定秒…

ActiveRecordにはそれまでのorderを無視して上書きするreorderというメソッドがある

一体どういう意図でつくったのかわからないが見つけたのでメモがてら。打ち消しの記述なんて危険しか孕んでないから、おそらくコレは見かけたら駆除したほうがいい系のメソッドだとは思っている。 環境 rails (5.2.0) 例 例えば普通にorderすると以下のよう…

Rubyの呼び方がいろいろある演算子たち

=> をハッシュロケットと呼ばれることを知り調べてみた系トリビア。 ここで紹介する記号達の名称はオフィシャル系では見かけたことがないのであくまでもネットを漂う情報のひとつ。 元ネタ JuanitoFatas/what-do-you-call-this-in-ruby: Solving the second …

GooglePlayへの遷移を実現したいときのURIの書き方2種

普段遣いしているとわかるけど、そうではないとわからない系のメモ やりたいこと リンクを押すとGooglePlayに遷移する!みたいな奴 書き方例 普通のURL https://play.google.com/store/apps/details?id={{アプリのパッケージ名}} で指定できる、ダンジョンメ…

Rspec内にてRails.envによって振る舞いの変わるものをテストしたい場合の書き方

ただのモックの書き方だが具体例を添えて。 環境 rails (5.2.0) rspec (3.7.0) やり方 allowとand_returnを使う allow(Rails).to receive(:env).and_return(ActiveSupport::StringInquirer.new("production")) 原理 allow({{クラス名}}).to receive({{メソッ…

sshの鍵を毎回指定するのをショートカットするsshのconfig設定

普通にググりゃでてくるんですが、毎回忘れるのでメモがてら 従来 sshに使う鍵は ~/.ssh/nanka_pem ログインするユーザは dareka_user ログインするサーバは 253.254.255.255 ssh -i ~/.ssh/nanka_pem dareka_user@253.254.255.255 configに追記 ▼ .ssh/conf…

AppStoreへのリンクをただ作りたいときはLinkMakerを使う

小ネタです。 やりたいこと AppStoreへのリンクを作りたいので、ストアアプリが立ち上がるURLが知りたい やり方 iTunes Link Maker に行って ストア国を「日本」 メディアタイプを「App」 にしてリンクを貼りたいアプリの名前を検索する ※上記の場合は「ダン…

Railsのloggerで出力されるかを検証するときは、モックを使って確認するのがよい

小ネタ備忘録です。 環境 rails (5.2.0) 例 下記のクラスをテストしたい場合 class Example def logging Rails.logger.info("hoge") end end 下記のように書く # 実行前にloggerのinfoに設定される引数を見るようにする expect(Rails.logger).to receive(:in…

Rubyの関数の引数では可変長引数と可変長キーワード引数で便利な使い方ができる

両方使うことで、面白い使い方ができるんだなというメモ 環境 $ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16] 実例 前提のおさらい *引数名 で引数を好きな個数指定でき、配列に格納できる def optional_args(*args) p args end 上…

Rubyでバージョン番号を比較するするときはGem::Versionでできる

いつもパッと出てこないので備忘録メモ 環境 $ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16] やり方 old_version = "1.0.0" new_version = "1.2.1" Gem::Version.create(old_version) < Gem::Version.create(new_version) # => true…

RailsでUTF-8じゃない文字列が入ったハッシュをto_jsonしようとしてもできない

なんかRubyでない世界観で作られた日本語戻り値を受け取って加工してたら変なところでエラーになったのでメモ 環境 rails (5.2.0) 事象 以下のような test.txt を用意する 悪霊退散 これを意図的に Shift-JIS で読み込む text = File.read("test.txt").force…

RubyのBase64.encode64はエンコード後文字列が60文字以上になると改行コードが入る

なんだそのRFC仕様…と思ったのでメモ 環境 $ ruby -v ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-darwin16] 概要 与えられたデータを Base64 エンコードした文字列を返します。 このメソッドは [RFC2045] に対応しています。 エンコード後の文字で 6…

jq を使って平文のJSONをシェルコマンドだけでいい感じにエスケープする

vegeta の Readme 見てたらこんな使い方あるんだ的なメモ 環境 $ jq --version jq-1.5 ※jqの説明は参考リンク参照のこと 使い方 例 特定のJSONの値をちゃんとエスケープを書けたURIにしたいときがあったとする。 例えば { "url": "https://example.com/searc…

Railsでprimary key がid ではない場合 find_each はできない

Model名.all.each は Model名.find_each にしろというのはRubocopでも怒られるド定番な修正対象ですが、できない場合があるのを知らなかったのでメモ 環境 Rails 5.2.1 できないパターン これができない場合はそもそもRailsのfind系機能が使えないので気づく…

rspecでテストをpendingしたい場合はxから始まるメソッドにリネームするといい

こんな機能があるんだという気持ちになったのでメモ 環境 rspec (3.7.0) 使いかた example_spec.rb として以下のスペックを書いてみる 実行すれば以下の結果 require "rspec" describe "DummyTest" do describe "Target" do context "Case1" do it "SuccessA…

Railsでよしなに40x系のレスポンスを返すExceptionの確認の仕方

ActiveRecord::RecordNotFound とかだと勝手に404ページけどほかは何があるんだろうとか思ったのでメモ 環境 rails (5.2.0) 確認の仕方 ActionDispatch::ExceptionWrapper.rescue_responses # => {"ActionController::RoutingError"=>:not_found, # "Abstrac…

RubyでURL用のクエリパラメータとして別のURLを値指定したいときはCGI.escapeを使う

タイトルで本文の90%を説明してしまっているシリーズ。 環境 $ ruby -v ruby 2.3.3p222 (2016-11-21 revision 56859) [x86_64-darwin16] 挙動 require 'cgi' #=> true # 元のURL base_url = "https://example.net/example" #=> "https://example.net/example…

Railsが利用するテーブルでなるべく避けるべきカラム名

created_at や updated_at はRailsといえば!ぐらいの代表的なカラム名だけど、 type とかは感覚的な理解だったので、そういえばActiveRecord的につけてはいけないカラム名とはどういうものがあるのかと思って調べてみたメモ 環境 rails (5.2.0) 避けるべき…

Railsのpublic/404.htmlはどうやって使われているのか

Rails使ってると、ActiveRecordNotFound とかがraiseで上がった時に勝手にpublic/404.html がでたりしますが、あれが出るのはどういう仕組みなのかっていう部分的メモ(内容がまとまったらもうちょいちゃんと書きたい) 環境 rails (5.2.0) やっているところ…