酢昆布とか梅干しとか酸っぱいものが好きなんですが一度にたくさん食べすぎると知覚過敏になるということを最近知りました。 さてエンペイでは技術的負債が溜まらないよう、利用している言語やライブラリのアップデートを定期的に行っています。サーバーサイドのライブラリに関しては dependabot を利用して毎スプリント(エンペイでのスプリント周期は1週間)、タスクを積んで対応しています。(フロントエンドに関してはしばらく滞っているのでそこは今後の課題ですね 😅 )
技術部の笹田(ko1)と遠藤(mame)です。クックパッドで Ruby (MRI: Matz Ruby Implementation、いわゆる ruby コマンド) の開発をしています。お金をもらって Ruby を開発しているのでプロの Ruby コミッタです。 本日 12/25 に、ついに Ruby 3.1.0 がリリースされました(Ruby 3.1.0 リリース )。今年も Ruby 3.1 の NEWS.md ファイルの解説をします。NEWS ファイルとは何か、は以前の記事を見てください。 プロと読み解く Ruby 2.6 NEWS ファイル - クックパッド開発者ブログ プロと読み解くRuby 2.7 NEWS - クックパッド開発者ブログ プロと読み解くRuby 3.0 NEWS - クックパッド開発者ブログ 本記事は新機能を解説することもさることながら、変更が入った背景や苦労な
技術部の笹田です。今日保育園に娘を送りにいったら、娘が先生に「サンタさんにプレゼントもらったよ! お母さんもプレゼントもらってたけどお父さんはもらってなかった!」と報告しており、私だけが悪い子と保育園に伝わってしまいました。 2021年は、笹田は Ruby 3.1 に導入された debug.gem (ruby/debug: Debugging functionality for Ruby)に結構長い時間をかけました(かけてしまいました)。だいたい半年で終わるだろうと思ってたんですが、終わらず。Ractor をもっとやる予定だったんだけどなぁ。ソフトウェア開発の見積もりは難しいですね。 本記事では、debug.gem について、導入の背景、簡単な使い方、それからちょっと面白い機能までご紹介します。 youtu.be (本稿では動画をいくつか載せていますが、動画作成時と記事執筆時が違うので、そ
この記事は「ESM Advent Calendar 2021」の1日目の記事です。 adventar.org RuboCop のバックエンドでは、Ruby を解析して AST (抽象構文木) の Ruby オブジェクトとして扱えるようにする Parser gem を使っています。Parser gem のメンテナンスは、Ruby の parse.y に入った構文のアップデートを元に行っています。本エントリでは parse.y の観察を元にして、クリスマスのリリース予定までカウントダウンとなっている Ruby 3.1 構文のアップデート (2021年12月1日時点) をまとめてみます。 新構文 Hash リテラルの値省略の構文が追加される 匿名ブロック移譲の構文が追加される パターンマッチに pin オペレーターが追加される 既存構文の拡張 endless メソッド定義の本体メソッド呼び出しの
でました。 リリースノートはこちら。 Ruby 3.1.0 Preview 1 Released NEWS rbenv を使っている方は、 $ rbenv install 3.1.0-preview1 してもらえるとローカルにインストールすることができます。 以下、気になった機能追加や変更点など。 新しい JIT コンパイラとして実験的に YJIT が追加された Ruby 3.1 では新しい JIT コンパイラとして YJIT が追加されます。 YJIT はデフォルトでは有効になっていないので有効にする場合は Ruby のコマンドプションに --yjit を指定する必要があります。 YJIT を使用することで Rails のベンチが最大22%向上するらしいですね、すごい。 また現状 YJIT は macOS と Linux の x86-64 環境でのみ対応しているらしいです。 新しいデバッ
すべての説明はイチRubyユーザーの個人的で期間も限定的な観測範囲に基づきます。 「Rubyには型がない」 ある日、同僚とプログラミング言語に関する雑談をしていたときに言われた一言です。 私はその日までRubyの型機能は使っていませんでした。忙しい毎日を送り、キャッチアップを疎かにしていたのです。後日このことは猛烈に反省することになります。 「Rubyには……型があるッ……!」 火がついた私はパターンマッチの時と同様にRubyの型についてキャッチアップすることにしました。そして最高の体験が待っていました。 導入した後の世界 ぶっちゃけRubyの型を導入するとどうなるのでしょうか? メチャクチャ簡単に説明すると、エディタでバグがひと目で分かるようになります。 vscodeでの画面です。なにやら赤線がついています。 === bar === barの部分にカーソルを合わせてみましょう。 「Pos
2021年なのでこれくらいは欲しい。 Ruby 2.7.4 VSCode バイナリgemを確実にビルドできる コードフォーマッタ Lint デバッガ コード補完 それぞれは独立した機能なので全部入れなくてもいいと思います。(個人的には上から順に必須度が高い) Ruby 2.7.4 Ruby3自体は安定しているがgem周りの挙動が若干安定していなかったのでこちらを採用した。 (RubyInstallerも2.7系をまだおすすめしていた。) https://rubyinstaller.org/downloads/ rubyinstaller-devkit-2.7.4-1-x64.exeをダウンロードしてインストール。 Rubyのインストール終了後にmsysなどもインストールしてくるか聞いてくるので基本的には全てインストール。 バイナリgemのインストール スタートメニューに「Start Com
こんにちは、フルタイムRubyコミッタの遠藤です。 Ruby 3.0が出てもう4ヶ月経ってしまいました。最近のTypeProfの開発ですが、vscode拡張として使えるようにするために、一生懸命Language Server Protocolをいじって遊んでるところです。 今日の成果です。 RBS が .rb と別ファイルなのが面倒という問題、vscode 拡張をちゃんと作れば解決できそう(まだ実現可能性を調べただけで中身はありません)。 pic.twitter.com/tv6xB0Tm59— Yusuke Endoh (@mametter) 2021年4月2日 こっちのほうはまだ実験段階なので、まとまったころに説明するとして、今回は、Ruby 3.0リリース後にほそぼそとやっていたemrubyをご紹介してみます。 emrubyとは ブラウザの上で動くMRI(Matz Ruby Inter
Ruby 3.0.1, 2.7.3, 2.6.7, 2.5.9 がリリースされた。安定版へのメンテナンス、リリースありがとうございます。 https://www.ruby-lang.org/ja/news/2021/04/05/ruby-3-0-1-released/ https://www.ruby-lang.org/ja/news/2021/04/05/ruby-2-7-3-released/ https://www.ruby-lang.org/ja/news/2021/04/05/ruby-2-6-7-released/ https://www.ruby-lang.org/ja/news/2021/04/05/ruby-2-5-9-released/ 脆弱性対応 Ruby 3.0 系から、このたび EOL になった 2.5 系まで含めると、以下3つの脆弱性への対応となるようです。 C
僕はRubyで開発をする時は毎回Pryを使うくらいの熱狂的Pryユーザーだったのだが、PryはGemfileに書いてないと binding.pry できなくて不便。任意のgemをdefault gem化するgem default コマンドも作ったのだが、これをやるのすら面倒だと思っていた。 ある日、nobuさんがRubyに binding.irb という機能をいれた。Pryがdefault gemになるのを待つよりPryで僕が使う機能をIRBに全部移植してしまった方が早いのではないかと思い、4年前からPryの機能の移植活動を始め、今日僕がよく使う機能を全て移植し終えた。 その記念に、この記事ではIRBのPry互換の機能を紹介する。昔 今更聞けないpryの使い方と便利プラグイン集 という記事を書いたんだけど、この中で僕が毎日のように使うコマンドは全てIRBに移植したので、それを紹介する本稿を
RubyKaigi Takeout 2021 is ended, thank you for attending! Video archive is available and linked from schedule page. Stay tuned for next RubyKaigi and follow Twitter @RubyKaigi for latest updates. RubyKaigi goes online again We RubyKaigi 2021 team have booked the venue to make RubyKaigi 2021 happen in Mie Prefecture this July (with some hope). However, the COVID-19 situation is still unclear and un
RuboCop Performance 1.10 をリリースした。 JST で 3月1日に 1.10.0 をリリースして、3月2日に 1.10.1 をバグフィックスリリースした。以下、2つの新 Cop が目玉です。 Performance/RedundantSplitRegexpArgument cop 機能リクエストがあがっていた Cop をコントリビュータが実装してくれました。split メソッドの引数について正規表現ではなく文字列で十分というケースを検出する Cop です。 # bad 'a,b,c'.split(/,/) # good 'a,b,c'.split(',') 1.10.0 の時点だと 'oneSplittwo'.split(/split/i) といった ignore case オプションも警告する偽陽性があったため、1.10.1 で修正リリースしています。 Perfo
EC 事業部の akatsuura (@UVB_76) です。最近は AFTER SIX LEAGUE という企業対抗戦の Apex Legends 部門に参加していて、毎月他の企業の参加者と競っています。 ペパボではお昼休みに OSS コードリーディング会という GitHub で公開されているライブラリのコードを読みすすめる会が開かれています。私はこの会が始まった 2019 年から参加し続けています。気がついたら 50 回近くの開催となっていたのでこの機会に進め方やわかったことをここで共有します。 尚、現在の参加者は Ruby on Rails で開発を行っている人たちがほとんどで、コードリーディングの対象も gem 形式で公開されている Ruby のライブラリが中心になっています。記事の中には Ruby 固有の話も出てきますが、他の言語でも読み方自体については同じようなことができるので
「puppeteer-rubyは、Capybaraと共存して動作精度を向上できるのでは?!」っていうことに先週くらいにふと気づいたので、カッとなって実装してみた。 github.com CapybaraとPuppeteerの共存 そもそもなんで共存させる必要があるのか? Seleniumだと「○○の要素が現れるまで待つ」「△△の要素が消えるまで待つ」みたいなところで、時々DOMの変化通知を拾いそこねて、失敗してしまうことがある。 PuppeteerはDOMの変化通知には強い。ただ、全部をPuppeteerで書き直す気力は無い...。 みたいな感じで、SeleniumやCapybaraの既存コードをなるべく書き換えないうえでPuppeteerのを動かしたい需要は、割とある気がした。 で、需要はありそうなのに、世の中にあるのは twalpole/apparition rubycdp/cupri
例えば日記を書くときに、午前 2 時に書いたものは前日分としたいことがある。またユーザがメチャクチャ多いサービスでは、0:00 を回ったら翌日のログインボーナスを配る、としていると、まだユーザが多い時間にサーバの処理が要求されて大変なので、28:00 を日付変更線にしたいことがある。 こういうときには module AppTime def self.beginning_of_day(time) t = time.change(hour: 4) t <= time ? t : t - 1.day end end を作って、 AppTime.beginning_of_day(Time.current) を使うと「アプリ内の日付変更線では何日なのか」が取れる。 # 02:00 は前日扱い time = Time.zone.parse("2021-01-31 02:00") AppTime.beg
Ruby Standard Gems About Ruby's Gemified Standard Library Large portions of Ruby's standard library come in the form of RubyGems, which can be updated independently from Ruby. There are two different kinds of standard gems: Default gems: These gems are part of Ruby and you can always require them directly. You cannot remove them. They are maintained by Ruby core. Bundled gems: The behavior of bund
RubyKaigi 2016 の後の移動中に hsbt さんに bundled gem と default gem との違いについて聞いてみた話をまとめてみました。 違い bundled gem は単なる gem で gem uninstall もできる普通の gem default gem は uninstall できない bundler の clean_env 環境でも見える bundler で別のバージョンを指定してインストールしていれば、通常の bundler の load path の挙動に従って、そちらが使われる たとえば ruby 2.3.1 だと lib/ruby/gems/2.3.0/gems/rdoc-4.2.1 に bin/rdoc と bin/ri しかなくて他は lib/ruby/2.3.0/rdoc* などの標準添付のところに入っている というような違いだと聞き
この記事は2020年ふりかえりアドベントカレンダー 2日目です。昨日の記事は 2020年の終わりと2021年に向けての準備をするぞという気持ち - いまブログ です。 Ruby リファレンスマニュアルとは Ruby の日本語版の公式ドキュメントです。略して「るりま」と呼びます。Ruby を書いたことがある方なら一度は読んだことがあるのではないでしょうか。 オブジェクト指向スクリプト言語 Ruby リファレンスマニュアル (Ruby 2.7.0 リファレンスマニュアル) るりまは GitHub 上で管理されていて、誰でも修正したり、議論することができます。今回は、るりまを修正したい、気になる点を挙げたい、と思ったときにどうやったらいいのかということを書きます。 るりまのリポジトリ:rurema/doctree: Repository of Japanese Ruby reference ma
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く