Ruby

methds メソッド

本日ランチの時間に、会社のエンジニアメンバーと好きな 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へ参加した

本日TokyoGirls.rb Meetup vol.2へ参加しました!去年の第一回目に参加して楽しかったし、各セッション面白そうなものばかりだったので以前から気になっておりました!とってもよかったので記憶が薄れないうちに各セッションを聞いて感じたことや気づいたこ…

RipperとRubyParser

今日とあるプルリク上でrubyで書かれたコードをパースする話が出てきました。 気になったので調べてみました。 Rubyで書かれたコードをパースする方法はいくつかあるようです。 RubyParserを使う gem install ruby_parser を実行してruby_parserをローカルに…

ナンバーパラメータ

昨日ruby2.7から入る新機能の1つとして紹介があったナンバーパラメータについて、試せていなかったので試しました! ナンバーパラメータとは ブロックの仮引数を宣言しなくても_1、_2、_3、、、というように`_引数の番号`で参照できる機能です。 最初は`@引…

Ruby Hack Challenge Holiday #9 Ruby 2.7 + 年末LT大会へ参加した

本日はRuby Hack Challenge Hpliday #9 Ruby 2.7 + 年末LT大会へ参加しました!以下がイベントリンクです。https://rhc.connpass.com/event/155899/ まずruby2.7の新機能について紹介していただき、その後各自作業を進めました。やっと自分もruby 2.7.0から…

&、-、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して持ってこようかと思いましたが、コンソール上で無名クラ…