わかるってたのしい

Ruby on RailsやJavaScriptをよく使っています。コードを書いていく中で得た知見を残していきます。

Ruby - sendと[]を使ってハッシュや配列の値を取得

こういうことをしたいことは普段はないと思いますが、Tipsとして残しておきます。

array = ['hoge', 'fuga']

pp array.send(:[], 0)
#=> "hoge"

pp array.send(:[], 1)
#=> "fuga"
hash = { name: 'Taro' }

pp hash.send(:[], :name)
#=> "Taro"

関連記事(sendを使わないパターン)は以下になります。

Ruby - 配列から . で値を取り出す - わかるってたのしい

Ruby - ハッシュから . で値を取り出す - わかるってたのしい

Ruby - 配列から .[] で値を取り出す

普通は array[0] のように書きますが、「こういう書き方もあるのか」と思ったので、メモとして残しておきます。

array = ['hoge', 'fuga']

pp array.[](0)
#=> "hoge"

pp array.[](1)
#=> "fuga"

ハッシュの場合はこちら
Ruby - ハッシュから .[] で値を取り出す - わかるってたのしい

IntelliJ IDEA Keybindings - 普段はJetBrains系のエディタを使っている人に便利なVSCodeの拡張

僕は普段からRubyMineを使っているのですが、VSCodeも使えるようになっておきたいと考えていました。

ただ、RubyMineのショートカットに慣れすぎていて、操作する時に脳内でコンテキストスイッチが発生するのが億劫な状況でした。

そんな時に IntelliJ IDEA Keybindings というプラグインを見つけたのでインストールしてみました。

IntelliJ IDEA Keybindings - Visual Studio Marketplace

まだまだVSCodeは本格的には使ってはいませんが、RubyMineとあまり変わらない感じで操作できているので良さそうだと考えています。

AWS CLIのhelpコマンド

サービスにどんなものがあるか

aws help

サービスのコマンドにどんなものがあるか

aws サービス名 help
aws rds help

サービスのコマンドのオプションにどんなものがあるか

aws サービス名 コマンド help
aws rds describe-db-snapshots help

aws-sdk-s3で署名付きURLのスタブを生成

Gemの aws-sdk-s3 を使った署名付きURLのスタブの生成について、以下のissueにやり方が書いてあったのでメモ。

Stubbing issue with Presigner#presigned_url · Issue #2092 · aws/aws-sdk-ruby

s = Aws::S3::Client.new(stub_responses: true)
#=> #<Aws::S3::Client>

p = Aws::S3::Presigner.new(client: s)
#=> #<Aws::S3::Presigner:0x007fdbcb4d9758 @client=#<Aws::S3::Client>>

p.presigned_url(:put_object, bucket: 'foo', key: 'bar')
#=> "https://foo.s3.us-stubbed-1.amazonaws.com/bar?X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=stubbed-akid%2F20210322%2Fus-stubbed-1%2Fs3%2Faws4_request&X-Amz-Date=20210322T064324Z&X-Amz-Expires=900&X-Amz-SignedHeaders=host&X-Amz-Signature=6f6b14b2ee48dca1e0f02a1e6ea5ea59bfb3f7ba4b33797ad252639d5593604b"