Rails

rspecでモックを使う

apiが絡む部分のテストで、実際にはリクエスト投げて欲しくない部分がありました。 そんな時はモックを使うと便利だと知ったので書いておきます! 具体的な状況 HogeBuildJobの中にapiのリクエスト投げてしまう処理がありました。 最初、api投げる処理の直前…

クエリキャッシュ

ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita こちらの記事を理解する上で、クエリキャッシュについてもわかっておかないといけないと思った為調べてみることにしました!! クエリキャッシュとは データベースを参照した結果をメモリ…

inner joinとouter join

ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita 上記リンクの記事を何度か読んだことがあるのですが、 そもそもinner joinやouter joinについてよくわかっていなかったため、「includesしとけば万能そう」という理解しかできておりませ…

ローカルdbのデータをherokuのリモートdbへ入れるコマンド

昨日ローカルdbの内容からシードデータを作成し、リモートへデータを追加しようとしたのですが、問題がいくつかあり別の方法で行いました。 その方法について書いておきます! シード作るよりかなり簡単でした! 方法 ローカルdbの内容をherokuのリモートdb…

本番環境のデータをステージングへ入れる

本番環境のデータをステージングへ入れる必要があり、方法を調べました。 実際には違うやり方の方が良いとの判断となり、この方法でステージングにデータを入れることはしなかったのですが、その方法について書いておきます! 方法 1.本番データをローカルへ…

gemを使わずにenumを日本語化

Railsでenumを日本語化する方法を検索すると、enum_helpというgemを使用する方法がたくさんヒットします。 しかし先日、gemを使わなくても日本語化できる方法を知りました!! 方法 以下のようにモデルでenumでステータスの値を設定しているとします。 app/m…

Awesome Print

メタプログラミングRubyを読んでいたら Awesome Print というgemが登場しました。 インデントやカラーリングをつけてくれるgemです。 自分も入れてみることにしました! 普通の使い方 gem install awesome_print を実行し、 コンソール立ち上げたとき requir…

Nerima.rb #4へ参加した!

本日はNerima.rbへ参加させていただき、前回の続きでObjectクラスについて読み進めていきました! docs.ruby-lang.org 印象的だった内容 1. ライブシェア 今回はVScodeのライブシェア機能を使い、スクリーンに写しているターミナルを皆操作できる状態で進め…

ログ設計

ログについてどんな時にどんな内容で出力すべきかよくわかっていなかったため、調べて自分なりにまとめてみることにしました! ログとは 履歴などが記録されているものです。 Railsでは /log/ 配下に保存されています。 MacPCのログなどもコンソールというア…

無名クラス

ある機能に関してブランチを分けて実装している際、 別ブランチで作成しているクラスのインスタンスが今のブランチで実装しているメソッドを使えるか試したいことがありました。 別ブランチをpullして持ってこようかと思いましたが、コンソール上で無名クラ…

コードリーディング部(Rack編)へ参加した

今日はTama.rbから派生した部活のコードリーディング部へ参加してきました! 今回のテーマはRackでした。 github.com 主催の@coe401_さんが準備や資料を用意してくださり、Rackがサーバーを起動する仕組みを読み解いていきました! 明日開催のコードリーディ…

Sendagaya.rbへ行った

昼休みにruby-jpのスラックを眺めていたらSendagaya.rbが今日開催されるという情報を入手し、即申し込んで参加してきました!! 以下はDoorkeeperのSendagaya.rbのページです! sendagayarb.doorkeeper.jp 初参加でも入りやすい雰囲気でとても助かりました!…

ハッシュ関数とソルト

先日あるapiを使うにあたって、ハッシュ関数とソルトを使わなければならない機会がありました。 よく分かっていなかったため調べてみました! ハッシュ関数とは ある文字列を、決まった長さの新しい文字列に変える関数です。 元の文字列が似たような値でも、…

TamaRuby会議無事おわった!

TamaRuby会議を無事終えることができました!! セッションはどれもすごく面白かったです!! 自分は受付係だったため早めの時間のセッションは聞けなかったのですが、 ツイッター上でスライドを共有してくださっていたので、これから読んでいきたいと思いま…

TokyuRuby会議へ行った

本日はTokyuRuby会議へ行ってきました! プレミアムモルツを飲みながらLTしたり聞いたりする特殊な会でした。(サントリーさんがスポンサーをしてくださり、いろんなプレモルが飲み放題だった!!) 普段カンファレンス後の懇親会でお酒を飲む時は楽しみきれな…

railsコマンド使えるようにconfig.fishの設定を直した

fishシェルを入れ直してからずっとrailsコマンドが使えずにいたのですが(いちいちbashに戻っていた)、本日やっと直すことができました!!! 直した後のconfig.fishの内容が以下です! /.config/fish/config.fish gyazo.com eval (rbenv init - | source) 上…

SQL発行されまくるスクリプト

あるデータを取得する必要があり、コンソールでスクリプトを実行しておりました。 すると、AWS RDSのProcessor load が90%を超えているというアラートが何度も鳴ってしまいましたw OPさんにも心配をさせてしまいたした。 その時のスクリプトが以下です。 ids…

find_eachで順番を指定したい

pdfの作成される順番を変えたいと思いコードをいじっておりました。 以下はpdfの作成される部分のコードの一部です。 class BatchPrintJob < ApplicationJob 略 def perform(batch_print) 略 invoices.find_each do |invoice| 略 pdf << CombinePDF.load(pdf…

FactoryBot難しい...

ジョブを実行すると、ある条件の時にレコードが更新されることをテストしたかったのですが、なかなかテストが通らないため、binding.pryを駆使してデバックしておりました。 しかし、binding.pryだときちんと値が更新されているのに、なぜかテストは落ちてお…

ActiveDecoratorを(ごく一部)読んだ

先ほどActiveDecoratorを使って定義したメソッド(を呼んでるモデルに定義したメソッド)をコントローラーで呼んだところ、エラーとなりました。 ActiveDecoratorをView以外で使う時は、ActiveDecorator のデコレーターメソッドをかましてあげる必要があるとの…

aws-sdkというgemのバージョンアップをした

昨日あるアプリに入っているasw-sdkというgemのアップデートを行いました。(まだステージングのみ) aws-sdkはAmazon S3、Amazon EC2、DynamoDB など、AWS の多くのサービス向けの Ruby クラスを提供してくれるgemです。 Amazon S3のAWS署名バーション2が201…

Everyday Rails - RSpecによるRailsテスト入門の輪読会をした

本日はTamarbで、「Everyday Rails - RSpecによるRailsテスト入門」の輪読会をしました! この本は以前一度読んだことがありましたが、理解しきれていない部分も多く、とても勉強になりました! この本にはサンプルアプリケーションが用意されており、それを…

libv8というgemのインストールが失敗する

エラー内容 Ruby3系のバージョンで作られたRailsのプロジェクトを動かしたかったので、 環境構築後bundle installをしたら以下のようなエラーが出てしまいました。。。 libv8 というgemのコンパイルで失敗しているようでした。 Installing libv8 3.16.14.15 …

accepts_nested_attributes_forを使った時のrequest specでのパラメータ指定

問題 menuを作成するrequest specでパラメータ の指定の仕方がおかしかったようで、テストが落ちておりました。 menuモデルでは, accepts_nested_attributes_for :menu_images というようにmenu_imagesを子レコードとして作成するようにしておりました。 以…

GitHub内の検索

GitHub内を検索できるのは知っていたのですが、今までリポジトリを検索する為にしか活用できておりませんでした。。。 先ほど、リポジトリ検索だけでなく、コード検索もしてみたのですが、お手本にしたいコードがたーーーくさん出てきてすごく良かったのでそ…

リモートのmasterに間違えてmergeしてしまった時

リモートのmasterに間違えてmergeしてしまい、めちゃくちゃ焦る事態がありました。 別に問題のある内容をmergeしてしまった訳ではないのですが、明後日mergeしましょうと話していた内容だったので焦りました。 その時の手順についてまとめておきます。 手順 …

TraceLocationというgemを使ってみた!

ツイッターを見ていたら、カルパスさんがコードリーディング用のgemを作ったという情報をgetしたので、早速試してみました!!1 以下はそのリポジトリです! github.com こちらのスライドで、どういう思いで作ったのか・どう使うのかについて書いてくださっ…

Date型のカラムの値が今日の日付より以前のレコードをとるのに苦戦した

発生した問題 Jobで以下のようにクライアントのidを取得している部分に対して、"今日の日付より以前の契約をしている"という条件も足したいと思いました。 client_ids = invoice_build.billing_closing_date.contracts.with_status(:actived).pluck(:client_…

NKFで文字コードを変換する

csvのインポート・エクスポート処理でshift-gisをUTF-8に変換する必要がありました。 しかし、文字コードについてよくわかっておらず、色々教えてもらいました。 今回はその内容について書き留めておこうと思います!! NKFとは ものすごく古い漢字コード変…

CarrierWaveでアップロードしたファイル名をそのまま表示させたい

CarrierWaveでアップロードしたファイル名を表示させたかったのですが、 そのままカラム名を表示してしまうと、 絶対パス表示&ファイル名が日本語だった時文字化けしてしまい、なんとか通常のファイル名を表示できないか調べました。 ググってもなかなか出…