Railsのアップデートの際に、新しいバージョンの config のデフォルト値を少しずつ反映させるときに new_framework_defaults_x_x を使うと思います。 今回、config.load_defaults 6.1 へ上げる前に、Rails.application.config.active_record.has_many_inversing = trueの設定をしても反映されないことがありました。 たまたま今回は has_many_inversing でハマりましたが、他の設定でも同様ですし、new_framework_defaults 以外の config/initializers/* での設定も同様にRails.application.config.xxxの設定が反映されない可能性があるので記事にしてみました。 結論 初期化時の読み込み順によっては、config
はじめに プログラミングをする上で苦労するポイントの一つに、デバッグがあると思います。リンターなどを使って事前にバグを発生させないようにすることもできますが、それを行ってもなおバグは発生することはあると思います。自分はデバッグに結構苦労しているので、簡単にできるようになるツールなどがあると嬉しいと思っていました。 今年のRubyKaigiでは、デバッグを楽にするVS Codeの拡張機能が紹介されていたので、今回はそれを使ってみたいと思います。 debug.gem と Debug Visualizerを使ってみる debug.gemとは debug.gemはRubyのデバッガであり、Ruby 2.6 以降で利用することができます。Ruby 3.1 以降では、標準ライブラリとなっています。このdebug.gemは、元々あったlib/debugの取って代わるものとしてリリースされました。 deb
はじめに この記事は、記事投稿キャンペーン「【RubyKaigi 2023 連動イベント】みんなで Ruby の知見を共有しよう」の記事です RubyKaigi 2023 の Day 2 (2023/05/12) 16:00 - 16:30 Takashi Yoneuchi (tw:@lmt_swallow)さんの 「Eliminating ReDoS with Ruby 3.2 」 でお話があった ReDoS のタイムアウトについて実際に動かして検証してみました。 ReDoS について ReDoS は、Regular expression Denial of Service の略称です 正規表現の評価に時間がかかる文字列を入力しリソースを占有する攻撃です。 ReDoS について詳しくまとめてくださっている @flat-field さんの記事のリンクを張り説明は省略します。 また、 Rub
Rubyでnil.to_sと叩くといわゆる空文字("")が返却されます。 しかし、Ruby 2.6以前と2.7以降では微妙に扱いが違い、2.7以降ではfrozen stringが返るようになりました。 これはRuby2.7のリリースノートにも書かれています。 Module#name, true.to_s, false.to_s nil.to_s は常にfrozenな文字列を返すようになりました。返された文字列は常に同じオブジェクトとなります。 [Experimental] [Feature #16150] なので、下記のようなコードの場合、変数sはnilが入るとエラーになります。 def gsub_hoge_fuga(s) s.to_s.gsub!('hoge', 'fuga') # s = nilだと can't modify frozen String: "" (FrozenError
この記事は何 Rubyはバージョン3.2からWebAssembly(WASM)に対応をしています。 この記事では、RubyのWASMパッケージであるruby.wasmについて調べたことを残しておきます。 WebAssemblyとは WebAssemblyについては、MDN Web docsで以下のように説明されています。 WebAssembly は最近のウェブブラウザーで動作し、新たな機能と大幅なパフォーマンス向上を提供する新しい種類のコードです。基本的に直接記述ではなく、C、C++、Rust 等の低水準の言語にとって効果的なコンパイル対象となるように設計されています。 WebAssemblyはWebブラウザ上で実行可能なコードで、W3Cにより標準化されているため、Chromeをはじめとしたブラウザで同一の仕様で動作します。 また、ブラウザ以外でのWebAssemblyの環境の実行に関して
この記事は何 Qiita株式会社では技術的な勉強会を定期的に開催しています。 この記事はRuby3から導入されたRBSについて発表をしたときの社内の資料をQiita用に修正したものです。 RBSとは RBSというと大体二つの意味で話す。 ruby3.0から導入されたRubyの型定義を記述するための言語。(RBS=Ruby Signeture) →この記事では便宜上RBSと書く RBSファイルを扱うためのgem (https://github.com/ruby/rbs) →この記事では便宜上rbsと書く 標準ライブラリ/組み込みクラスの型ドキュメント 特定の型に対しての親情報やメソッドの型情報を逆引きできる RBSの解析 https://github.com/ruby/rbs より RBS is a language to describe the structure of Ruby pro
最近 slim ちゃんと使ってないな と苦手意識を持ってやっていたらハマった. ちなみに Rails は 6.1 です.
はじめに 普段開発をしていると、定義ファイルや設定ファイルの更新を行う機会は少なくありません。 ".rubocop_todo.yml" を更新するような単純作業は機械にまかせていきたいなと思いこの記事を書きました。 どのように実現するか GitHub Actions には 定期実行を行う機能が存在します (on.schedule) 定期実行した job の中で rubocop を実行し生じた差分を利用し Pull request を作成します。 今回は peter-evans/create-pull-request を利用します。 GitHub Actions の設定例 .githu/workflows directory 以下に ファイルを作成します yml に記載している 処理は以下の通りです。 repository を checkout Ruby の install & bundle
irb, debug gem は Ruby の標準ライブラリですが、それ単体で Rubygems からインストールすることができます。なので、最新の Ruby でなくても、以下のコマンドで最新の irb, debug gem を利用することが可能です。 (※ debug gem は bundled gem のため、 そもそも Bundler で利用する場合は Gemfile に書く必要があります) debug, irb は近年のアップデートでかなり便利になってきたのでおすすめ debug, irb は近年のアップデートで大きな改善、開発がされており、 (VSCode からのデバッグ、シンタックスハイライト等) 非常に便利になっています。おすすめです。 これらは Ruby のアップデートの話とセットで語られることが多いため、最新の Ruby に更新しないと利用できないとうっかり勘違いすること
$ rbs help Usage: rbs [options...] [command...] Available commands: ast, annotate, list, ancestors, methods, method, validate, constant, paths, prototype, vendor, parse, test, collection, version, help. Options: -r LIBRARY Load RBS files of the library -I DIR Load RBS files from the directory --no-stdlib Skip loading standard library signatures --collection PATH File path of collection configurati
はじめに Rails 7.0が2021年の暮れにリリースされて以降、Deviseは長らくRails 7.0(というか、Hotwire/Turbo)に完全対応していない状態が続いていました。ですが、ようやく2023年2月17日にRails 7.0に対応したDevise 4.9.0がリリースされました🎉 rails-ujsではなく、Hotwire/Turboを使っているRails 7.0にDeviseを組み込んでいる(もしくはこれから組み込もうとしている)人は、以下の手順に従ってDevise 4.9.0を導入してください。 備考 もともとこの記事は「開発中のDeviseをインストールしてRails 7.0 (Hotwire/Turbo)のテストに協力する」というタイトルで公開していましたが、Devise 4.9.0が正式リリースされたことに伴い、タイトルと本文を修正しました。 前提条件 Ra
Procodile の process に HUP/USR1 等のシグナルを送信してもログファイルは reopen しませんRubygodforemanlogrotateProcodile はじめに Ruby には Foreman や God 等 process を管理してくれるツールがあり Procodile もその 1 つです。 今回 Procodile が出力する ログファイル が logrotate 時 reopen されていなかったため動きについて調査したので簡単にまとめました。 先に結論 Procodile が開いた logfile を reopen する方法は現時点存在しません。 Procodile (supervisor を含め) そのものを stop, start する必要があります。 $ bundle exec procodile stop --procfile pat
はじめに Ruby3.2 で YJIT がついに実用段階になりました! なので YJIT について理解するために、JIT 導入前の Ruby、MJIT、そして YJIT についてそれぞれどんな特徴があるのか簡単に調べてみました。 Rubyの処理系 最初に Ruby の処理系についてです。処理系、特に 言語処理系 と呼ばれるものは、何らかのプログラミング言語を処理して実行可能にするためのソフトウェアです。Rubyの代表的な処理系は MRI (Matz's Ruby Interpreter) です。C言語で書かれた Ruby なので CRuby とも呼ばれます。 MRI 以外にも Ruby 処理系はたくさんあります。Ruby Association の以下のページに様々な処理系が紹介されています。 本記事では MRI (CRuby) の簡単なしくみから YJIT までを簡単に紹介します。 JI
唐突ですが、Rubyでは2.7から3.0へアップデートされる時、SortedSetというライブラリはGemに分離されました。 「なるほど、じゃあRuby3に上げる時にSortedSetを使っていたらインストールすればいいんだな!」となるかもしれませんが、それはちょっと待ってほしいです(確かにそれでも動きますが)。 まずどこで使っているのかを、git grepなりエラーのスタックトレースなど適切な方法で確認しましょう。 もし自分が作成したコードで使っているのである場合、今回Gemへ分離されたのはパフォーマンスが理由なので、問題ない場合はインストールでも問題ありません(セキュリティなどだと話は変わりますが・・・)。 ただ、他のGemが依存していて自分のコードでは使っていない場合は、GemのChangelogやissueでどのような判断をしているかを覗きに行きましょう。 たとえば、wvanber
rubocopは定期的に新バージョンがリリースされていますが、最新もしくはそれに近いバージョンにきっちり保てているプロジェクトは案外少ないのではないでしょうか。 2023年の3月末でRuby2.7のサポートが終了するのですが、3.0移行のrubyでrubocopを動かすにはrubocopのバージョンを1.0.0以上にあげる必要があります。 上記の都合から慌ててrubocopのバージョンを上げる必要になった方もいると思います。 しかし、一気に全部やろうとすると、チーム開発であれば他のメンバーの開発とコンフリクトしますし、長時間対応している間に新しいバージョンが出て規則が追加されるので全部対応しきるのは難しいです。 この記事では、そんなrubocopで疲弊する未来が見えた読者の方へ愚直に向き合いすぎないrubocopのバージョンアップ方法を授けます。 とりあえずバージョンを上げる まず兎にも角
正確にはmini_racerを使う時に限ったことではないのですが、Node.jsのAPIのURLには、legacy APIとWHATWG準拠のAPIがあることに注意しましょう (ブラウザのURL APIもWHATWG API準拠) 上記のAPIドキュメントから引用します。 下の図は'https://user:pass@sub.example.com:8080/p/a/t/h?query=string#hash'というURLを両方のAPIでパースしたときの違いを表しています。 上半分がlegacy APIのurl.parse()を使ったときで、下半分がWHATWGのURLオブジェクトのプロパティを表しています。 originプロパティなど、いろいろ違いがあります。 ┌───────────────────────────────────────────────────────────────
はじめに Qiita 社では Slack bot に Ruboty を Qiitan として利用しています。 Qiitan (Ruboty) に GitHub の issue/pull request を検索させるというニーズが出てきたため、 "ruboty-qiita-github" に search issues command をさっと追加しました 今後 Qiitan (Ruboty) に新しい command を追加する時が来たら参考にしてください GitHub の issue/pull request を検索する command を追加する GitHub API を確認する まず、 GitHub の issue/pull request を検索する Interface を確認します GitHub REST API については、以下 GitHub Docs から探しましょう 今回必
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く