Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
RuboCopの人気記事 66件 - はてなブックマーク
[go: Go Back, main page]

並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 40 件 / 66件

新着順 人気順

RuboCopの検索結果1 - 40 件 / 66件

RuboCopに関するエントリは66件あります。 rubyrubocopRuby などが関連タグです。 人気エントリには 『RailsアプリのCI高速化』などがあります。
  • RailsアプリのCI高速化

    参加しているプロジェクトで、RailsアプリのCIの高速化を行った。 まだ進行中の部分も幾つかあるが、結果から言うと、元々8分前後だったテストが3分半程度に短縮された。行った作業を幾つかの観点に分け、どのように高速化を行ったか、どの程度高速化されたか等を記述する。 プロセス数とマシン性能の調整 元々は2コア1プロセス4マシンで8分程度掛かっていたが、8コア8プロセス1マシンに変更することで5分程度に短縮された。 このプロジェクトではCIにGitHub Actionsを利用している。GitHub Actionsではデフォルトで2コアのマシンが利用されるが、Large runnerを利用して8コアに変更した。コア数を2倍にした代わりにマシン数も半分に減らしたので、結果的に費用は変わっていない。 また同時に、8プロセスで並列実行するためにparallel_testsを導入した。このプロジェクトで

    • Rubyでrescueしたらグローバルなオブジェクトを破壊してたよって話 - ANDPAD Tech Blog

      こんにちは、ydahです。 2021年の12月から株式会社アンドパッドでソフトウェアエンジニアとしてANDPAD検査の開発に携わっています。 昨年、息子が生まれてから夜更かしすることがなくなり、早朝に起きては軽くジョギングをしてから、OSSプログラミングにいそしむのが朝のルーティンになった今日このごろです。 さて本稿では、Rubyの例外処理を眺めていたらrescueがグローバルなオブジェクトを破壊するケースがあったんですよという話と、その対策について話したいと思います。 発生していたケースについて 突然ではありますが以下のコードをご覧ください。 この中にグローバルなオブジェクトを壊してしまうrescueがいます。 # 1 begin raise 'foo' rescue ArgumentError end # 2 begin raise 'foo' rescue => ArgumentEr

        Rubyでrescueしたらグローバルなオブジェクトを破壊してたよって話 - ANDPAD Tech Blog
      • 365日欠かさずコミットを積む。なぜRuboCopコミッター伊藤浩一はOSSと向き合い続けるのか - Findy Engineer Lab

        プロジェクト内にあるRubyのコードが、コーディング規約を遵守しているかをチェックしてくれるRuboCop。Rubyでの開発においては広く使われている静的コード解析ツールであり、大部分のRubyエンジニアはRuboCopを利用したことがあるのではないでしょうか。 このツールのGitHubリポジトリを見ると、ある日本人のコミット数が最多であることがわかります。その方とは、伊藤浩一さん。Ruby関連のシステム開発に長年携わり、RuboCopのみならずActive Record Oracle enhanced adapterやParser、Fakerなど各種の有名ツールのコミッターを務めています。OSS関連の活動について、伊藤さんに振り返っていただきました。 永和システムマネジメントに転職し、初めて業務でRubyを書いた ――伊藤さんがRubyやRuby on Railsに触れた経緯からお聞きし

          365日欠かさずコミットを積む。なぜRuboCopコミッター伊藤浩一はOSSと向き合い続けるのか - Findy Engineer Lab
        • RuboCopコミッターが語る、"Write Code Every Day"を5年間実践するための工夫と得られたもの | Offers Magazine

          ▲RubyKaigiでの登壇(提供:RubyKaigi 2018) OSSにパッチを送るにあたり「このクオリティのコードでパッチを出して良いかわからない」と耳にすることがあります。 私自身、とりあえず期待どおりに動くパッチは手元で書けているけれど、それが正しい直し方か分からないため、OSSリポジトリにパッチを出せないでいたことがありました。ここではそんなパッチに対する考え方の変化について話します。 最初は自信がないパッチだろうと出すことが大切 仕事で踏んだOSSのバグの修正について「正しい直し方かどうか分からないのでOSSに出せない」ことがあったのですが、RubyKaigi 2016で、OSSメンテナーのyahondaさんから「自分だってどう直したら正しいかは知らない(けど直しているんだ)よ」と言われ、目から鱗が落ちる体験をしました。 以来、大きく気持ちが変わり、たとえベターでも問題解決さ

            RuboCopコミッターが語る、"Write Code Every Day"を5年間実践するための工夫と得られたもの | Offers Magazine
          • RuboCop RSpecからRuboCop CapybaraとRuboCop factory_botが切り出されたけど結局どうすればいいの? - ANDPAD Tech Blog

            こんにちは、 ydah です。最近はというと、料理への情熱が再燃してきました。一時期は作った料理を全て写真に残していたりとしていたのですが、いつの間にか記録を何も残さなくなっていました。何かしら記録を残すことで、前回よりも味も見た目も良くしようと思えるので、記録を残していくようにしたいと思います。やっていくぞ〜!! トマトとタコのパスタの近影 はじめに 5/11-13 に長野県松本市 まつもと市民芸術館 で開催された RubyKaigi 2023 の Lightning Talks で、 RuboCop RSpec チーム*1と RuboCop RSpec から、 RuboCop Capybara と RuboCop factory_bot を gem に切り出した話をしました。 rubykaigi.org 当日の発表スライドは以下です。 この記事では RuboCop RSpec を現在使

              RuboCop RSpecからRuboCop CapybaraとRuboCop factory_botが切り出されたけど結局どうすればいいの? - ANDPAD Tech Blog
            • “社内つらみトップランカー”を210プルリクで倒しきった話 技術的負債は“継続して返却”すればいつかは終わる | ログミーBusiness

              「初学者から上級者までが楽しめるWeb系の技術カンファレンス」をコアコンセプトに掲げる「Kaigi on Rails」。ここで登壇したのは、株式会社アンドパッドの川原万季氏。大きな技術的負債を解消するためにやったこと、心がけたことを発表しました。 登壇者の自己紹介川原万季氏:「歴史あるプロジェクトのとある技術的負債を隙間プロジェクトの210PullRequestsで倒しきった話」というタイトルでお話をさせていただきます。よろしくお願いします。 先ほど「Twitter」に資料を上げたので、手元でご覧になりたい方は、そちらをご覧ください。 自己紹介をします。「makicamel」という名前で活動をしています。Rubyとビールとお酒が大好きで、好きなVRゲームは「Beat Saber」です。株式会社アンドパッドというところで働いていて、今日はこの話をします。 最後までやりきるのが難しい“大きな技

                “社内つらみトップランカー”を210プルリクで倒しきった話 技術的負債は“継続して返却”すればいつかは終わる | ログミーBusiness
              • RuboCopにLSPを標準搭載した - koicの日記

                タイトルのとおり。RuboCop 1.53 で LSP (言語サーバー) を標準搭載しました。 最初に3行まとめを書いておきます。 RuboCop を使っているけれど LSP を使っていない場合は、高速なリアルタイム性で開発体験が変わると思います。速い! VS Code ユーザーを使っている方は、後述する vscode-rubocop という VS Code 拡張をインストールすれば OK です。 Emacs や Vi などのユーザーは、LSP クライアントの設定で rubocop --lsp を起動するように LSP 設定してください (VS Code では不要) 。 公式の使い方としては以下のドキュメントを更新していくことになるものの、実装者が自分なのでこちらに軽く書き記します。 docs.rubocop.org rubocop --lsp コマンドは直接ユーザーが手動実行するものでは

                  RuboCopにLSPを標準搭載した - koicの日記
                • Standard Ruby 1.0: Set your code free with no config needed

                  Product Performance, Product Scaling, & Technical Assessments

                    Standard Ruby 1.0: Set your code free with no config needed
                  • GemfileでのRubyバージョン指定を.ruby-versionから読む - koicの日記

                    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 のアップデート時のバージョンの更新ポイントを減らすことができます。 なお、古

                      GemfileでのRubyバージョン指定を.ruby-versionから読む - koicの日記
                    • rubocop-rails-omakaseとは何か? - koicの日記

                      Rails 7.2 で rails new した際に搭載される rubocop-rails-omakase について、それがどのようなもので、どのように使うことを期待されているかを書き記しておきます。 github.com rubocop-rails-omakase は DHH が著者となる Ruby コーディングスタイルルールです。 一次情報はあくまで作者である DHH 発信のものとしてもらいたいですが、私自身も rubocop-rails-omakase や Rails 7.2 の RuboCop 関連機能にコントリビューションしていることもあり、比較的オリジンに近いことを述べることができると思います。また RuboCop のコミッターをしているため、たぶん RuboCop の世界にちょっと詳しい方でしょう。 とはいえ、いろいろな考え方がある領域であることも承知しているため、ひとつの考

                        rubocop-rails-omakaseとは何か? - koicの日記
                      • プロジェクト独自のコーディングルールを簡単に正規表現で定義できる `rubocop-grep` の活用 - ROUTE06 Tech Blog

                        はじめに: 弊社のとあるEDI(電子商取引)関連のプロダクトでは、Ruby on Railsを利用してGraphQL APIを提供しています。 その開発活動の中で最近、コードの品質と整合性を維持するためのツールとして rubocop-grep を利用し始めました。 この記事ではその具体的な活用事例についてお話しします。 目次 rubocop-grepとは 最初のユースケースと、基本的な使い方の説明 複数のルールをディレクトリごとに設定するための工夫 ほかにどのようなユースケースがありそうか まとめ rubocop-grepとは rubocop-grep は、rubocop の拡張ツールです。 プロジェクト独自のコーディングルールを、正規表現を用いて簡単に定義することができます。 この手の問題は、今までもカスタムCopを書くことで解決することはできましたが、カスタムCopはASTの知識やRu

                          プロジェクト独自のコーディングルールを簡単に正規表現で定義できる `rubocop-grep` の活用 - ROUTE06 Tech Blog
                        • Ruby用VSCode拡張: vscode-ruby-light

                          Ruby向けに、vscode-ruby-lightというVSCode拡張をつくっています。この拡張は、利用者に特にRubyのインストール要求することなく、シンタックスハイライトやカーソル操作など、VSCode標準の機能よりちょっと良い編集体験を提供しようという目的の拡張です。 最初は「メソッドやブロックをもう少し上手く選択できるようにしたい」というモチベーションで調べ始めたのですが、気付けば色々な機能を持つVSCode拡張が出来上がっていました。この記事では、幾つかの機能を紹介しながら、関連する話を書いていこうと思います。 Selection Range VSCodeにはExpand Selectionというコマンドがあり、選択範囲を拡大したり狭くしたりできます。このコマンドには、例えばWindowsであればデフォルトでShift + Alt + →にショートカットキーが割り当てられていま

                          • RuboCop Under a Microscope

                            Lint Night #1 https://lintnight.connpass.com/event/263931/

                              RuboCop Under a Microscope
                            • RuboCopのルールセットを大きく変えるときに気をつけること(Standard導入編) - inSmartBank

                              こんにちは osyoyu です。RuboCop は好きですか? B/43の開発の現場でもRuboCopは活用しており、ご多分に漏れず .rubocop.yml がすくすくと育てられていました。コードの一貫性はよく保たれていた…… のですが、 # rubocop:disable がそれなりの頻度で出現したことからも、適用されているルールが最良のものかは少しばかり疑問があった、という具合です。 そこで、今回は “unconfigurable” をウリにしているRuboCopルールセットであるStandard (standardrb/standard) を採用し、全コードをこのルールに適合するよう修正しました。Standardは少々 “強い” 名前ですが、コミュニティの中でコレ一強・一択というものでもなく、あくまでひとつのオプションという立ち位置です。 しかしそれなりに大きなコードベースではこの

                                RuboCopのルールセットを大きく変えるときに気をつけること(Standard導入編) - inSmartBank
                              • カスタムCopでリファクタリング

                                RuboCopのカスタムCopを書いてリファクタリングを行う話として、丁度良い事例があったので紹介します。 改善したいコード 仕事先のRailsアプリを眺めてみると、昔から慣習的に次のようなコードが書かれていることが分かりました。 module A extend ::ActiveSupport::Concern included do def foo end def bar end end end 本来は、特別な理由が無い限り次のように書かれるべきコードです。 module A def foo end def bar end end これは後から分かったことですが、このようなコードはファイル数で言うと数百件、メソッド定義数で言うと千件弱あるようでした。 用意したカスタムCop そこで、RuboCopのカスタムCopを書いて、このコードを自動修正することにしました。詳しい書き方についてはここ

                                • HTML用ERBファイルのフォーマットを統一した話 - Sansan Tech Blog

                                  こんにちは。 名刺アプリ「Eight」でエンジニアをしている鳥山(@pvcresin)です。 最近、ミスタードーナツのミニオンコラボの商品を食べたのですが、 どれも美味しくて見た目もかわいいので最高でした。 特にポン・デ・リングベースのものは、表面のキャンディが口の中でパチパチと弾けて楽しいのでオススメです。 さて今回は、RailsのViewで使う、HTML用ERBファイルのフォーマットを統一した話をします。 ERBとは ERB(eRuby、embedded Ruby)はテキストにRubyのコードを埋め込むための仕様です。 Railsでは特にViewの部分のHTML生成によく利用されます(拡張子は.erb)。 ERBでは、以下のような記法でRubyのコードを埋め込めます。 <ul> <% @features.each do |f| %> <li><%= f %></li> <% end %

                                    HTML用ERBファイルのフォーマットを統一した話 - Sansan Tech Blog
                                  • .rubocop_todo.ymlを解消するPull RequestをGitHub Actionsで自動生成する (前編)

                                    .rubocop_todo.ymlを解消するPull RequestをGitHub Actionsで自動生成する (前編) 前編ではr7kamura/rubocop-challengeというCustom Actionの話をし、後編では再実装したr7kamura/rubocop-todo-correctorというCustom Actionの話をする。 ただ開発しているだけで、.rubocop_todo.ymlはそこ此処に積もる。たまに慈善活動的に解消してPull Requestを出したりもする。しかし人力でやっているとキリがない。この作業を自動化したい。こういうときに便利な、rubocop_challengerというGemがある。 便利なGemだが、設定しようとすると幾つかハマりどころがあり、導入が大変。そこで、簡単に導入できるようにr7kamura/rubocop-challengeという

                                    • reviewdog x Custom FormatterでRuboCopの自動修正を提案させるようにしました - inSmartBank

                                      reviewdog/action-rubocopというOSSプロジェクトをご存知でしょうか。Rubyの静的解析ツールであるRuboCopをGitHub Actionsで実行し、指摘箇所にコメントを付けてくれる便利なCustom Actionです。 本記事では筆者がこのOSSを改良して実装したSuggestion featureという便利機能とその実装についてご紹介します。RuboCopをお使いの方、より良いRuboCop生活をお求めの方、静的解析が好きな方向けの記事となります。 なお、この記事は2023-06-21に行われたGotanda.rb#53@ギフティで"RuboCop Custom Formatter for Reviewdog Diagnostic Format"と題して筆者が行った発表をもとにしています。 前提となる知識 初めにreviewdog/action-rubocop

                                        reviewdog x Custom FormatterでRuboCopの自動修正を提案させるようにしました - inSmartBank
                                      • Hashの値の省略記法 - NaCl Blog

                                        とみなされるというもので、ES6と同じ記法です。 ただ、HashというよりSetに見えるという理由で却下されました。私自身、すごくほしいというよりは「実装できたから提案してみるか」という感じだったので、あまりがんばって説得しなかった気がします。 次の提案は2018年のFeature #14579 Hash value omissionです。Hashのように見えないのがいやだと言われたので という記法に変更しました。 これならちゃんとHashに見えるので意気揚々と提案したのですが、「前の文法よりいいけど、ES6の文法と違うRuby独自の文法の導入になっちゃうし、どっちも直感的じゃないから好きじゃない」という理由でこれも却下されました。 ES6と違う文法を導入するのはいやで、ES6の文法もいやということで、ああこれは詰みですねということでもう提案を諦めることにしました。 ところが、その後も同じ

                                        • `&& return` より `and return` を好むべき理由 - koicの日記

                                          かつての RuboCop は condition and return というコードに対して、condition && return にするようデフォルトでサジェスチョンしていた。 このサジェスチョンはおかしく見えたので、結構前に構成を変えてデフォルトで condition and return を受け入れるようにしている。 https://github.com/rubocop-hq/rubocop-rails/pull/224 https://github.com/rubocop-hq/rubocop/pull/7959 このあたり Ruby での演算子の結合順位をおさらいすると、以下のとおり。 && || and, or docs.ruby-lang.org サジェスチョンされるがまま演算子を変えると、結果が変わるサンプルです。 % ruby -e 'p false || true a

                                            `&& return` より `and return` を好むべき理由 - koicの日記
                                          • LSP ルーターを作った - tmtms のメモ

                                            最近は Emacs の LSP クライアント機能である Eglot を使って Ruby を書いたり読んだりしてる。 ruby-mode では LSP サーバーはデフォルトで Solargraph が使われてる。 半年くらい前に rubocop に LSP サーバー機能が搭載されたらしいんで使ってみた。 (add-to-list 'eglot-server-programs '(ruby-mode . ("rubocop" "--lsp"))) rubocop の機能であるコードのチェックはちゃんと使えたんだけど、Solargraph で使えてたコードジャンプとかが使えなくなった。まあそれはそう。 Eglot はモードごとに LSP サーバーを指定することはできるけど、同じモードに複数の LSP サーバーを指定することはできなそう。Emacs Lisp はよくわからないんでちゃんと調べてない

                                              LSP ルーターを作った - tmtms のメモ
                                            • 正規表現でかんたんにCopを書けるRuboCop拡張 rubocop-grep をリリースしました - pockestrap

                                              こんにちは。正規表現でかんたんにCopを書けるRuboCop拡張を作ってみたので紹介します。 github.com 使い方 まず、ほかのRuboCop拡張と同様にgemをインストールし、.rubocop.ymlのrequireにこのgemを指定してください。 この拡張は設定をしないと何も動きません。次のように.rubocop.ymlに設定をします。 Grep/Grep: Rules: # シンプルな例。正規表現にマッチした場合に、このCopが警告をします。 - Pattern: '\bENV\b' Message: Do not refer ENV directly. # パターンはArrayにして複数の正規表現を含めることができます。 - Pattern: - 'binding\.irb' - 'binding\.pry' Message: 'Debug code remains' #

                                                正規表現でかんたんにCopを書けるRuboCop拡張 rubocop-grep をリリースしました - pockestrap
                                              • Railsのテストコードで使われているNamed Routesを実行時に文字列に直した話 - STORES Product Blog

                                                CTOの藤村です。最近はぜんぜんRailsを書いていません。ふとSuggestion: Use string literals instead of named routes or URL helpers in tests · Issue #328 · rubocop/rails-style-guideというIssueを見て、2年ほど前にやったことを思い出したので、今更ながらブログを書くことにしました。 テストコードはNamed Routesを使うべきではない? Railsでは routes.rb で定義されたアクションへのパスやURLを出力するヘルパーが用意されています。posts_pathなようなメソッドたちですね。Named Routesと呼ばれるこれを使うことで、アプリケーションに存在しないURLを指定することを防げます。 アプリケーション側ではNamed Routesを使うべきで

                                                  Railsのテストコードで使われているNamed Routesを実行時に文字列に直した話 - STORES Product Blog
                                                • .rubocop.ymlシンプルに、ゆるめにやりたいんじゃ ·

                                                  はじめに CIで怒ってくるrubocop、たまにしかruby書かない人にとっては「煩わしい!!」 みたいな感想を持たれる印象があるので、最近は極力シンプルなルールにするようにしていっています。 最近rubocopが1.0になったし、このエントリではそれを晒してみます。 ちなみにrubocopのバージョンは1.3.1(最新)で、プロジェクトはrailsアプリの想定です。 .rubocop.yml はい: # .rubocop.yml inherit_from: .rubocop_todo.yml inherit_mode: merge: - Exclude require: - rubocop-performance - rubocop-rubycw AllCops: DisabledByDefault: true Exclude: - 'gems/**/*' NewCops: enable

                                                    .rubocop.ymlシンプルに、ゆるめにやりたいんじゃ ·
                                                  • rubocop-daemon 裏話: OSS の苦悩

                                                    「Omotesando.rb #95」で発表した LT スライドです。 https://omotesandorb.connpass.com/event/311351/

                                                      rubocop-daemon 裏話: OSS の苦悩
                                                    • Slimcop

                                                      SlimテンプレートにRuboCopを適用するツール、Slimcopをつくった。 https://github.com/r7kamura/slimcop 使い方 基本的には、RuboCopと同じような機能をSlimテンプレート向けに提供するツールとなっている。SlimcopはGemとしてインストールでき、CLI向けに slimcop というコマンドを提供する。実行すると、Slimテンプレート中に埋め込まれたRubyのコードを検出し、それらに対してRuboCopで検査を実行する。また特徴的な機能として、auto-correctにも対応している。 $ slimcop --help Usage: slimcop [options] [file1, file2, ...] -a, --auto-correct Auto-correct offenses. -c, --config= Specify

                                                        Slimcop
                                                      • Automate RuboCop ToDo fix

                                                        DEV Community Follow A space to discuss and keep up software development and manage your software career

                                                          Automate RuboCop ToDo fix
                                                        • Rails 6.1で生成コードをRuboCop適用済みにする - koicの日記

                                                          Rails 7.2以降を利用されている場合は以下の記事の方を参照してください。 koic.hatenablog.com Rails 6.1 がリリースされたので、y-yagi さんによる待望のパッチが使えるようになった。 PR にあるように使い方はシンプルで、Rails 6.1 での config/environments/development.rb に以下の設定を足す。 config.generators.after_generate do |files| parsable_files = files.filter { |file| file.end_with?('.rb') } unless parsable_files.empty? system("bundle exec rubocop -A --fail-level=E #{parsable_files.shelljoin}",

                                                            Rails 6.1で生成コードをRuboCop適用済みにする - koicの日記
                                                          • 【令和最新版】カスタムCop 作成 ガイド Ruby 静的解析 RuboCop コードフォーマッタ Linter【AutoCorrect: contextual対応】 - ANDPAD Tech Blog

                                                            はじめに こんにちは。姓は#LR_parser_gangs、名はydahです。最近は子が「となりのトトロ」にハマっており、毎日「となりのトトロ」がリビングで流れています。 まったく飽きないのか、毎日のように「となりのトトロ観る〜?(意訳:となりのトトロが観たいのでリモコンを操作して欲しい)」と言い続け1か月が経とうとしています。 これは ANDPAD Advent Calendar 2024 3日目の記事です。 今回はRubyKaigi 2024やKaigi on Rails 2024で秘蔵のesaとして配布した、RuboCopのカスタムCop作成のための資料を公開します。 カスタムCopの作成ができると、自社のコーディング規約合わせた柔軟なルールを定義し管理できるようになります。 アップストリームに提案を送るのもよいですが、汎用的でない場合や、限定された状況でのみ有用なルールというのは一

                                                              【令和最新版】カスタムCop 作成 ガイド Ruby 静的解析 RuboCop コードフォーマッタ Linter【AutoCorrect: contextual対応】 - ANDPAD Tech Blog
                                                            • Ruby: 手作りVS Code拡張をアンインストールしてRuby LSPアドオンに乗り換えました(翻訳)|TechRacho by BPS株式会社

                                                              概要 元サイトの許諾を得て翻訳・公開いたします。 英語記事: Why I just uninstalled my own VS Code extension | justin․searls․co 原文公開日: 2024/07/06 原著者: Justin Searls -- Test Doubleの共同創業者です 日本語タイトルは内容に即したものにしました。 1年以上前に、Ruby LSP用のStandard Ruby(Standard)アドオンをリリースしないかとVini Stockから誘われ、ShopifyのRuby DXチームの多大な協力を得て(#630)、ついにリリースにこぎつけました。実は、standard gemのバージョンが1.39.1以上であれば、Ruby LSPの新しいアドオンとして既に組み込まれています。 Ruby LSPは、言語サーバー(language server

                                                                Ruby: 手作りVS Code拡張をアンインストールしてRuby LSPアドオンに乗り換えました(翻訳)|TechRacho by BPS株式会社
                                                              • RubocopでRubyコードのスタイルを強制せず、バグだけ検出 - スタディサプリ Product Team Blog

                                                                今回はRubyのRubocopの使い方のお話です。 Summary RubocopのLayout, Lint, Metrics, Styleらのcopのほとんどすべてをdisable 潜在的バグ発見に役立つ系のSecurity, Lintのcopの一部をenable rubocop:disable や .rubocop_todo.yml だけゆるく禁止 というルールで運用で一定の成功を上げているという報告です。 このルールは、Quipper (Tokyo) 社内のRubyアプリケーションのうち、複数のチームにまたがってメンテナンスされている、いわゆる境界的な位置に属するものだけを対象にしています。新しく書かれるコードの多くは個別チームがownershipをもってメンテナンスをするため、そちらではチームの合意で自由にRubocopの設定を導入したりしなかったりしますが、特定チームに寵愛を受け

                                                                  RubocopでRubyコードのスタイルを強制せず、バグだけ検出 - スタディサプリ Product Team Blog
                                                                • RuboCop 1.24.0 と Ruby 3.1 対応 - koicの日記

                                                                  RuboCop 1.24.0 がリリースされました。 github.com このリリースでは Ruby 3.1 のリリースに先行して、いくつかの Ruby 3.1 対応が入っています。 RuboCop の Ruby 3.1 対応の主だったものについて、ユーザー影響のありそうなものをピックアップして記しておきます。なお、現状で Ruby 3.1 サポートは experimental という位置づけです。 既存の Style/HashSyntax による hash value omission サポート 既存の Style/HashSyntax で、Ruby 3.1 の hash value omission をサポートするようにしています。 github.com bad / good は以下。 # EnforcedShorthandSyntax: always (default) # bad

                                                                    RuboCop 1.24.0 と Ruby 3.1 対応 - koicの日記
                                                                  • Rails 8.1でのRuboCop関連のアップデート - koicの日記

                                                                    Rails 8.1.0がリリースされました。ハイライトはリリース記事を読むと良いです。 rubyonrails.org ここで取り上げるのは、Rails 8.1.0 で更新された GitHub Actions 向けに生成される RuboCop 実行ワークフローのテンプレートについての小ネタです。 github.com 以下の設定は、この PR で更新された bin/rails new におけるテンプレートを元にした差分のサンプルです。ファイルとしては .github/workflows/ci.yml に相当します。 lint: runs-on: ubuntu-latest + env: + RUBY_VERSION: <%= ENV["RBENV_VERSION"] || ENV["rvm_ruby_string"] || "#{RUBY_ENGINE}-#{RUBY_ENGINE_VER

                                                                      Rails 8.1でのRuboCop関連のアップデート - koicの日記
                                                                    • RuboCop Serves (Much) Faster

                                                                      RuboCop’s motto has always been “The Ruby Linter that Serves and Protects”.1 Now, with the addition of a server mode in RuboCop 1.31 that motto is truer than ever! But first - a bit of background. Most people value speed and we’ve been on a decade-long journey in RuboCop to improve the performance: we’ve started with the Commissioner that triggered all cops during a single parser run for each file

                                                                      • RuboCopでRuby 3.4構文をサポートした - koicの日記

                                                                        RuboCop 1.75 で Ruby 3.4 構文のサポートを開始しました。 具体的には it ブロックパラメータ構文へのサポートが加わりました。 既存の Cop は対応数が多かったので一例を挙げるに留めますが、例えば Style/SymbolProc cop が処理する items.map { it.do_something } のような構文について、RuboCop 1.75 以降では items.map(&:do_something) とするような検出をできるようになりました。 新たな cop としては Style/ItBlockParameter cop を追加しており、デフォルトの構成では obj.foo { _1.do_something(arg) } といった _1 ひとつだけの numbered block parameter を使っているような場合に、obj.foo {

                                                                          RuboCopでRuby 3.4構文をサポートした - koicの日記
                                                                        • Rubocop でカスタムルールを作る - Money Forward Developers Blog

                                                                          こんにちは。 マネーフォワードでサーバーエンジニアをやっている江口です。 先日、開発中のプロダクトに Rubocop のカスタムルールを追加するチャレンジをしてみました。 その中で、手を動かしながら調べた内容をご紹介したいと思います。 Rubocop を全く知らない方でも読み物になるように、大まかな概要をおさらいしたうえで、本題に入ります。 Rubocop とは プログラマは誰しも、わかりやすさのため、あるいは効率化のために、自分なりのルールを守ってプログラムを書いています。わざわざ明示的に定めていないかもしれませんが、下記のようなルールはどのようなプログラムであっても満たすべきでしょう。 インデントを揃える 未使用変数を使わない if 文で2回以上同じ分岐をしない Rubocop は、Ruby プログラムがこのようなルールを満たしているかチェックするツールです。変更を加えるときに Rub

                                                                            Rubocop でカスタムルールを作る - Money Forward Developers Blog
                                                                          • RuboCop on RBS - スペクトラム

                                                                            rubocopをRBSファイルにも効かせたい - スペクトラム で作ってたものが大体できてきて、rbs v3.5もリリースされたので公開できるようになりました。 これでRuboCopをRBSファイルにも使用できるようになりました。 github.com 例えば class Foo def foo: () -> void end というRBSをレビューする時「インデント入れてね」と指摘したくなりますよね。Rubyファイルならrubocopでできるのに、RBSファイルではrubocopで指摘できないという問題がありました。あるんです。きっと。というわけで、できるようにしました。 とりあえず初期バージョンでは20以上のルールを用意しています。 autocorrect(自動修正)にも対応しているので、いつものようにrubocop -aしてあげれば class Foo def foo: () ->

                                                                              RuboCop on RBS - スペクトラム
                                                                            • 古くなってしまったrubocopを最新まで一気に上げたい人へ贈るバージョンアップの向き合い方 - Qiita

                                                                              rubocopは定期的に新バージョンがリリースされていますが、最新もしくはそれに近いバージョンにきっちり保てているプロジェクトは案外少ないのではないでしょうか。 2023年の3月末でRuby2.7のサポートが終了するのですが、3.0移行のrubyでrubocopを動かすにはrubocopのバージョンを1.0.0以上にあげる必要があります。 上記の都合から慌ててrubocopのバージョンを上げる必要になった方もいると思います。 しかし、一気に全部やろうとすると、チーム開発であれば他のメンバーの開発とコンフリクトしますし、長時間対応している間に新しいバージョンが出て規則が追加されるので全部対応しきるのは難しいです。 この記事では、そんなrubocopで疲弊する未来が見えた読者の方へ愚直に向き合いすぎないrubocopのバージョンアップ方法を授けます。 とりあえずバージョンを上げる まず兎にも角

                                                                                古くなってしまったrubocopを最新まで一気に上げたい人へ贈るバージョンアップの向き合い方 - Qiita
                                                                              • RubyKaigi 2025 に登壇した - koicの日記

                                                                                RubyKaigi 2025 に登壇しました。参加者としての感想も、RubyKaigi 会期に関することは、まとめてこの記事に記しておきます。 rubykaigi.org 自分の発表について RuboCop Plugin, RuboCop 向け Ruby LSP Add-on, バックエンドパーサーへの今後の展望 印象に残った登壇をいくつか ima1zumi さんのキーノート TRICK Lightning Talks sue445 さん ぺんさん The Parser gangs 今後の 362 日 廊下会議や The Tap トラックなどで得られた会話など ご挨拶や質問し損ねた点 勤務先の永和システムマネジメントとしての活動や、もろもろ おわりに 当日の発表スライドは以下です。 自分の発表について 満員御礼だったようで、ありがとうございました。自分の登壇を撮ることはできないので @ke

                                                                                  RubyKaigi 2025 に登壇した - koicの日記
                                                                                • Kaigi on Rails 2024に参加した - koicの日記

                                                                                  有明で開催された Kaigi on Rails 2024に参加した。 kaigionrails.org ざっとになるものの感想です。2日分まとめてこちらに書きます。 1日目 (2024-10-25) オープニングキーノート 「RailsのPull requestsのレビューの時に私が考えていること」 「JRubyのパワーを解き放つ:パフォーマンスと多様性向上のためのRailsアプリ」 そのほか 2日目 (2024-10-26) 「作って理解する RDBMSのしくみ」 「Importmapを使ったJavaScriptの読み込みとブラウザアドオンの影響」 「omakaseしないためのrubocop.yml のつくりかた」 「Identifying User Identity」 クロージングキーノート そのほか 1日目 (2024-10-25) 乗り換えでやや道を迷ったのもあり、ぷぽさんがいわれ

                                                                                    Kaigi on Rails 2024に参加した - koicの日記

                                                                                  新着記事