タグ

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

  • 正規表現でかんたんに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
    sue445
    sue445 2023/03/06
  • 福岡Rubyist会議に登壇しました(します) - pockestrap

    この記事は福岡Rubyist会議の登壇資料です。ひとまず資料の公開のために記事を公開します。 この記事は登壇後に編集し、登壇報告記事になります。(追記: と言っていたのですが、新しく記事を書くことにして公開しました。 Rubyの外部コマンド実行入門について発表しました - pockestrap) スライド スライド内で用いているフローチャート

    福岡Rubyist会議に登壇しました(します) - pockestrap
    sue445
    sue445 2023/02/19
  • 近況 2021 - pockestrap

    おはようございます。ぽっけです。2021年12月21日目の、朝…じゃないな、夜です。 この記事はRubyist近況Advent Calendar 2021 21日目の記事です。 20日目は id:Sixeight さんの近況でした。Ruby Prizeのお祝いありがとうございます! 私はキーボードはずっとHHKB Pro 2 Type-Sをつかっています。 この記事では、ここ1年ぐらいの自分の話を適当に書こうと思います。 退職 日が株式会社ビットジャーニーへの最終出社でした。近況っぽい話ですね。2019年の2月に入社したので、3年弱在籍していたことになります。 1.7ヶ月ほど無職を満喫します。旅行に行きたいけど、コロナが厳しそうで悲しい……。 次の会社ではRailsアプリケーションエンジニアとしても働きますが、業務としてRBSの開発も行う予定です。1 Ruby Ruby関連では、コミッタ

    近況 2021 - pockestrap
    sue445
    sue445 2021/12/21
    お疲れ様でしたッ!
  • 読書 2021 - pockestrap

    最近の自分の読書スタイルについてまとめてみる。 基的にKindleを読んでいる。物理は読むことが少ないので、例外ケースという感じ。この記事で書くほどのことではない。 基的に読書をする状況ごとに別のを読んでいる。また、ごとにつかうデバイスは固定している。1つのをいろんなデバイスで読んでいると、切り替えがだるい。 主に次の4つの状況で読書をしている お風呂 寝る前 ドライヤー中 すきま時間 また、これとは別に娯楽として漫画を大量に読んでいる。 各状況ごとの読書スタイル 状況ごとに違うスタイルで読書をしているので、以下で各状況について書く。 お風呂での読書 一番時間を取っているのがお風呂での読書だと思う。1回の入浴で30分以上は読書に使っていると思う。ほぼ毎日。 お風呂ではKindle Paperwhite (多分防水)を使って読んでいる。お風呂の蓋のでこぼこにKindleをはさ

    読書 2021 - pockestrap
    sue445
    sue445 2021/02/22
    僕も風呂kindleはよくやるけど裸眼だと小さい文字が厳しいので漫画読むことが多いかなあ
  • gemspecのfilesとtest_filesとはなんなのか - pockestrap

    TL;DR test_filesは使わない。 files と test_files gemspecで指定するこれらの挙動を説明します。 files https://guides.rubygems.org/specification-reference/#files パッケージに含まれるファイルを指定します。 Gem::Specification.new do |s| s.files = ['foo.rb', 'bar.rb'] end このように書くと、このgemにはfoo.rbとbar.rbのみが含まれます。 実際にはファイルを手書きで列挙せずに、git ls-filesを使ったりDir.globを使ったりすることが多いでしょう。 test_files パッケージに含まれるテストファイルを指定します たとえば次のように指定できます。 Gem::Specification.new do |

    gemspecのfilesとtest_filesとはなんなのか - pockestrap
    sue445
    sue445 2020/10/24
  • Rails/UniqueValidationWithoutIndex copを追加した - pockestrap

    rubocop-railsRails/UniqueValidationWithoutIndex copを追加しました。 rubocop-railsの次期リリース(おそらくv2.5.0)から利用できます。 github.com これはなに Rails/UniqueValidationWithoutIndex copは、RDBMSのunique indexがついていないカラムに対して、Active Recordのレイヤーでuniquenessバリデーションを書いている場合に警告をします。 たとえば次のバリデーション定義がある時を考えます。 class User < ApplicationRecord validates :account, uniqueness: true end この時、このCopは次のスキーマ定義によって警告を出したり出さなかったりします。 # account カラムに

    Rails/UniqueValidationWithoutIndex copを追加した - pockestrap
    sue445
    sue445 2020/03/24
    validates uniquenessで本番障害起こしたことある件は代々語り継いでいきたい
  • 私にPull Requestとレビューを見せてください - pockestrap

    TL;DR RuboCopプラグインの開発の為にPull Requestを見たいです 仕事としてでもそうでなくても構いません TwitterGitHub Issueやメール( kuwabara (at) pocke(dot)me )までご連絡お待ちしています 背景 現在私はRuboCop Typed (仮)というRuboCopプラグインの開発をしています。 github.com pocke.hatenablog.com このRuboCopプラグインでは、Ruby 3で導入される予定の静的型の情報を使って、従来ではできなかった解析をRuboCopで行うことを目的にしています。 私は現在この解析を実装しつつ、型情報によって解決できるようになる問題にはどのようなものがあるのかを探しています。 そして、この「型情報によって解決できるようになる問題」を探すために多くのPull Requestを読み

    私にPull Requestとレビューを見せてください - pockestrap
    sue445
    sue445 2020/02/05
  • RuboCopのカスタムCop gemを作るためのジェネレータを作った - pockestrap

    github.com これはなに RuboCopのカスタムCop gemを作るためのジェネレータです。 rubocop-rspecなどのgemを作る時のひな型を生成します。 使い方 まず、gem installします。 $ gem install custom_cops_generator そして、custom_cops_generatorコマンドを実行します。 $ custom_cops_generator rubocop-hello_world Creating gem 'rubocop-hello_world'... create rubocop-hello_world/Gemfile create rubocop-hello_world/lib/rubocop/hello_world.rb create rubocop-hello_world/lib/rubocop/hello_w

    RuboCopのカスタムCop gemを作るためのジェネレータを作った - pockestrap
    sue445
    sue445 2019/09/05
    便利そう
  • Ruby界隈の大統一Slackワークスペースがほしい - pockestrap

    TL;DR https://join.slack.com/t/ruby-jp/shared_invite/enQtNzE1NDg1ODE2MDM2LTE1NTc2Y2M0ZThlNzdmOWEyZjYwZjdhZDAwNjNhMGE0NDJiODcwMTNkZWRjOTgyMzNkZjEyMmQ1ZWYyNzkzYzk に入るといい感じになってほしい このブログの内容は私個人の意見であってこのSlackコミュニティ全体の意見ではないです 何が欲しいのか vim-jpのSlack1がとてもうまく回っていて、これがRubyコミュニティにもほしい。2 vim-jpのSlackでは、雑談、質問、記事やプラグインの宣伝、Vim体の開発、プラグインの開発、流行りのプラグイン、地域Vimイベント、各言語とVimの話、ランチ料理、スロット、バンクーバー情報などなどとても雑多に色々話されている。 これは

    Ruby界隈の大統一Slackワークスペースがほしい - pockestrap
    sue445
    sue445 2019/08/04
  • keycast.vimをつくった - pockestrap

    Vimで入力した文字を表示するためのプラグイン、keycast.vimを作った。 github.com screencast 仕組み 入力されたキーをbannerコマンドで大きくして、popup windowに表示している。 キーの入力 最初、Vimでキーの入力を監視する方法が見つからなくて苦労した。 最初のPoCではInsertCharPreを使っていた。 InsertCharPreはその名の通り、insertモード時に文字が入力される直前に呼ばれるイベントである。 つまり、normalモード時に入力された文字は受け取ることができない。 PoC キーストロークを表示するやつ pic.twitter.com/XnVVegkfQH— Pocke(ぽっけ) SW-1309-2807-5790 (@p_ck_) 2019年6月26日 twitter.com 次に、getchar()とfeedke

    keycast.vimをつくった - pockestrap
    sue445
    sue445 2019/07/08
  • 毎日新鮮なRubyを使う - pockestrap

    rbenv global trunkしていても気が向いた時にしかRubyをビルドしていなかったので、trunkと言いつつ結構古いRubyが動いていることが多かった。 そのため毎日Rubyをビルドして、trunkとしてインストールするようにした。 環境 Arch Linux systemdが動いているLinuxディストリビューションであれば、だいたい同じ様に実現できると思う やったこと systemdのtimerを使い、毎日Rubyがビルドされるようにした。 また、itamaeを使いプロビジョニングを自動化した。 コード itamae/ディレクトリ下に必要なファイルを置いている。 itamae/cookbooks/ruby-trunk-build/default.rb 必要なファイル群を置いて、serviceをenable, startする。 remote_file '/etc/system

    毎日新鮮なRubyを使う - pockestrap
    sue445
    sue445 2019/01/28
    Itamae採用事例じゃん
  • .travis.yml内のRubyのバージョンを更新するPull Requestを作る - pockestrap

    こんにちは。Ruby 2.6が先日リリースされましたね。 Rubyの新しいバージョンがリリースされると、その度に.travis.ymlに書かれているRubyのバージョンを上げる作業をしている方は多いと思います。 今回はその作業を楽にするツールを作ったので紹介いたします。 ci_against その名もCI Against gemです。安直な名前ですね。 https://github.com/pocke/ci_against https://rubygems.org/gems/ci_against このgemは、まず以下の2点について.travis.ymlを書き換えます。 最新のRubyのteeny version1を使うように、既存のバージョン指定を書き換える 例: rvm: 2.5.0 => rvm: 2.5.3 新しいRubyのmajor / minor versionが出た時に、その

    .travis.yml内のRubyのバージョンを更新するPull Requestを作る - pockestrap
    sue445
    sue445 2018/12/28
    便利オブザイヤー
  • RuboCop 0.50.0 のCHANGELOGを読む - pockestrap

    RuboCop のバージョン 0.50.0 がリリースされました。 https://github.com/bbatsov/rubocop/releases/tag/v0.50.0 CHANGELOG から変更を見ていこうと思います。 破壊的変更 Naming Department Issue: https://github.com/bbatsov/rubocop/issues/4521 PR: https://github.com/bbatsov/rubocop/pull/4575 今回のリリースでは、新たに Naming Department が新設されました(ちなみに、Department とは RuboCop 用語で、Cop のグループのことです)。 Naming Department には、メソッドやクラスの名前付けに関する Cop が所属します。 今回の Naming Depar

    RuboCop 0.50.0 のCHANGELOGを読む - pockestrap
    sue445
    sue445 2017/10/01
  • 🍚🅱🚨🚵🎼😬🐦🛐🌘📵🆒🏫✌🎷🍤🐠👨⁉🆒🇷 - pockestrap

    github.com 生きていると、絵文字が欲しくなる時がある。例えば、ブログのタイトルに迷った時。 そういう時に、サッと絵文字を提案してくれるコマンドがあったら便利ではないだろうか? その願いを叶えてくれるのが、emo コマンドだ。 このコマンドは、go get github.com/pocke/emoですぐインストールすることができる。 使い方も簡単だ。emo randと入力するだけで、絵文字がひとつ手に入る。もし沢山の絵文字が欲しければ、emo rand 20のように数を指定することもできる。 $ emo rand 1 🐻 $ emo rand 20 🏴🗺🌧🌈🔧🍩🏵🏍♀🗄✒🍱🏟☎💷🌵🎃*⏏🚢

    🍚🅱🚨🚵🎼😬🐦🛐🌘📵🆒🏫✌🎷🍤🐠👨⁉🆒🇷 - pockestrap
    sue445
    sue445 2017/09/26
  • RubyKaigi 2017 で Lint について話します。 - pockestrap

    RubyKaigi 2017 で Lint について話します。 rubykaigi.org Lint とは Lint というのは、バグになりうるコードを自動で検出プログラムです。 なにを話すのか Ruby のための Lint を、どう実装するかについて話します。 Lint が検出するコードの例を一つ紹介します。 if 'str' do_something else do_something2 end 上記のコードでは、ifの条件文内にstring literalが存在します。 そのため、この条件文は常に真に評価されるため、do_something2が実行されることは絶対にありません。 Lint はこのような間違いを検出することが出来ます。 今回の talk では、Lint はどのように「このコードに警告を出すべきか」を判断しているのか、簡単な Lint の実装と共に話します。 また、現実的

    RubyKaigi 2017 で Lint について話します。 - pockestrap
    sue445
    sue445 2017/09/14
  • GitHubに芝を生やすだけで満足していませんか? 芝を着るサービス、Shibartをリリースしました! - pockestrap

    追記 2016年12月31日 22時40分 2016年12月31日 22時(JST)頃まで、プログラムのバグにより生成される芝が7段ではなく6段になってしまっている不具合がありました。 今後新規に作成されたTシャツなどでは問題なく7段の芝になります。 既にTシャツ等をご購入頂いている場合は、お手数ですが こちら を参考に購入をキャンセルしていただき、再度グッズを作成し購入の手続きを行っていただけると幸いです。 ご迷惑をおかけいたしまして当に申し訳ございません。 追記ここまで こんにちは! id:Pocke です。 日、芝を着るサービス Shibart をリリースしたので報告させていただきます。 Shibart | GitHub で育てた芝を、あなただけのTシャツに。 芝を着る、って何?? 芝を着る、とはどういうことでしょうか。 そもそも芝とは、GitHubのContributionグラ

    GitHubに芝を生やすだけで満足していませんか? 芝を着るサービス、Shibartをリリースしました! - pockestrap
    sue445
    sue445 2016/12/30
    実際にTシャツ作れるのすごい
  • TDDBC in Tokyo 2016-02 に参加した - pockestrap

    tddbc.doorkeeper.jp 経緯 多分 dots 経由で知ったと思う。 行こうかな―って迷っているうちに補欠登録になってしまったけど、繰り上がりで参加できてよかった。 TDDBC、ちょっと悩んでから登録したせいでキャンセル待ちになってしまった…。あとGoやりたい https://t.co/3EPuBkjh0x— Pocke(ぽっけ) (@p_ck_) 2016年2月5日 お、TDDBCいけることになったっぽい— Pocke(ぽっけ) (@p_ck_) 2016年2月20日 当日 講演を聴いた 「TDDはじめて物語」 #tddbc from Hiroyuki Ohnaka www.slideshare.net TDDは銀の弾丸ではない といった辺りが印象的だった TDDの背景と、何故TDDをするのか、を考えた t_wadaさんの講演行きたかった… お昼をべた 黒ゴマ担々麺を

    TDDBC in Tokyo 2016-02 に参加した - pockestrap
    sue445
    sue445 2016/02/28
  • 1