Home Software Libraries JavaScript Dev Container CLI Dev Container CLIはポートフォワーディングをサポートしていない @wakairo 2024/12/19 20:48 Dev Container CLIはポートフォワーディングをサポートしていないので、Dev Containerの中で動かしたWebサーバへDev Containerの外で動いているブラウザからアクセスするようなことはDev Container CLI単体では出来ないそうです。ちなみに、ポートフォワーディングを可能にする手法やツールはいくつか提案されているようです。
Home Software Libraries JavaScript Dev Container CLI Dev Container CLIは開発途中でコンテナの停止や削除は未実装 @wakairo 2024/12/19 20:40 公式GitHubレポジトリを見ると、2024年12月現在、以下の機能に完了のチェックマークがまだ入っていません。 devcontainer stop - Stops containers devcontainer down - Stops and deletes containers
Home その他 Raspberry Pi Pico Raspberry Pi Picoシリーズの開発をVisual Studio Code拡張を使わずに行う方法 @wakairo 2024/12/16 11:18 最終更新 2024/12/16 11:19 Raspberry Pi Picoシリーズの開発は、Visual Studio Code(以下、VS Code)にPico用の拡張を入れて行えますが、 VS Code以外のエディタを使いたいときなど、VS Codeに頼らない開発の仕方が公式ドキュメントで紹介されています。 VS Codeを使用しないRaspberry Pi Picoシリーズの開発の方法は、具体的には、 ラズパイの公式C/C++ SDKドキュメントページ で紹介されている「Getting started with Raspberry Pi Pico-series」という名前のPDF の「Manually Configure your Environment」の項目で紹介されています。 同様に、VS Codeを使用しないでPicoシリーズ用の新規プロジェクトを作成する方法は、同PDFの「Manually Create your own Project」の項目で紹介されています。
Home Software Libraries Ruby rails 既存のRailsアプリへのRuboCopの導入 @wakairo 2024/12/06 14:28 最終更新 2024/12/06 17:18 Rails 7.2からRuboCopが新規アプリケーションでデフォルトで有効になりました。 このTopicでは、7.1以前で作成した既存RailsアプリにRuboCopを後から導入して、RuboCopに関して7.2の新規アプリ相当の状態にセットアップする方法をご紹介します。 RuboCop (Omakase Ruby styling for Rails) のインストール 基本的にはrubocop-rails-omakaseの公式ドキュメントのインストール手順に従います。 まず以下のように、Gemfileのgroup :development, :testのところにrubocop-rails-omakaseを追加します。 group :development, :test do # Omakase Ruby styling [https://github.com/rails/rubocop-rails-omakase/] gem "rubocop-rails-omakase", require: false end 次にbundle installを実行して、RuboCop等をインストールします。 bundle install さらに、必須ではありませんが、bin/rubocopでRuboCopを実行できるように、以下のコマンドを実行します。 bundle binstubs rubocop 最後に.rubocop.ymlという名前でファイルを作成し、以下の内容を記述します。 # Omakase Ruby styling for Rails inherit_gem: rubocop-rails-omakase: rubocop.yml 以上でRuboCop (Omakase Ruby styling for Rails) のセットアップが出来ました。 ローカル環境でのbin/rubocopの実行とその結果に対する対応の進め方 以下のコマンドでbin/rubocopを実行でき、omakaseのチェックを行えます。 bin/rubocop このチェックでの指摘事項が多かった場合、以下のオプションを付けて実行することで、 無視設定を記述した.rubocop_todo.ymlというファイルが作成され、 .rubocop.ymlにもこの無視ファイルを参照する設定が追加されますので、 とりあえず全ての指摘事項を無視するように設定が出来ます。 bin/rubocop --auto-gen-config 設定が出来たら、bin/rubocopを実行して、とりあえず指摘事項の数が0となることを確認します。 1つずつ指摘事項へ対応 ここから先は、以下の手順を繰り返します。 .rubocop_todo.ymlから1項目を削除 bin/rubocopを実行して指摘内容を確認して対応 bin/rubocop -aもしくはbin/rubocop -Aを実行して自動修正できるものは自動修正し、その修正内容で問題ないことを確認 -aは安全なもののみ、-Aは安全で無いものも含めて自動修正を行います。 自動修正できなかったものは手作業で修正・確認 特定のファイルのみチェックを回避する場合は、.rubocop.ymlにてExclude:を用いて設定 ソースコードの特定の箇所(行)のみチェックを回避する場合は、ソースファイルのコメントに# rubocop:disable等を用いて設定 指摘内容に対応する規則を完全に採用しない場合には、.rubocop.ymlにてEnabled: falseの記述を用いて規則を無効にする 1項目ずつ対応を進め、.rubocop_todo.ymlの中身が無くなったら、.rubocop_todo.ymlを削除すると共に、.rubocop.yml内で.rubocop_todo.ymlを参照している設定を削除します。ここまで終わればRuboCopの諸規則への対応は完了となります。お疲れ様でした。 GitHubワークフロー(CI)でのrubocopの実行 .github/workflows/ci.ymlに相当するファイルがなければ作成します。 この.ymlファイルを編集して、以下のようにjobsの下にlintジョブを追加します。 注意点 timeout-minutes:の設定は、実行時間に対して十分余裕を持たせて下さい。 ruby-version: .ruby-versionという設定は、プロジェクトルートにある.ruby-versionという名前のファイルで指定されているrubyのバージョンという意味になります。この設定について詳しくはこちらのTopicをご覧下さい。 -f githubオプションは、出力フォーマットをGitHub Actionsに適したものにするオプションです。 jobs: lint: runs-on: ubuntu-latest timeout-minutes: 10 steps: - name: Checkout code uses: actions/checkout@v4 - name: Set up Ruby uses: ruby/setup-ruby@v1 with: ruby-version: .ruby-version bundler-cache: true - name: Lint code for consistent style run: bin/rubocop -f github 公式情報 RuboCopのその他の詳細についてはRuboCop公式ドキュメントをご覧ください。 Omakase Ruby styling for RailsのRuboCop設定の最新の内容はGitHubで確認出来ます。なお、最新ではなくインストールしたバージョンのRuboCop設定内容をご覧になりたい場合は、GitHubの操作でTagsから当該バージョンを選択するようにして下さい。
Home Software プログラミング言語 Ruby RubyのArrayやHashのリテラルをdeep freezeするshareable_constant_valueマジックコメント @wakairo 2024/12/04 11:44 概要 Rubyでは、以下のようにshareable_constant_value: literalというマジックコメントを記入することで、 以下の例のように、定数に代入したArrayやHashのリテラルを深く(deeply)freezeすることが出来ます。 # shareable_constant_value: literal X = [{foo: []}] X.frozen? # => true X[0].frozen? # => true X[0][:foo].frozen? # => true 少し詳しい話 shareable_constant_valueマジックコメントはRuby 3.0で導入されました。 注意点 このマジックコメントのliteralモードでfreezeされるのは定数が対象であるため、 以下のように、代入先が変数である場合にはfreezeされません。 # shareable_constant_value: literal z = [] z.frozen? # => false また、このマジックコメントのliteralモードを指定したファイル内では、以下のように、 「freezeされていないオブジェクト」や「freezeされていないものを含むオブジェクト」を定数に代入しようとするとエラーが発生します。 # shareable_constant_value: literal Y = [{}, Object.new] # => エラー発生 裏を返せば、以下のように、freezeすればエラーが回避できます。 また、freezeする定数とfreezeしない定数でファイルを分けるという自然なアプローチでもエラーを回避できます。 # shareable_constant_value: literal Y = [{}, Object.new.freeze] 参考文献 Ruby公式のshareable_constant_valueのドキュメント
Home イベント Shinjuku.rb Shinjuku.rb #96 「今までで一番学びになった瞬間」発表LT会!! @wakairo 2024/11/28 18:27 最終更新 2024/11/29 07:47 [お知らせ]こちらのまとめに追加して欲しい内容があるなど、ご要望等ございましたら、下の所からのコメントやX(旧Twitter)などでお気軽にお伝えください。 Connpass: https://shinjukurb.connpass.com/event/336025/ それぞれのLTなどについての簡単な記録です。 開始前 新宿のRAIZAP本社にて はじめに スポンサー:RIZAP様 アンチハラスメントポリシー:人の嫌がることはしないでね スポンサーLT ものすごいスポンサーLT!はじめて! 「Shinjuku.rbを広げていきたい」 izawa 「What brought you to NYC?」 自分を変えた言葉:「What brought you to NYC?」 大学生でニューヨークに行ったときにかけてもらった言葉 エンジニアになることを決意 chaki8923「失敗とそこから学んだこと」 失敗とそこから学んだこと 慌てない慌てない <- 一番大事 できる人に任せちゃう Koji NAKAMURA 「Kaigi on Rails 2024とGlue」 スライド 好きなエクササイズはプランク The Tale of Plack: https://www.youtube.com/watch?v=5XvH_y2wyG0 YAPC::Asia 2010 のクロージングキーノート 具体的な話は何も覚えていなかったので、改めて見直した Glue (のり) となるものの重要性 Ruby/Rack/RailsもGlue Yuta 「駅員になって気づいたこと」 乗車券類は有価証券 教訓:確認数秒、処理徹夜 ryosk7 「5年越しにGitを理解した話」 スライド: https://speakerdeck.com/ryosk7/gitwoli-jie-sitahua Gitは常に進化している Gitはコマンドの集合体 Tips: Gitは日付の文字列を理解する。例: git log --since="yesterday" 「checkout ファイル名」でファイル復元 コミットメッセージで-mを2つ付けて簡潔と詳細の2つメッセージを付けられる。 実用Git 第3版: https://www.amazon.co.jp/dp/4814400616 Roppongi.rb来てね otsuka-rizap 「私のエンジニア人生を変えた出会い」 Railsとの出会い! 初めてのフレームワークはJava servlet -> もっといいのあるぜ! Rails! RIZAPとの出会いもRailsのインターン モチベーションにはビジネス価値がある
Home Software Libraries Ruby rails 既存のRailsアプリでのDependabotへの対応 @wakairo 2024/11/25 11:34 最終更新 2024/11/25 11:41 Rails 7.2から新規アプリケーションにおいてDependabotがデフォルトで有効になりました。 具体的には、rails newで生成される新規アプリにおいて、Dependabotの設定ファイルである.github/dependabot.ymlが生成されるようになりました。 Dependabotとは Dependabotとは、GitHubのサービスであり、リポジトリで使用しているソフトウェアを最新の状態に保つことをサポートしてくれるサービスです。 具体的なDependabotの機能としては、以下の3つがあります。 Dependabot alerts — リポジトリで使っている依存関係に内在する脆弱性について通知します。 Dependabot security updates — 使っている依存関係のうち、既知のセキュリティ脆弱性があるものを更新するための pull request を自動的に生成します。 Dependabot version updates — 依存関係を最新に保つための pull request を自動的に発行します。 Dependabotの詳細な理解にはクイックスタート ガイドなどをご利用ください。 既存のRailsアプリでのDependabotへの対応方法 脆弱性の通知機能(Dependabot alerts)は、GitHubのWebページから設定を変更するだけで利用できます。 脆弱性に関するpull requestの自動生成機能(Dependabot security updates)も、GitHubのWebページから設定を変更するだけで利用できますが、詳細な設定が必要な場合はdependabot.ymlを通して行います。 脆弱性対応以外も含めて最新の状態にするためのpull requestを自動生成する機能(Dependabot version updates)は、dependabot.ymlを通した設定が必要です。 (参考)デフォルトのdependabot.ymlの内容 このリンク先で閲覧できるrails newで生成される新規アプリのdependabot.ymlの設定内容は、既存アプリでも参考になるかもしれません。 このdependabot.ymlには、Rails 7.2の時点では、railsアプリで利用しているgemとGitHub Actions(GitHubのCI)で利用しているアクションを最新に保つための設定が記述されています。
Home Software Libraries Ruby bootstrap-rubygem BootstrapとTurbo Driveを組み合わせたときの問題と対処法 @wakairo 2024/11/22 11:29 最終更新 2024/11/22 11:35 問題 HotwireのTurbo Driveでは高速化を図るために、ページ遷移時に全体をリロードせずに<body>タグ内のコンテンツを置き換える動作が基本となっています。 そのためか、Turbo Driveを有効にしていると、JavaScriptの動作が必要なBootstrapのコンポーネントが適切に動作しない場合があります。 例えば、タブのコンポーネントにおいて、ページ遷移の直後はカーソルキーでのタブの切り替えが動作しません。 対策 HotwireのStimulusを利用して、必要なBootstrapオブジェクトをページ遷移時に作成します。 対策の具体例 タブ・コンポーネントの場合、まず以下のようにタブの各要素を対象にしてgetOrCreateInstance()をconnect内で呼び出すStimulusコントローラapp/javascript/controllers/foo_controller.jsを作成します。 import { Controller } from "@hotwired/stimulus" export default class extends Controller { connect() { const triggerTabList = this.element.querySelectorAll(".nav-link"); triggerTabList.forEach(triggerEl => { bootstrap.Tab.getOrCreateInstance(triggerEl); }); } } 次に以下のように、このStimulusコントローラfooを指定したhtmlタグでタブコンポーネントを囲みます。 <div data-controller="foo"> <ul class="nav nav-tabs" id="myTab" role="tablist"> <li class="nav-item" role="presentation"> <button class="nav-link active" id="home-tab" data-bs-toggle="tab" data-bs-target="#home-tab-pane" type="button" role="tab" aria-controls="home-tab-pane" aria-selected="true">Home</button> </li> <li class="nav-item" role="presentation"> <button class="nav-link" id="profile-tab" data-bs-toggle="tab" data-bs-target="#profile-tab-pane" type="button" role="tab" aria-controls="profile-tab-pane" aria-selected="false">Profile</button> </li> </ul> <div class="tab-content" id="myTabContent"> <div class="tab-pane fade show active" id="home-tab-pane" role="tabpanel" aria-labelledby="home-tab" tabindex="0">...</div> <div class="tab-pane fade" id="profile-tab-pane" role="tabpanel" aria-labelledby="profile-tab" tabindex="0">...</div> </div> </div> 以上で、Turbo Driveによるページ遷移時に、このタブ・コンポーネントを含むHTMLがロードされるとconnect()が呼び出され、 タブ用のBootstrapオブジェクトが存在していなかった場合には作成されるようになり、 その結果タブ・コンポーネントが正しく動作するようになります。
Home Software Windows Windows Terminal Windows Terminalの日本語表示は複数のフォントを指定することで改善できます @wakairo 2024/11/16 18:54 複数のフォントが設定出来たのですね。単一のフォントしか使えないのに比べると、意図した表示の仕方に大分しやすくなりますね。良い情報をありがとうございます。 ちなみに、Microsoftは現在Cascadia Nextという日本語に対応した等幅フォントを開発しているそうですので、このフォントの採用などでWindows Terminalの日本語表示がデフォルト設定のままでも良い感じになると良いですね。
Home Software Libraries Ruby brakeman Brakemanの--safe-methodsオプションはXSSチェック専用 @wakairo 2024/11/15 09:17 役立つ情報ありがとうございます。 リンク先のGitHubのディスカッションを覗いてみたのですが、「poor naming」という表現があり、--safe-methodsというオプション名が紛らわしいということは認識されているみたいですね。 それから、"use the ignore file instead"というポリシーだそうですので、XSSチェック以外のタイプの警告は、1つずつ無視の設定をして欲しいというのがBrakemanの開発側の考えのようですね。
Dev Container CLIはポートフォワーディングをサポートしていない
Dev Container CLIはポートフォワーディングをサポートしていないので、Dev Containerの中で動かしたWebサーバへDev Containerの外で動いているブラウザからアクセスするようなことはDev Container CLI単体では出来ないそうです。ちなみに、ポートフォワーディングを可能にする手法やツールはいくつか提案されているようです。
Dev Container CLIは開発途中でコンテナの停止や削除は未実装
公式GitHubレポジトリを見ると、2024年12月現在、以下の機能に完了のチェックマークがまだ入っていません。
devcontainer stop
- Stops containersdevcontainer down
- Stops and deletes containersRaspberry Pi Picoシリーズの開発をVisual Studio Code拡張を使わずに行う方法
Raspberry Pi Picoシリーズの開発は、Visual Studio Code(以下、VS Code)にPico用の拡張を入れて行えますが、 VS Code以外のエディタを使いたいときなど、VS Codeに頼らない開発の仕方が公式ドキュメントで紹介されています。
VS Codeを使用しないRaspberry Pi Picoシリーズの開発の方法は、具体的には、 ラズパイの公式C/C++ SDKドキュメントページ で紹介されている「Getting started with Raspberry Pi Pico-series」という名前のPDF の「Manually Configure your Environment」の項目で紹介されています。
同様に、VS Codeを使用しないでPicoシリーズ用の新規プロジェクトを作成する方法は、同PDFの「Manually Create your own Project」の項目で紹介されています。
既存のRailsアプリへのRuboCopの導入
Rails 7.2からRuboCopが新規アプリケーションでデフォルトで有効になりました。 このTopicでは、7.1以前で作成した既存RailsアプリにRuboCopを後から導入して、RuboCopに関して7.2の新規アプリ相当の状態にセットアップする方法をご紹介します。
RuboCop (Omakase Ruby styling for Rails) のインストール
基本的にはrubocop-rails-omakaseの公式ドキュメントのインストール手順に従います。
まず以下のように、Gemfileの
group :development, :test
のところにrubocop-rails-omakaseを追加します。次に
bundle install
を実行して、RuboCop等をインストールします。さらに、必須ではありませんが、
bin/rubocop
でRuboCopを実行できるように、以下のコマンドを実行します。最後に
.rubocop.yml
という名前でファイルを作成し、以下の内容を記述します。以上でRuboCop (Omakase Ruby styling for Rails) のセットアップが出来ました。
ローカル環境でのbin/rubocopの実行とその結果に対する対応の進め方
以下のコマンドでbin/rubocopを実行でき、omakaseのチェックを行えます。
このチェックでの指摘事項が多かった場合、以下のオプションを付けて実行することで、 無視設定を記述した
.rubocop_todo.yml
というファイルが作成され、.rubocop.yml
にもこの無視ファイルを参照する設定が追加されますので、 とりあえず全ての指摘事項を無視するように設定が出来ます。設定が出来たら、
bin/rubocop
を実行して、とりあえず指摘事項の数が0となることを確認します。1つずつ指摘事項へ対応
ここから先は、以下の手順を繰り返します。
.rubocop_todo.yml
から1項目を削除bin/rubocop
を実行して指摘内容を確認して対応bin/rubocop -a
もしくはbin/rubocop -A
を実行して自動修正できるものは自動修正し、その修正内容で問題ないことを確認-a
は安全なもののみ、-A
は安全で無いものも含めて自動修正を行います。.rubocop.yml
にてExclude:
を用いて設定# rubocop:disable
等を用いて設定.rubocop.yml
にてEnabled: false
の記述を用いて規則を無効にする1項目ずつ対応を進め、
.rubocop_todo.yml
の中身が無くなったら、.rubocop_todo.yml
を削除すると共に、.rubocop.yml
内で.rubocop_todo.yml
を参照している設定を削除します。ここまで終わればRuboCopの諸規則への対応は完了となります。お疲れ様でした。GitHubワークフロー(CI)でのrubocopの実行
.github/workflows/ci.ymlに相当するファイルがなければ作成します。 この.ymlファイルを編集して、以下のようにjobsの下にlintジョブを追加します。
注意点
timeout-minutes:
の設定は、実行時間に対して十分余裕を持たせて下さい。ruby-version: .ruby-version
という設定は、プロジェクトルートにある.ruby-versionという名前のファイルで指定されているrubyのバージョンという意味になります。この設定について詳しくはこちらのTopicをご覧下さい。-f github
オプションは、出力フォーマットをGitHub Actionsに適したものにするオプションです。公式情報
RubyのArrayやHashのリテラルをdeep freezeするshareable_constant_valueマジックコメント
概要
Rubyでは、以下のように
shareable_constant_value: literal
というマジックコメントを記入することで、 以下の例のように、定数に代入したArrayやHashのリテラルを深く(deeply)freezeすることが出来ます。少し詳しい話
shareable_constant_value
マジックコメントはRuby 3.0で導入されました。注意点
このマジックコメントのliteralモードでfreezeされるのは定数が対象であるため、 以下のように、代入先が変数である場合にはfreezeされません。
また、このマジックコメントのliteralモードを指定したファイル内では、以下のように、 「freezeされていないオブジェクト」や「freezeされていないものを含むオブジェクト」を定数に代入しようとするとエラーが発生します。
裏を返せば、以下のように、freezeすればエラーが回避できます。 また、freezeする定数とfreezeしない定数でファイルを分けるという自然なアプローチでもエラーを回避できます。
参考文献
Shinjuku.rb #96 「今までで一番学びになった瞬間」発表LT会!!
[お知らせ]こちらのまとめに追加して欲しい内容があるなど、ご要望等ございましたら、下の所からのコメントやX(旧Twitter)などでお気軽にお伝えください。
Connpass: https://shinjukurb.connpass.com/event/336025/
それぞれのLTなどについての簡単な記録です。
開始前
新宿のRAIZAP本社にて
はじめに
スポンサーLT
izawa 「What brought you to NYC?」
chaki8923「失敗とそこから学んだこと」
Koji NAKAMURA 「Kaigi on Rails 2024とGlue」
スライド
好きなエクササイズはプランク
The Tale of Plack: https://www.youtube.com/watch?v=5XvH_y2wyG0
Yuta 「駅員になって気づいたこと」
ryosk7 「5年越しにGitを理解した話」
git log --since="yesterday"
-m
を2つ付けて簡潔と詳細の2つメッセージを付けられる。otsuka-rizap 「私のエンジニア人生を変えた出会い」
既存のRailsアプリでのDependabotへの対応
Rails 7.2から新規アプリケーションにおいてDependabotがデフォルトで有効になりました。 具体的には、
rails new
で生成される新規アプリにおいて、Dependabotの設定ファイルである.github/dependabot.yml
が生成されるようになりました。Dependabotとは
Dependabotとは、GitHubのサービスであり、リポジトリで使用しているソフトウェアを最新の状態に保つことをサポートしてくれるサービスです。 具体的なDependabotの機能としては、以下の3つがあります。
Dependabotの詳細な理解にはクイックスタート ガイドなどをご利用ください。
既存のRailsアプリでのDependabotへの対応方法
脆弱性の通知機能(Dependabot alerts)は、GitHubのWebページから設定を変更するだけで利用できます。
脆弱性に関するpull requestの自動生成機能(Dependabot security updates)も、GitHubのWebページから設定を変更するだけで利用できますが、詳細な設定が必要な場合はdependabot.ymlを通して行います。
脆弱性対応以外も含めて最新の状態にするためのpull requestを自動生成する機能(Dependabot version updates)は、dependabot.ymlを通した設定が必要です。
(参考)デフォルトのdependabot.ymlの内容
このリンク先で閲覧できる
rails new
で生成される新規アプリのdependabot.ymlの設定内容は、既存アプリでも参考になるかもしれません。 このdependabot.ymlには、Rails 7.2の時点では、railsアプリで利用しているgemとGitHub Actions(GitHubのCI)で利用しているアクションを最新に保つための設定が記述されています。BootstrapとTurbo Driveを組み合わせたときの問題と対処法
問題
HotwireのTurbo Driveでは高速化を図るために、ページ遷移時に全体をリロードせずに<body>タグ内のコンテンツを置き換える動作が基本となっています。 そのためか、Turbo Driveを有効にしていると、JavaScriptの動作が必要なBootstrapのコンポーネントが適切に動作しない場合があります。
例えば、タブのコンポーネントにおいて、ページ遷移の直後はカーソルキーでのタブの切り替えが動作しません。
対策
HotwireのStimulusを利用して、必要なBootstrapオブジェクトをページ遷移時に作成します。
対策の具体例
タブ・コンポーネントの場合、まず以下のようにタブの各要素を対象にして
getOrCreateInstance()
をconnect内で呼び出すStimulusコントローラapp/javascript/controllers/foo_controller.js
を作成します。次に以下のように、このStimulusコントローラ
foo
を指定したhtmlタグでタブコンポーネントを囲みます。以上で、Turbo Driveによるページ遷移時に、このタブ・コンポーネントを含むHTMLがロードされると
connect()
が呼び出され、 タブ用のBootstrapオブジェクトが存在していなかった場合には作成されるようになり、 その結果タブ・コンポーネントが正しく動作するようになります。Windows Terminalの日本語表示は複数のフォントを指定することで改善できます
複数のフォントが設定出来たのですね。単一のフォントしか使えないのに比べると、意図した表示の仕方に大分しやすくなりますね。良い情報をありがとうございます。
ちなみに、Microsoftは現在Cascadia Nextという日本語に対応した等幅フォントを開発しているそうですので、このフォントの採用などでWindows Terminalの日本語表示がデフォルト設定のままでも良い感じになると良いですね。
Brakemanの--safe-methodsオプションはXSSチェック専用
役立つ情報ありがとうございます。
リンク先のGitHubのディスカッションを覗いてみたのですが、「poor naming」という表現があり、
--safe-methods
というオプション名が紛らわしいということは認識されているみたいですね。それから、"use the ignore file instead"というポリシーだそうですので、XSSチェック以外のタイプの警告は、1つずつ無視の設定をして欲しいというのがBrakemanの開発側の考えのようですね。