タグ

ブックマーク / pocke.hatenablog.com (7)

  • activerecord-originator をリリースしました - pockestrap

    こんにちは。 id:Pocke です。 今日は activerecord-originator という gem を作ったので紹介します。 github.com なにこれ Active Record が発行するSQLの各部分に、それがどこで作られたものかをコメントとして入れ込む gem です。 理解するには実例を見るのが早いでしょう。次のログはArticlesController#indexで実行されるクエリの例です。 Article Load (0.1ms) SELECT "articles".* FROM "articles" WHERE "articles"."status" = ? /* app/models/article.rb:3:in `published' */ AND "articles"."category_id" = ? /* app/controllers/artic

    activerecord-originator をリリースしました - pockestrap
  • Rails 7で導入される invert_where メソッドが危険そうだったので調べた - pockestrap

    この記事は現時点(2021-04-28)のrails/railsのmainブランチの最新のコミットでテストしています。 TL;DR invert_whereはすべてのwhereをinvertする 使い方によっては意図しない条件をinvertして危険 invert_whereとは invert_whereは、Rails 7でActiveRecord::Relationに追加される予定のメソッドです。 このメソッドは、relationにチェーンして呼び出すことで、それまでのwhereの条件を反転できます。 つまり次のようになります。(CHANGELOGから引用) class User scope :active, -> { where(accepted: true, locked: false) } end User.active # ... WHERE `accepted` = 1 AND

    Rails 7で導入される invert_where メソッドが危険そうだったので調べた - pockestrap
  • RBS Railsを使ってRailsアプリケーションにSteepを導入する - pockestrap

    RBS Railsを使ってRailsアプリケーションにSteepを導入するまでの解説します。 ただしこの「導入できる」というのは、解析が完走するという意味です。 型エラーを全てつぶすことや、Steepを実際の開発フローに乗っけることは私もまだできていないため、この記事ではサポートしません。 登場人物 RailsアプリケーションにSteepを導入するには、複数のプロジェクトが関連してきます。 まずはそれらをざっと紹介します。 steep gem Rubyの静的型検査器です。 rbs_rails gem RailsでRBSを使う上で必要な型定義を提供・生成するgemです。 データベースのスキーマ定義からモデルの型生成、及びroutesの定義からパスヘルパーの型生成をします。 それ以外のコードの型生成は担当範囲外です。 rbs gem ビルトインのライブラリ、及びスタンダードライブラリの型定義を

    RBS Railsを使ってRailsアプリケーションにSteepを導入する - pockestrap
  • rbs cli - pockestrap

    github.com RBSというRubyの型のためのソフトウェアがあり、RBSはrbsコマンドを含んでいる。 このコマンドは、.rbsファイル(Rubyの型定義ファイル)を書いていく上で必要になる。 この記事では、そのrbsコマンドの各サブコマンドについて、簡単に解説する。 rbsコマンドの実装は lib/ast/cli.rb に書かれている。 サブコマンドの実装は、 run_サブコマンド名メソッドを読むと良い。つまり、rbs astコマンドの実装はrun_astメソッドにある。 現時点(2020-06-15)のmasterブランチの最新版( https://github.com/ruby/rbs/commit/00872ed5de364a5d2fcf8169aee87307ba67aad3 )を元にしている。 サブコマンドに共通のオプション まず、共通で使えるオプションの説明をする。

    rbs cli - pockestrap
  • RuboCopで型情報を利用した解析を試している - pockestrap

    3行 RuboCopで「この変数はString」とかの情報を含めて解析させられないか試している まだPoCだけど、なんとなくは動いている https://github.com/pocke/rubocop-typed を見て 何をしているの rubocop-typed というプロジェクトで、RuboCopで今までできていなかった解析ができないか試しています。 github.com RuboCopの実行前にSteepを実行し、Steepの解析結果をCop内で使用することで型情報を利用した解析を実現しています。 何ができるの 現在は「nilになりえない式をレシーバーにした&.でのメソッド呼び出し」に警告を出すCopのみを実装しています。 arr = [1, 2, 3] value = arr.find { |x| x == 1 } arr&.first # arrはnilになりえないので、警告が

    RuboCopで型情報を利用した解析を試している - pockestrap
  • RuboCop の Collaborator になりました - pockestrap

    こんにちは。 RuboCop の Collaborator になりました。Collaborator とは、GitHub でマージボタンを押せる人です。 Promote @pocke to a Core RuboCop developer · bbatsov/rubocop@468835f · GitHub RuboCop とは Ruby のスタイルを検査/修正したり、バグになりうるコードを検査したりするツールです。 github.com 例えば、インデントがずれているコードに指摘をしたり、絶対に実行されないコード(return; hogehogeとか)を検出したりします。 何を開発しているの? 色々やっています。 私はスタイルチェックよりもLint的なバグを見つける方が好きなので、Lint copを追加/修正していることが多いです。 その他にも、RuboCop がクラッシュする問題を直した

    RuboCop の Collaborator になりました - pockestrap
  • 就活(done) - pockestrap

    人間の参考になればと自分の就活についてブログに書こうと時々思うんだけど、高専中退してふらふらしてた人間の就活は参考にならなさそうだなって思って書く気が起きない— Pocke(ぽっけ) (@p_ck_) 2017年6月22日 あまり人の参考になる気はしないのですが、雑に就活について書いておこうと思います。 参考にしたい/詳しく知りたい人がいましたら、声をかけてくださればより詳細な記事を書くかも知れません。 もしくは、個別に聞きたいことがあれば気軽に声をかけてください(特にこれから就活の人とか)。 逆求人 サポーターズというサービスに登録していたら、逆求人イベントに誘われて行った。 5月とか6月にやっていたイベントで、サマーインターンを見据えての逆求人だった。 内容としては、8社 * 30分ぐらい(時間の記憶が定かではないけどそのくらいだったと思う)お話をするもの。 結局、逆求人がきっかけでイ

    就活(done) - pockestrap
    teitei_tk
    teitei_tk 2017/06/23
    お疲れ様でした。
  • 1