Ruby

&、-、select、reject

今日使ったArrayクラスのメソッドについてメモしておきます。 何回も使ったことあるのにいつも記憶が曖昧で調べている気がしますw & 複数の配列を比較して重複してる値を返してくれます。 [1,2,3,4,5,] & [2,3,4,7] => [2,3,4] - 2つの配列を比較し、前者の…

アクティブレコードでのトランザクション

昨日はSQLでのトランザクションについて書いたので、 今日はアクティブレコードでのトランザクションについて調べてみました! 書き方 以下のように書くことができます。 ① モデル.transaction do ② DBに変更を加える(updateやdeleteなど)③ end④ 上手くいっ…

銀座Railsへ行った

銀座Railsへ行って、Railsコミッターの@kamipoさんと@yahondaさんのセッションをお聞きしてきました! Active Recordの難しい話もありましたが、お話が面白かったので分からないなりにも楽しむことができました!! 自分もすぐに取り入れていこうと思った内…

Grow.rb 〜例外処理とループ処理〜

本日はGrow.rbで例外処理とループ処理について学んできました! 以下はGrow.rbのイベントページです! growrb.doorkeeper.jp 制御構文 まずはループ処理の流れを変えるメソッドについて確認しました! 以下は制御構文についてまとめてあるるりまのページです…

bundlerのバージョン固定してbundle update

rubocopのgemだけバージョンアップしたく、以下のようにコマンドを実行しておりました。 conservativeというオプションは、依存関係にあるgemをupdateしないためのオプションです。 bundle update --conservative rubocop しかし、これだとbundlerまで2.0.2…

rubocop-railsと言うVSCodeの拡張

ローカルでrubocopを実行し忘れたままリモートへプッシュしてしまうことが多く、申し訳ないなと思っておりました。 sleckのgithubの通知が飛んでくるチャンネルが自分へのrubocopからの指摘で埋もれる。。。w 「ローカルで実行する癖をつけなくては」と日報…

Tamarb Rspecモブプロ 〜共通メソッドをモジュールへ切り出す〜

本日はTamarbのRspecモブプロがあり、今回はfeature specを書き進めていきました。 以前と同様、エディタごとにチーム分けをし、自分は人数比的にRubyMineチームへ参加しました。 知ったこと 1つのファイル内以外でも使いたいメソッドはモジュールに切り出…

rubocop&rubocop-railsを導入してみる

rubocop&rubocop-railsを個人練習用リポジトリに導入してみました! その際の手順について書いておこうと思います! やり方 gemの導入 ローカル&CI上で動かしたいので:development, :testで使えるようにしました。 group :development, :test do 略 gem 'rub…

パスの連結はよろしくないらしい

以下のようにファイルパスを指定していたらrobocopに指摘されました。 deleted_image = File.new(Rails.root.join(‘public/deleted.jpg’), ‘r’) なんで良くないのか分からなかったので調べてみたところ以下の記事を発見しました。 qiita.com どうやらパスを…

[CircleCI] "You must use Bundler 2 or greater with this lockfile."というエラー

CircleCIの設定を自分でも書いてみたいと思い、自分の個人アプリにCircleCIを導入しておりました。 エラーが出て少々ハマった部分があったので書いておこうと思います! エラー内容 以下のように、bundle installを実行する部分で `You must use Bundler 2 o…

2次元配列のeachとselect

二次元配列をeachで回し、別の二次元配列と比較するという処理を読んで、「こんなことができるのか〜」と思ったのでその内容を書き留めておきます! 処理の内容 以下のような2つの2次元配列があり、その中身の配列が一致するものを判別したいという状況で…

モックが機能してくれない

あるjobのテストで、モックを使おうとしておりました。 ちゃんとかけている気がするのですが、モックが機能してくれておりません。。。 解決できておりませんが、試してみた内容について書いておこうと思います。。。 どんなモックを作りたいか pdfを作成す…

Rspecモブプロ

今日はTama.rbでRspecモブプロを行いました! 今回はcontroller specの章をエディタでチーム分けしてやっていきました! (自分はVScodeも使うのですが、人数的にRubyMineチームへ入りましたwVScode大人気だw) モブプロする中でこれは便利だと思ったことにつ…

loadとrequireとincludeとextendの違い

今日はメタプログラミングRubyの輪読会でした! 個人的にloadとrequireとincludeの違いについて整理しておきたくなったので書いておこうと思います! loadとrequireとincludeとextendの違い load loadはKernelのメソッドです。 ファイルを読み込みます。 同…

nil.to_i

発生した問題 以下のメソッドが呼ばれているところでbuz_accountsがnilになってエラーが発生してしまっておりました。 def has_multiple_buz?(foo_item) foo_item.bar_item .buz_accounts .pluck(:buz_id) .uniq .length > 1 end 以下のようにnilガードを挟…

Bundler.setupが読み込まれる流れを見てみる

昨日rails初期化を追っている中で、require 'bundler/setup’している部分がありました。 その時はそのプロジェクトで使うバージョンのgemをbundlerで読みこむ設定をしているというくらいしか調べませんでしたが、具体的に何をしているのかみてみようと思いま…

config/initializers

昨日銀座Railsへ行きました。 そこでgemつくる前にconfig/initializers配下に.rbファイル作って試せるということを知りました! さらにrailsを速く動かすために何を変えればいいかコードを追っているのをみて、自分も少しコードを見たくなったのでconfig/ini…

配列から重複している値を返す

配列から重複している値を消すにはuniqメソッドを使えば一瞬で完了しますが、重複している値を返すメソッドは見つかりませんでした。 しかしgroup_byを使って以下のように取得できることを知りました! irb(main):011:0> arry => [1546,1547,1549,1551,1552,…

rspecでモックを使う

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

メタプログラミングRuby音読会 #2

昨日はメタプログラミングRubyの輪読会へ参加してきました! 今回は、「モンキーパッチ」「継承とインスタンス化」「定数のスコープ」など今まで疑問が多かった内容について学ぶことができました!! 個人的に印象的だった内容について モンキーパッチ オー…

inner joinとouter join

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

Awesome Print

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

Nerima.rb #4へ参加した!

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

無名クラス

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

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

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

Sendagaya.rbへ行った

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

ハッシュ関数とソルト

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

Nerimarb#3へ行った!!

本日はNerimarbへ参加させていただきました! 今回のテーマはObjectクラスでした! みんなでるりまのObjectクラスの章を読み進めていきつつ、疑問を深掘りしてみたり、解説をしていただいたり、rubyの実装をみにいったりしていき、 気づいたことや試したこと…

社内LT会

今日は月に1度行われる社内のLT会がありました。 基本入社歴の短いメンバーはLT必須なので自分もLTをしました。 それ以外のメンバーは希望制です! LTのテーマは読んだ本について・試してみたツールについて等なんでもOKな自由な感じです。 自分の発表した…

TamaRuby会議無事おわった!

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