Rails

無名クラス

ある機能に関してブランチを分けて実装している際、 別ブランチで作成しているクラスのインスタンスが今のブランチで実装しているメソッドを使えるか試したいことがありました。 別ブランチを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でアップロードしたファイル名を表示させたかったのですが、 そのままカラム名を表示してしまうと、 絶対パス表示&ファイル名が日本語だった時文字化けしてしまい、なんとか通常のファイル名を表示できないか調べました。 ググってもなかなか出…

読みやすい条件の書き方にする

ビューで 'Loading...' という文言を表示させる条件を、以下のように書いてしまっておりました。 - unless (@menus.include?(@menus_last) || @menus.length == 0) .page-load-status .infinite-scroll-request | Loading... 自分でもこのunless文を書くにあ…

コントローラを分けるタイミング

本日、あるアクションを実装した部分について、別のコントローラに分ける方が良いというアドバイスを頂きました。 具体的には別のモデルの処理であるにも関わらず、1つのコントローラの中で実装してしまっておりました。 その際に参考文献として以下のリン…

postgresqlのセッションを切断

テストが実行できなくなってしまい、焦ることがありました。 ターミナル再起動しても相変わらずテストが実行されないままでした。 rake db:resetしようと試みてもエラーでリセットできませんでした。 しかし、ログをたどっていったところ、どうやらポスグレ…

capybaraで取得した要素の中身を確認する

テストが通らない原因を探るため、binding.pryを仕込んでデバッグをしておりました。 止まってくれたところで、 find(‘#client_check_by_id’) とすれば、その要素を取得は出来るものの、その中身を見たい!と思い、そのやり方を調べてみました。 [1] pry(#<RSpec::ExampleGroups::Nested::Nested_2>)></rspec::examplegroups::nested::nested_2>…

ポスグレとGP Commanderを接続する

起こった問題 PG Commanderというポスグレを可視化してくれるアプリを使いたかったのですが、ある日突然、自動で接続してくれなくなってしまっておりました。 自分で各項目を入力し接続を試みたのですが、上手くいかず困っておりました。。。 解決法 Portを…

Heroku本番DBの内容をローカルに持ってくる

Herokuの本番DBの内容をローカルに持ってくる方法を教えていただきました!! これは便利!!と感動したくので書き留めておきます。 以下のように、 heroku pg:pull herokuのDB名 ローカルDB名 --app アプリ名 とすると取得できます。 $ heroku pg:pull hero…

テストDBだけリセットしたい(postgresql)

テストデータベースだけリセットしたい!と思うことがありました。 調べてみたところ、以下の手順でテストデータベースをリセットできるようでした! ①データベースをtestに切り替える $ bin/rails db:environment:set RAILS_ENV=test ②データベースを消す $…

意味のあるテストデータの作成

FactoryBotを使ったデータ作成について基礎を理解したいと思うことが多々ありました。 Everyday Rails Rspec 第4章、「意味のあるテストデータの作成」についてまとめる機会を頂いたので、こちらに下書きを書いていきたいと思います! github.com 内容 ・フ…

rakeタスクを作る

menuテーブルが持っていたimageカラムの値を、menus_imagesテーブルのimageカラムに移すrakeタスクを作りました。 rakeタスクは初めて作ったので、手順を書き留めておきます。 タスクを生成する 以下のコマンドを打つと、タスクがlib/tasks配下に生成されま…