ESM アジャイル事業部 開発者ブログ

永和システムマネジメント アジャイル事業部の開発者ブログです。

Ruby

Ruby に関する記事の一覧です。

パターンマッチで NODE_ONCE に対応するようにした

こんにちは、構文解析研究部員の S.H. です。 社内でやっているエンジニアお茶会で (@koic) さんから以下のIssueの件で「Rubyのパーサー周りの問題ではないか」と相談を受けました。 github.com そこで調査したところ比較的簡単に修正できそうなことが分かり…

RubyConf Taiwan 2023 で発表してきました

こんにちは。@junk0612です。 この記事は ESM アドベントカレンダーとは特に関係のないカンファレンス参加記事ですが、せっかくここを見に来たのならぜひついでに覗いていってください。アジャイル事業部メンバーに限らず、面白い記事がたくさん書かれていま…

parse.y を読み解いて、Ruby の文法を理解する

イントロダクション 世はまさに大パーサー時代。人々はパーサーの海へと繰り出す。 ――― kaneko.y RubyKaigi 2023 における "the bison killer" による大パーサー時代の幕開け宣言からはや4ヶ月が経ちました。みなさまいかがお過ごしでしょうか。@junk0612 で…

中高生国際Rubyプログラミングコンテストに今年もゴールドパートナーで協賛します

これからの社会を担っていくことになる世代に向けての Ruby プログラミングコンテストである『中高生国際Rubyプログラミングコンテスト2023 in Mitaka』に、今年もゴールドパートナーとして協賛します。 www.ruby-procon.net 昨年もゴールドパートナーとして…

計算結果を記憶する法〜オブジェクト・プロセス・プログラム・テーブル

仕事の Ruby と趣味の Elixir を反復横跳びしている e.mattsan です。 近ごろ仕事では Ruby 以外ばかり書いている気もしなくもないですが、それはそれとして。 Elixir は関数型言語に分類されるプログラミング言語なわけですが。 関数型言語は変数が不変であ…

Rubyに導入されたparse.yのUniversal Parserをビルドしてみる

こんにちは、構文解析器研究部員の S.H. です。 最近Rubyに導入された parse.yのUniversal Parser 周りに興味がありパッチを投げています。 github.com github.com そういった背景からRubyの parse.yのUniversal Parser を頻繫にビルドする機会があり、せっ…

Tempfile.open と Tempfile.create の違い

はじめに こんにちは、@wai-doi です。RubyKaigi 2023 が楽しみですね。 最近お仕事で、Ruby の Tempfile.open でテンポラリファイルを作成しているコードを読んで、理解する機会がありました。 Tempfile.open のリファレンスマニュアルを調べてみると、他に…

Ruby や Rails の API ドキュメントを Dash で素早く検索しよう

この記事は、ESM アドベントカレンダー2022 の 2 日目の記事です。 adventar.org はじめに こんにちは、wai-doiです。 日頃 Rails の開発をしていて、メソッドを調べたりするときなどで API ドキュメントを参照することがよくあると思います。 ご存じの方も…

Redis のパフォーマンス問題を RuboCop で検知

ソフトウェアエンジニアの 9sako6 です。 Ruby でソフトウェアを開発する際、パフォーマンス低下を引き起こすような良くない Redis のクエリが入り込まないよう RuboCop に見張ってもらうようにした話をします。 パフォーマンス低下の実例 私が開発に参加し…

RSpecで引数に特定の値が渡された時だけスタブしたい

はじめに こんにちは。入社して4年目になりました、wai-doi です。 お仕事でRSpecでテストを書いていて、 「引数に特定の値が渡された時だけスタブしたい」 ということがありました。そのときどのように書けばよいか分からなかったので、今回は調べたことと…

U+301C from UTF-8 to Windows-31J (Encoding::UndefinedConversionError) に対応する

こんにちは。ima1zumi です。 私の開発している Rails アプリでは、Excel で読み込めるように 文字コードを Windows-31J に変換して CSV を出力する機能があります。 先日、CSV 出力にて Unicode の波ダッシュ 〜 を Windows-31J に変換しようとして Encodin…

CI fail は突然に ~CircleCI の cimg が compose v2 を使うようになって~

メリークリスマス! yucao24hours です。 こちらがおそらく 2021 年最後のアジャイル開発ブログとなります(予定)。今年も一年、私たちのブログに目を通していただきありがとうございました。 さて、今回は自分が関わっている数プロジェクトで発生した、突…

red-datasets の使い方と利用できるデータセットを調べてみた

この記事は、ESM Advent Calendar 2021 10日目の記事です。 adventar.org はじめに red-datasets の使い方 ダウンロード先について データセットの種類 機械学習で用いるデータセット それ以外のデータセット Datasets::CLDRPlurals Datasets::EStatJapan::S…

Railsでポリモーフィック関連を使った話(理由、必要な作業、注意点)

こんにちは、アジャイル事業部 9sako6 です。 私のいるプロジェクトで大きなエンハンスが行われ、その中で Polymorphic Association(ポリモーフィック関連) を使う場面がありました。 ポリモーフィック関連を選択した理由や行った作業、注意点について話し…

ぼくがかんがえたさいきょうの Input object

こんにちは。最近筋トレにはまっている wat-aro です。 blog.agile.esm.co.jp で Input object が紹介されていますが、実際に使っていくとネストしたパラメータの扱いに困ったためその解決方法を紹介します。 この記事のコードはすべて https://github.com/w…

Rubyで任意の文字列を削除するメソッドの速度を比較してみた

はじめに こんにちは、wai-doiです。 Railsアプリケーションを開発していて、文字列の削除をするコードを書くことがあると思います。 例えば以下のようなコードです。 zip_code = '123-4567' zip_code.gsub(/-/, '') #=> 1234567 この例では String#gsub を…

RuboCop オリジナル Cop 活用のオススメ

こんにちは、夜な夜なフォーチュンタワーに登っている nsgc です。 複数人でプロダクトやサービスを作る際に可読性や保守性を向上させるため、 コーディング規約を用意してフォーマットを統一したり、あきらかに不要な記述を静的解析ツールでチェックするこ…

Ruby組み込みライブラリの型を書くのはそんなに大変じゃなかった

aikyoです。 はじめに Ruby3.0で、型定義を書けるRBSが導入されました。 私は以前にRubyのFileクラスの型定義を書いたので、Cで書かれたRubyの組み込みライブラリの型定義を書くのもそこまで大変ではないよということについて書いていきます。 現在のRBSの状…

【Rails 6.1】AS 句で作ったカラムに DB の型情報はない

本記事の環境 Rails 6.1.1 結論 9sako6 です。突然ですが、 AS 句で作ったカラムに DB の型情報はありません。 次の例をご覧ください。スキーマに日時型で定義されている created_at カラムは TimeWithZone オブジェクトが返るのに対し、AS 句で作った lates…

たくさんのファイルを巨大なアーカイブファイルにしてアップロードする

たくさんのファイルを同時に扱う際には、その処理が使うリソースに注意したいものです。さいきん私が直面した課題は、AWS S3 のあるバケットに保存されている大量のファイルをひとつのアーカイブファイルにして別のバケットに配置するというものでした。ひと…

実務コードレビューから新卒が得た学び(Developer Experience 編)

2020年度新卒、くさころ (9sako6)です。Rails アプリケーションのプロジェクトにアサインされてもうじき2ヶ月になり、その間に15くらいの Pull Request (以降、PR)を出しました。PR についたコメントは合計400弱、そのうちのある大きめの PR の Conversation…

graphql-batch でバックエンドへのクエリを減らす

こんにちは、hibariya です。最近 ミートアップ が開催されるなど、GraphQL が静かに注目を集めていますね。GraphQL は Web API で使えるクエリ言語です。GraphQL 自体は特定のデータベースに依存しないため、RDBMS を使ったアプリケーションで採用すること…

改訂2版 パーフェクトRubyが出版されました

こんにちは。takkanm です。 本日 2017/05/17 は、弊社メンバーが関わっている書籍パーフェクト Ruby の改訂2版の発売日です。 パーフェクト Ruby は、Ruby に関する内容を言語仕様から、メジャーなライブラリまでを網羅することを目的とされた書籍です。 弊…

Rubyでprivateなクラスメソッドを定義するには

先日、privateなクラスメソッドを定義しようとして、つまづきました。 なので、僕が実装に失敗したパターンと正しい実装方法を記載したいと思います。 失敗パターン まず、僕が実装に失敗したパターンです。何事もなく呼び出せてしまっています。 class C pr…

Rails5でミドルウェアの位置を変える

こんにちは、hibariya です。先日から、自分のかかわっている Rails アプリを 5.0.0 にアップグレードしています。そのときに意外な箇所でつまずいたことを書きたいと思います。なお、全体的なアップグレードについては公式の A Guide for Upgrading Ruby on…

Ruby 2.4.0-(dev|preview1) で Symbol not found: _rb_cFixnum が起きたときの対処

@koic です。 昨日、Ruby 2.4.0-preview1 がリリースされた時事ネタということで、Ruby 2.4.0 にまつわる TIL です。 Ruby 2.4.0 で Fixnum と Bignum が Integer に統合されます。この変更によりネイティブビルドを要した gem の実行時に Symbol not found:…