Ruby
本日ランチの時間に、会社のエンジニアメンバーと好きな Ruby (or Rails) のメソッドについてというテーマでおしゃべりをしました。 メソッドの末尾に?が使えることが良い、injectメソッドが良い、pメソッドが良いと言った意見が出ておりました! 私は好きな…
文字列を配列に入ったハッシュにしたい状況がありました。 具体的には以下のような変換をしたいと思っておりました。 "[{{day: '2019/12/22', value: '5000'},{{day: '2019/12/22', value: '5000'}]" => [{:day=>"2019/12/22", :value=>"5000"}, {:day=>"201…
本日TokyoGirls.rb Meetup vol.2へ参加しました!去年の第一回目に参加して楽しかったし、各セッション面白そうなものばかりだったので以前から気になっておりました!とってもよかったので記憶が薄れないうちに各セッションを聞いて感じたことや気づいたこ…
今日とあるプルリク上でrubyで書かれたコードをパースする話が出てきました。 気になったので調べてみました。 Rubyで書かれたコードをパースする方法はいくつかあるようです。 RubyParserを使う gem install ruby_parser を実行してruby_parserをローカルに…
昨日ruby2.7から入る新機能の1つとして紹介があったナンバーパラメータについて、試せていなかったので試しました! ナンバーパラメータとは ブロックの仮引数を宣言しなくても_1、_2、_3、、、というように`_引数の番号`で参照できる機能です。 最初は`@引…
本日はRuby Hack Challenge Hpliday #9 Ruby 2.7 + 年末LT大会へ参加しました!以下がイベントリンクです。https://rhc.connpass.com/event/155899/ まずruby2.7の新機能について紹介していただき、その後各自作業を進めました。やっと自分もruby 2.7.0から…
今日使ったArrayクラスのメソッドについてメモしておきます。 何回も使ったことあるのにいつも記憶が曖昧で調べている気がしますw & 複数の配列を比較して重複してる値を返してくれます。 [1,2,3,4,5,] & [2,3,4,7] => [2,3,4] - 2つの配列を比較し、前者の…
昨日はSQLでのトランザクションについて書いたので、 今日はアクティブレコードでのトランザクションについて調べてみました! 書き方 以下のように書くことができます。 ① モデル.transaction do ② DBに変更を加える(updateやdeleteなど)③ end④ 上手くいっ…
銀座Railsへ行って、Railsコミッターの@kamipoさんと@yahondaさんのセッションをお聞きしてきました! Active Recordの難しい話もありましたが、お話が面白かったので分からないなりにも楽しむことができました!! 自分もすぐに取り入れていこうと思った内…
本日はGrow.rbで例外処理とループ処理について学んできました! 以下はGrow.rbのイベントページです! growrb.doorkeeper.jp 制御構文 まずはループ処理の流れを変えるメソッドについて確認しました! 以下は制御構文についてまとめてあるるりまのページです…
rubocopのgemだけバージョンアップしたく、以下のようにコマンドを実行しておりました。 conservativeというオプションは、依存関係にあるgemをupdateしないためのオプションです。 bundle update --conservative rubocop しかし、これだとbundlerまで2.0.2…
ローカルでrubocopを実行し忘れたままリモートへプッシュしてしまうことが多く、申し訳ないなと思っておりました。 sleckのgithubの通知が飛んでくるチャンネルが自分へのrubocopからの指摘で埋もれる。。。w 「ローカルで実行する癖をつけなくては」と日報…
本日はTamarbのRspecモブプロがあり、今回はfeature specを書き進めていきました。 以前と同様、エディタごとにチーム分けをし、自分は人数比的にRubyMineチームへ参加しました。 知ったこと 1つのファイル内以外でも使いたいメソッドはモジュールに切り出…
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の設定を自分でも書いてみたいと思い、自分の個人アプリにCircleCIを導入しておりました。 エラーが出て少々ハマった部分があったので書いておこうと思います! エラー内容 以下のように、bundle installを実行する部分で `You must use Bundler 2 o…
二次元配列をeachで回し、別の二次元配列と比較するという処理を読んで、「こんなことができるのか〜」と思ったのでその内容を書き留めておきます! 処理の内容 以下のような2つの2次元配列があり、その中身の配列が一致するものを判別したいという状況で…
あるjobのテストで、モックを使おうとしておりました。 ちゃんとかけている気がするのですが、モックが機能してくれておりません。。。 解決できておりませんが、試してみた内容について書いておこうと思います。。。 どんなモックを作りたいか pdfを作成す…
今日はTama.rbでRspecモブプロを行いました! 今回はcontroller specの章をエディタでチーム分けしてやっていきました! (自分はVScodeも使うのですが、人数的にRubyMineチームへ入りましたwVScode大人気だw) モブプロする中でこれは便利だと思ったことにつ…
今日はメタプログラミングRubyの輪読会でした! 個人的にloadとrequireとincludeの違いについて整理しておきたくなったので書いておこうと思います! loadとrequireとincludeとextendの違い load loadはKernelのメソッドです。 ファイルを読み込みます。 同…
発生した問題 以下のメソッドが呼ばれているところでbuz_accountsがnilになってエラーが発生してしまっておりました。 def has_multiple_buz?(foo_item) foo_item.bar_item .buz_accounts .pluck(:buz_id) .uniq .length > 1 end 以下のようにnilガードを挟…
昨日rails初期化を追っている中で、require 'bundler/setup’している部分がありました。 その時はそのプロジェクトで使うバージョンのgemをbundlerで読みこむ設定をしているというくらいしか調べませんでしたが、具体的に何をしているのかみてみようと思いま…
昨日銀座Railsへ行きました。 そこでgemつくる前にconfig/initializers配下に.rbファイル作って試せるということを知りました! さらにrailsを速く動かすために何を変えればいいかコードを追っているのをみて、自分も少しコードを見たくなったのでconfig/ini…
配列から重複している値を消すにはuniqメソッドを使えば一瞬で完了しますが、重複している値を返すメソッドは見つかりませんでした。 しかしgroup_byを使って以下のように取得できることを知りました! irb(main):011:0> arry => [1546,1547,1549,1551,1552,…
apiが絡む部分のテストで、実際にはリクエスト投げて欲しくない部分がありました。 そんな時はモックを使うと便利だと知ったので書いておきます! 具体的な状況 HogeBuildJobの中にapiのリクエスト投げてしまう処理がありました。 最初、api投げる処理の直前…
昨日はメタプログラミングRubyの輪読会へ参加してきました! 今回は、「モンキーパッチ」「継承とインスタンス化」「定数のスコープ」など今まで疑問が多かった内容について学ぶことができました!! 個人的に印象的だった内容について モンキーパッチ オー…
ActiveRecordのjoinsとpreloadとincludesとeager_loadの違い - Qiita 上記リンクの記事を何度か読んだことがあるのですが、 そもそもinner joinやouter joinについてよくわかっていなかったため、「includesしとけば万能そう」という理解しかできておりませ…
メタプログラミングRubyを読んでいたら Awesome Print というgemが登場しました。 インデントやカラーリングをつけてくれるgemです。 自分も入れてみることにしました! 普通の使い方 gem install awesome_print を実行し、 コンソール立ち上げたとき requir…
本日はNerima.rbへ参加させていただき、前回の続きでObjectクラスについて読み進めていきました! docs.ruby-lang.org 印象的だった内容 1. ライブシェア 今回はVScodeのライブシェア機能を使い、スクリーンに写しているターミナルを皆操作できる状態で進め…
ある機能に関してブランチを分けて実装している際、 別ブランチで作成しているクラスのインスタンスが今のブランチで実装しているメソッドを使えるか試したいことがありました。 別ブランチをpullして持ってこようかと思いましたが、コンソール上で無名クラ…