In Ruby 3.3.0, a new standard library was added to CRuby called Prism. Prism is a parser for the Ruby language, exposed as both a C library (optionally usable by CRuby) and a Ruby library (usable as a Ruby gem). The Prism project represents many person-years worth of effort, and is the result of a collaboration between Shopify, CRuby core contributors, other Ruby implementation authors, and Ruby t
このエントリーは Akatsuki Games Advent Calendar 2023 の15日目の記事です。 昨日は宮川さんの『which-keyはいいぞ』でした。宮川さんお手製のシェル用which-key、とても便利そうですよね!ぜひzshプラグインにしてほしいです。 この記事では、普段多くの人が使っているけど何をしているのかイマイチ分かりにくい Time-based One Time Password(TOTP) について、自前でクライアントを実装しながら理解していきたいと思います。 記事を読む上でのお願い この記事で紹介する実装は、あくまでTOTPの仕組みの理解を目的として作成されたものであり、秘密情報の機密性や通信経路の安全性の評価は行っていません。 実際にTOTPクライアントを利用する際は、Google Authenticatorなど、しっかりと安全性が評価された製品を使用し
『Ginza.rb 第87回 - Ruby 3.4について学ぶぞ』に参加した。会場はメドピアさん。今月もありがとうございます。 ginzarb.connpass.com 当日は、Ruby 3.4.0 のリリース記事をベースに willnet さんのファシリテーションによる Ruby 3.4 へのアップデートが特集された。 www.ruby-lang.org 中でも it ブロックパラメータと、chilled string まわりそれぞれに関連する参加者への問いかけは、RuboCop メンテナーという自身の側面への参考になったりした。あくまで今回の参加者の傾向として、it 以前の numbered block parameter が思いのほか使われていたようなのと、frozen string literal magic comment も概ね付けるようだった。 前者の it 構文については、
概要 原著者の許諾を得て翻訳・公開いたします。 英語記事: Binary Solo | Box brackets in Ruby class declarations 原文公開日: 2024/12/27 原著者: Ayush Newatia 日本語タイトルは内容に即したものにしました。 Railsを使ったことがあれば、作成したデータベースマイグレーションファイル内のクラス宣言で、以下の構文を見たことがあるはずです。 class CreateUserTable < ActiveRecord::Migration[7.1] def change # ... end end 正直に申し上げると、クラス定義のスーパークラス名に角かっこで[7.1]を書いても大丈夫な理由について、これまで何もわかっていませんでしたし、疑問に思ったことすらありませんでした。当時は、自分が気にする必要もないような、いかに
Ruby の private メソッドは『レシーバをつけて呼び出すことができない』という仕様です。 逆にいえば、『レシーバをつけないで呼び出す事ができれば、定義したクラス以外からも private メソッドは呼び出す事ができる』ということになる。 例えば private メソッドを定義してるクラスを継承すれば、継承先で private メソッドを呼び出すことができる。 [コード] class Base private def hoge :hoge end end class X < Base def test hoge end end X.new.test # => hoge X.new.hoge # Error: private method `hoge' called for #<X:0x000000012cec40> (NoMethodError) Ruby こわい。
I have a two part question Best-Practice I have an algorithm that performs some operation on a data structure using the public interface It is currently a module with numerous static methods, all private except for the one public interface method. There is one instance variable that needs to be shared among all the methods. These are the options I can see, which is the best?: Module with static ('
テーマは「動的型付け言語と大規模開発」まつもとゆきひろ氏:まつもとゆきひろです。Matzチャンネル17回目ということでお送りします。ちょっと前になりますが9月28日に私が技術顧問を始めたクラウドサーカスという会社さんがテックイベントを開催されて、その時のテーマが「動的型付け言語と大規模開発」というテーマでした。 その時に話したこととか、話そうとしたこと、話そうと思っていたんだけど時間の関係で話せなかったことなどを補足する意味も含めて今日はちょっと放送しようかと思います。というか、分量が多いので2回に分けて話そうかなと思っています。 このクラウドサーカスのイベントのテーマは別に私から指定したわけではなくて、先方が「こんなテーマで話したいんだ」とか「聞きたいんですけど」ということで設定されたんですね。 「動的型付け言語と大規模開発」。例えばRubyとか、Ruby on Railsとかで開発をし
今日Rubyを書いていて、なんじゃこれと思った動作があった。 試しに以下のコードを実行してみて欲しい。 class Foo attr_reader :hoge, :fuga, def initialize(a, b) p a p b end end Foo.new 実行してみると分かるが、これには例外が出ない。 initializeで定義した必須引数はどうなったのか? よくよく見るとattr_readerの引数の末尾に,がある。 つまり、このコードは分かりやすく書くと以下の様になる。 class Foo attr_reader(:hoge, :fuga, def initialize(a, b) p a p b end) end Foo.new このコードを更に分かり易く書くとこうなる。 class Foo def initialize(a, b) p a p b end attr_rea
はじめに こんにちは。リアーキテクティングチームの髙橋と申します。 この記事では、アンドパッドの施工管理サービスで利用している Ruby をバージョンアップしたときに発生したメモリ使用量の問題の発生から解決までをお話しします。 Ruby のバージョンアップ(3.0 -> 3.2) アンドパッドでは昨年 2023 に、施工管理サービスで利用している Ruby を 3.0 から 3.2 にバージョンアップしました。 バージョンアップ自体は過去に確立済みの手法(詳しくは過去記事をご参照ください)により、粛々と進められリリースされました。 ところがこのリリースから数日後、とある問題が発覚しました。 メモリ増大問題 アプリケーションのリソース使用状況を監視している SRE チームのメンバーから、以下のような連絡がありました。 Ruby バージョンアップのリリース以降、アプリケーションの利用するメモリ
[edit] 要約 Ruby の Virtual Machine のコンパイル済みの命令シーケンスを表すクラスです。 Method、Proc オブジェクトや Ruby のソースコードを表す文字列から VM の命令シーケンスを得る事ができます。また、 RubyVM::InstructionSequence オブジェクトを元に命令シーケンスを読みやすい文字列に変換する事もできます。Ruby の命令シーケンスコンパイラの設定を扱う必要がありますが、Ruby の VM がどのように働くかを知るのに有用です。 VM の命令シーケンスの一覧はRuby のソースコード中の insns.def から参照できます。 https://github.com/ruby/ruby/blob/master/insns.def 目次 特異メソッド compile compile_file compile_option
プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。4回目は、Rubyコミュニティが生存するために必要なことについて。 前回はこちら。 Rubyコミュニティが生存するためには何が必要か まつもとゆきひろ氏(以下、まつもと):さて、これらの教訓をもとに、Rubyの未来はどうなるかについて考えてみましょう。 教訓をもう1回まとめておきますね。アイデアだけでは、価値がない。単純さは、いつもいいこととは限らない。仕様が大きいことは、いつも
プログラミング言語「Ruby」の国内最大のビジネスカンファレンス「RubyWorld Conference」。Rubyの先進的な利用事例や最新の技術動向、開発者教育の状況などの情報を発信することで、「Rubyのエコシステム(生態系)」を知ることができる場として開催します。ここで登壇したのは、Rubyアソシエーション 理事長のまつもとゆきひろ氏。プログラミング言語の過去、歴史から学ぶ教訓について発表しました。全4回。3回目は、「Second System Syndrome」について。前回はこちら。 退屈は最大の敵 まつもとゆきひろ氏:次はPerlですね。ここまでですでに4回ぐらいPerlの話題が出てきています。なぜかというと、私はPerlが大好きなんですね。実は、Perlが大好きなんですが、Perlのプログラミングは大好きじゃないんですね。あと、Perlのソースコードも大好きじゃないんですね
Gemfile での Ruby バージョンの指定を、値の直書きではなく .ruby-version からの読み込みに変更する設定です。 https://github.com/rubygems/rubygems/pull/6876 例えば、Rails アプリケーションなんかで Gemfile に .ruby-version と同じ 3.3.0 を指定しているようであれば、以下のように記述できます。 -ruby '3.3.0' +ruby file: '.ruby-version' asdf に類するものを使っているようであれば、ruby file: '.tool-versions' と記します。 https://github.com/rubygems/rubygems/pull/6898 この設定によって Ruby のアップデート時のバージョンの更新ポイントを減らすことができます。 なお、古
Programmers at large seem eternally skeptical of style. And I’m not just talking about the stereotype of nerds in uncoordinated outfits or using pocket protectors. But style in the broad sense of aesthetics. Many appear imbued with fundamental opposition to the idea that how something looks should even matter. That somehow such a focus is conflict with where it ought to be: on substance. This is v
追記(2024/04/11) その後Docker Hubのdocker-library/rubyで本記事の問題が修正されました↓。これにより、Docker HubのRuby 3.3.0イメージは正常に動くようになりました。 PR: Workaround 3.3.0 crash on aarch64 by osyoyu · Pull Request #439 · docker-library/ruby M1 Macbook Pro 2021, Sonoma 14.2.1 Ruby: 3.3.0 Rails: 7.2.1 Docker: 24.0.6, build ed223bc Docker Desktop for Mac: 4.25.2 (129061) Docker Hub: 3.3.0-slim-bookworm 経緯 Ruby 3.3.0リリースの翌日にDocker Hubでも公式の
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く