パスやルーティングを調べたいときのあれこれ
環境
gem "rails", "~> 5.1.5"
ルーティングを調べる
bin/rails c
でコンソール立ち上げたあとに以下
> show-routes
controller名に基づくパス生成ができるか確認
# hoge_controller.rb とかだったら > app.hoge_index_path
※ニアミスだったりするとサジェストしてくれる
パスやルーティングを調べたいときのあれこれ
gem "rails", "~> 5.1.5"
bin/rails c
でコンソール立ち上げたあとに以下
> show-routes
controller名に基づくパス生成ができるか確認
# hoge_controller.rb とかだったら > app.hoge_index_path
※ニアミスだったりするとサジェストしてくれる
docker-composeとかで立ち上がったファイルの中身を覗きたいとか、見たい場合
docker-compose exec {{docker-composeで指定しているサービスの名前}} bash
docker-compose.yml が下の場合
version: '3' services: db: image: mysql:5.7 volumes: - mysql_data:/var/lib/mysql web: build: . command: bundle exec rails s -p 33333 -b '0.0.0.0' volumes: - .:/sample ports: - "3000:3000" depends_on: - db
こんな感じ
docker-compose exec web bash
swagger-codegenって便利なんだけど、サポート言語と歩調併せている関係か部分的に最新版じゃないかったりする。なんでそれを歩調合わせたときのメモ
swagger-codegenにオプション的なものがないので力技で置換
# 前もってディレクトリを消しておく rm -rf ./{{生成先のファイルパス}} # swagger-codegenする swagger-codegen generate -i {{生成元のjson}} -l nodejs-server -o {{生成先のファイルパス}} # バージョンを差し替えたpackage.jsonをつくる sed -e "s/\"swagger-tools\": \"0.10.1\"/\"swagger-tools\": \"0.10.3\"/" {{生成先のファイルパス}}/package.json > {{生成先のファイルパス}}/package_n.json rm {{生成先のファイルパス}}/package.json mv {{生成先のファイルパス}}/package_n.json {{生成先のファイルパス}}/package.json
すべてのキーをローワーキャメルに変換したいときってあったりなかったりするのでメモ
# hashのキーを全てlowerCamelに変換する # @param [Hash] hash 変換元のハッシュ # @return [Hash] 変換後のハッシュ def lower_camel_key_hash(hash) hash.each_with_object({}) do |(k, v), new_hash| lower_key = k.to_s.camelize(:lower) new_hash[lower_key] = v.is_a?(Hash) ? lower_camel_key_hash(v) : v end end
表題の通り、Qiitaに投稿した。
RSpecでエラーが起きたあとの状態をテストするときの問題点と回避案 - Qiita
一応記事内では蛇足になりそうだったのでなんでこんなものを書いたのかの編集後記的補足。
サービスクラスを実装していたので、複数のテーブルのデータを1メソッドでザクッと変更する処理を書いていた。そのため、メソッドの処理が失敗してraiseしたらちゃんと他の処理もロールバックしているのかを調べたかった。
raiseすることを確認するのは以下のコードでできるのは探せば結構出てきた
# raise_error({{対象のStandardError}}) で確認可能。 expect { object.error_okiru_yatsu }.to raise_error(ZeroDivisionError)
ただこの場合には『エラーが起きる行動を実行すると、意図したエラーがあがる』というテストである
ただ個人的には
とあった場合に3番目を確認したかったので、上の方法を混ぜるのは何か違う気がしていた。 そのため、記事内の処理をやるに至ったのだが、なんかコレジャナイ感をはらむ結論が出た。
今回割と微妙な内容ではあったが
などの理由からQiitaに書いてみて、突っ込まれたらそれを吸収する方法論をとりました。
まぁあんまり見られないかなと思いつつ、なんかフィードバックがあったら嬉しいなぐらいの気持ちです。
世界基準の時間で入れようという気持ちが働いた結果、UTCでデータレイクに保存されていることがある。
ただ、集計で絞りたいときは大概日本時間なので、そういうときに書き換えるクエリ。方法論は色々あるけど直感的に書ける書き方。
単純に比較したいだけなので、UTCに対し9時間加算する。
TIMESTAMP_ADD({{対象カラム}}, INTERVAL 9 HOUR)
ありがちな created_at
を絞り込みたい場合は以下の感じ。
(TIMESTAMP_ADD(created_at, INTERVAL 9 HOUR) >= TIMESTAMP('2018-4-01 0:00:00') AND TIMESTAMP_ADD(created_at, INTERVAL 9 HOUR) < TIMESTAMP('2018-05-01 0:00:00'))