RSpec で特定のテストだけを実行する方法

結論

--example オプションを使い、その値として「テストの名前」を入れます。

以下のような Spec があったとします。

feature 'おはよう' do
  scenario 'こんにちは' do
    # ここにテストが入る
  end
end

このとき、このテストを実行するためには次のコマンドを実行します。

$ bundle exec rspec --example "おはよう こんにちは"

補足

  • テスト名の合致を判別する方法は「含まれているか」なので、--example で指定した名前が他のテストの名前にも含まれる場合は、含まれる全てのテストが実行されます
  • --example 以外のテスト指定方法もあります*1

*1:行番号で指定する方法など

VSCode で RuboCop や Solargraph や Ruby Test Explorer が実行できないときの一つの解決法

結論

コマンドの実行パスを絶対パスで書く。

実例

以下は Ruby Test Explorer の設定です。ここで実行コマンドパスを設定する箇所において、絶対パスでパスを記述します。

例えば、 .rbenv を使っている場合は /home/ここにユーザー名が入る/.rbenv/shims/bundle exec rspec などになると思います*1

gyazo.com

*1:Solargraph ならば /home/ここにユーザー名が入る/.rbenv/shims/solargraph

Google Tag Manager の データレイヤー の変数名は 'dataLayer' という名前で固定(変更は可能)

結論

標題のとおりです。dataLayer という名前はいわば予約語です。

公式ドキュメント

support.google.com

dataLayer という名前を変更する方法

変更したい場合には GTM の URL に l(アルファベット半角の「エル」) というパラメータを追加し、その値に対して変更した名前を設定します。そして <script> 内の変数もその名前に変えます。

公式ドキュメントは以下になります。 developers.google.cn

補足

GTM 側の名前を変更するより、既存の名前を変更するほうが良いと思います。

Ruby の Twitter の gem にて、凍結ユーザの 'name' は Twitter::NullObject で返ってくる

gyazo.com

結論

標題の通りなので、たとえばデータベースにユーザデータを格納しようとする際に nameNOT NULL 制約をかけていたりバリデーションをかけていたりすると、エラーになります。

対処法の一つとしては Twitter::NullObject のときは例外として特定の文字列に置き換えることでしょうか。ただし注意することがあり、このオブジェクトは以下のような評価になるということです。ここで objTwitter::NullObject のオブジェクトとします。

obj.nil? #=> true
obj == true #=> false
obj == false #=> false
obj || 'hoge' #=>(空っぽ。何も表示されない)
(obj || 'hoge').class #=> Twitter::NullObject

obj || 'hoge'hoge が返ってこないことには注意が必要です。

スプレッドシートでの TRUE または FALSE は、GAS 上では小文字の文字列('true' または 'false')扱い

gyazo.com

結論

とあるセルに TRUE あるいは FALSE というデータが格納されているとき、GAS 上での判別は以下のようになります。

// targetCell に TRUE というデータが格納されているとします

console.log(typeof targetCell); // string
console.log(targetCell); // true
console.log(targetCell === true) // false
console.log(targetCell === 'true') // true
console.log(targetCell === 'TRUE') // false
// console.log(targetCell === TRUE) // ERROR
Powered by はてなブログ