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

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

Ruby

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

Mastodon meets Prism

ESM Advent Calendar 2024の4日目の記事です。 こんにちは、構文解析器研究部員のS.H.です。 皆さんご存じかもしれませんが、最近RubyのデフォルトのパーサーとしてPrismが導入されましたね。 bugs.ruby-lang.org デフォルトのパーサーが変更されたことによ…

JRuby と SQL Server を利用した Rails の開発環境を作る

この記事は、永和システムマネジメントのアドベントカレンダー ESM Advent Calendar 2024 の 3 日目の記事です。 はじめに @wai-doi です。自分が以前アサインされていた Rails アプリケーションは、古い JRuby と Rails に SQL Server を組み合わせた構成の…

中高生国際Rubyプログラミングコンテスト2024に今年も協賛します

@junk0612 です。これからの社会を担う世代を対象にした Ruby のプログラミングコンテスト、『中高生国際Rubyプログラミングコンテスト2024 in Mitaka』に、今年も Gold PARTNER として協賛します。 www.ruby-procon.net 毎年さまざまなアイディア・工夫を凝…

Ruby Hack Challengeはじめました

こんにちは。構文解析器研究部員のS.H.です。 アジャイル事業部内ではじめたRuby Hack Challengeについて紹介します。 Ruby Hack Challengeとはなにか? 元々はRubyコミッターのko1さんがCookpadで開催されていたRubyの内部をハックするイベントです。 Ruby…

RuboCop の設定ファイルで、無効な cop を明示する書き方から有効な cop を明示する書き方に直してみた

はじめに こんにちは、@wai-doi です。 本記事では RuboCop の設定ファイルの .rubocop.ymlで、特定の cop の無効化を明示している書き方から、逆に、有効になっている cop の有効化を明示する書き方に直す方法を考えました。 やりたかったこと まず以下のよ…

パターンマッチで 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…