読者です 読者をやめる 読者になる 読者になる

Tbpgr Blog

Ruby プログラマ tbpgr(てぃーびー) のブログ

レガシーコードのリファクタリングの痛みを減らすパラメタライズドテストの活用について

この世界には二種類のソフトウェア開発者しかいない。 テストを書いてからリファクタするソフトウェア開発者と、テストを書かずにリファクタするソフトウェア開発者だ。 さらに、テストを書いてからリファクタするソフトウェア開発者には二種類のソフトウェ…

best-rubyで55のRuby のテクニック・イディオム・リファクタリング手法について知る

best-ruby というサイトで55個の Ruby のテクニック・イディオム・リファクタリング手法について紹介しています。 ※2017/02/23 時点で55個でしたが、増えたり減ったりするかもしれません コンテンツは Tricks, Idiomatic Ruby, Refactorings, Best Practices…

Octokit でプルリクエストを作成する

Octokit でプルリクエストを作成する。 ※この記事は個人メモです。既出情報のため、元から知っている人は特に得るものがありません

Octokit で GitHub の Issue を検索する

Octokit で GitHub の Issue をタイトルで検索します。 ※この記事は個人メモです。既出情報のため、元から知っている人は特に得るものがありません

Visual Studio CodeでRubyのデバッグをする

Visual Studio Code でRubyのデバッグをします。

Octokit で GitHub の Repository を作成する

Octokit で GitHub の Repository を作成します。 ※この記事は個人メモです。既出情報のため、元から知っている人は特に得るものがありません

Octokit で GitHub の Issue を作成する

Octokit で GitHub の Issue を作成します。 ※この記事は個人メモです。既出情報のため、元から知っている人は特に得るものがありません

Rubyで外部のgemの挙動を確認したい!変更したい!というときに便利な bundle open コマンド

Rubyで外部のgemの挙動を確認したい!!変更したい!というときに便利な bundle open コマンドについて。 ※この記事は既出情報しかありません。個人メモとして記録しています。 タイトルを見てピンと来るからには価値のない内容です。

RSpecやMochaのテストにタグをつけてテスト対象をフィルタする

t_wadaさんに技術相談をしました という記事で言及されていた テストのタグ付について気になったので、具体的な実装レベルのところについてまとめます。 cureapp-dev.hatenablog.com

3つのgemの事例から学ぶRubyにおけるコマンドラインツール設計技法

3つのgemからRubyのCLIツールの設計について学びます。 今回コールドリーディングをするのは bundler itamae serverkit です。

RubyでPlugin機構のサンプルを実装してみる

RubyでPlugin機構のサンプルを実装してみます。

3つのgemの事例から学ぶRubyにおけるPlugin設計技法

RubyにおけるPluginの設計技法について、実際に多くのユーザーに利用されている 3つの gem を参考にしてみます。

自作ライブラリにRakeのタスクを付属する

CLI の gem を提供する際などに、 gem のユーザーに対してRakeのタスクを付属提供したい場合に Rake::TaskLib を利用することで実現できます。

RubyCriticのrake taskを使う

RubyCriticをrake taskとして利用するための設定をします。

Circle CI で bundle outdated を実行し、結果を JUnit xml にすることでレポートを生成する

Circle CI で bundle outdated を実行し、結果を JUnit フォーマットの xml にすることでレポートを生成します。 budle outdated 関連はいろんな人が自動化していて、特に新規性はないのですが JUnit フォーマットの xml を自前で作成してみるのを試したくて…

gitでコミット日ごとの総ファイル数を取得してgnuplotでグラフ化してみる

gitでコミット日ごとの総ファイル数を取得してgnuplotでグラフ化してみます。 きっかけは結城先生のツイートです。 (何も調べずに書いてます)gitのリポジトリへのコミット具合をサマライズしてくれるツールで手軽なのあるかな。何をしたいかというと、今回…

Circle CIでRubocopを利用する際のレポーティング設定をする

Ruby + Rubocop のプロジェクトで静的解析の結果をCircle CIで取り扱いたい場合、 rubocop-junit-formatter gem を使います。 前提 Circle CIでRubocopを利用する場合の基本的な設定は下記記事にまとめてあります。 紹介済みの内容はこの記事では取り扱いま…

powerpoint gem で PowerPoint のスライドを生成する

powerpoint gem で PowerPoint のスライドを生成します

RubyCritic で Ruby のコードの品質を静的解析する

RubyCriticは複数の静的解析 gem ( Reek, Flay, Flog)をラップしたツールです。 github.com 下記記事で紹介した metric_fu と似たようなツールですね。 tbpgr.hatenablog.com

RubyとCrystalとJavaScriptのCLI Spinner事情

仕事の都合上、 Ruby と Crystal と JavaScript(ES6) を利用することが多くなりそうなので これらの言語でCLIツールを作成するときに使う spinner のライブラリについて 調べました。

Ruby, Node.js, Crystal でアップデートが必要なPackageを確認する方法と関連ツール・サービスについて

Ruby, Node.js, Crystal でアップデートが必要なPackageを確認する方法と 関連ツール・サービスについてまとめます。 個人メモ的な記事。基本的に既出情報なのでタイトルをみてピンと来ているかたは 読む必要がありません。

Rubyのコードの臭い検出ツールReekをAtomで利用する

Rubyの静的解析ツールReekのAtom Packageについてまとめます

Ruby プロジェクト の Circle CI テスト+バッジ+rubocopの設定例

このメモは自分が参照するための個人メモです。 新規性は全くないので、特に参照する価値はありません。

好きな言葉を引用スター

概要 以下のRubyのプログラムで生成したランダムな文字列から好きな言葉を引用してみてください。 print (('あ'..'ん').to_a * 50).shuffle.each_slice(40).map(&:join).join("\n") 引用スターについては下記の公式Helpを参照 はてなスターのヘルプ - お問い…

rebuild.fm で話題になったBitBarでanyenvでインストールしたRubyを利用する

BitBarでanyenvでインストールしたRubyを利用してみます。

anyenvでrbenvとcrenvをインストールして、RubyとCrystalの二刀流環境を構築する

プログラム言語の複数バージョンを管理するツールとして xxenv 系のツールがあります。 例えば、 Ruby 向けの rbenv など。 この env 系のツールを一括管理してくれるのが anyenv です。 github.com

Sublime TextのSnippetをDashの自作ツール向けのSnippet設定ファイルに変換する

あらすじ DashのSnippetをCLIで管理するツールを作りました。 tbpgr.hatenablog.com tbpgr.hatenablog.com tbpgr.hatenablog.com 次のステップとして、既存のSnippetをDash向けに移行しようと思います。 今回は一例としてSublime TextのSnippetをDashのSnipp…

DashのSnippetをTOMLファイルで管理してrakeのコマンドで一括更新できるツールにdump機能を追加した

あらすじ DashのSnippetですが、Dash Guideやネットにある情報を見る限り DashのGUIから登録する方法しか提供されていないようです。 DashはSnippetのデータをSQLiteで管理しています。 そこで、このデータ構造を把握し中身を直接操作することで Snippetの情…

DashのSnippetをTOMLファイルで管理してrakeのコマンドで一括更新できるツールを作った

あらすじ DashのSnippetですが、Dash Guideやネットにある情報を見る限り DashのGUIから登録する方法しか提供されていないようです。 DashはSnippetのデータをSQLiteで管理しています。 そこで、このデータ構造を把握し中身を直接操作することで Snippetの情…

GitHubのIssueテンプレートを生成する isstempl gem を作った

GitHubのIssueテンプレートを生成する isstempl gem を作りました。

Fix typoでRubyのChangeLogに名前が残った

Fix typoでRubyのChangeLogに名前が残った。地味な成果だけど嬉しい。

てぃーびーの Ruby 練習帳 | 特定の月の特定の曜日の日付配列を取得し、特定のフォーマットで出力する

特定の月の特定の曜日の日付配列を取得します

Ruby + Web APIに関わる情報のリンク集

Ruby + Web APIに関わる情報をまとめます。 Microservicesの需要が高まる昨今、Web APIの導入に対する需要も当然高まっていると思います。 導入企業の情報を見るとRubyを活用しているところが多いように感じます。 そこで、Ruby+Web APIに関わる情報を調べて…

てぃーびーの Ruby 練習帳 | 文字列の連結(不変、破壊的)

概要 文字列の連結

Visual Studio Code で Ruby を書いてみた #ruby

概要 Visual Studio Code で Ruby を書いてみました

てぃーびーの Ruby 練習帳 | テンプレートを元にテキストを生成する

概要 テンプレートを元にテキストを生成する

てぃーびーの Ruby 練習帳

概要 てぃーびーの Ruby 練習帳

てぃーびーの Ruby 練習帳 | 連番を含む文字列を生成する

概要 連番を含む文字列を生成する

CUI ツールにも人間への配慮を。人間にとって読みやすい出力フォーマットのオプションを用意する

概要 CUI ツールは 手軽さ、自動化との相性 などのコンテキストで語られる事が多いですが、 人間が利用する際の可読性が必要となるケースもあります。 今回は、 レコードと列からなる大量のデータを扱う場合 を想定し、 表形式のフォーマット出力について扱…

Happy 22th Birthday, Ruby! #rubybirthday

概要 Ruby の 22 歳の誕生日を祝います

Ruby | String | chomp!

概要 String#chomp!(rs = $/) -> self | nil 詳細 String#chomp の破壊的メソッド。破壊的であること以外は、 chomp と同じ http://docs.ruby-lang.org/ja/2.1.0/method/String/i/chomp.html サンプルコード hoge1 = "hoge\n" hoge2 = "hoge\r\n" hoge3 = "h…

Ruby | String | chomp

概要 String#chomp(rs = $/) -> String 詳細 self の末尾から rs で指定する改行コードを取り除いた文字列を生成して返す。 ただし、rs が "\n" ($/ のデフォルト値) のときは、 実行環境によらず "\r", "\r\n", "\n" のすべてを改行コードとみなして取り除…

Ruby | String | chars

概要 String#chars -> [String] String#chars {|cstr| block } -> self 詳細 文字列の各文字を文字列の配列で返す。 サンプルコード require 'tbpgr_utils' bulk_puts_eval binding, <<-EOS 'hoge'.chars 'hoge'.each_char.to_a EOS __END__ 下記はTbpgrUtil…

Ruby | String | center

概要 String#center(width, padding = ' ') -> String 詳細 長さ width の文字列に self を中央寄せした文字列を返す。 サンプルコード require 'tbpgr_utils' bulk_puts_eval binding, <<-EOS 'hoge'.center(8) 'hoge'.center(8, '!') 'hoge'.center(8, '+-…

Ruby | String | casecmp

概要 String#casecmp(other) -> Integer | nil 詳細 String# と同様の比較をするが, 大文字小文字を無視する。 サンプルコード require 'tbpgr_utils' bulk_puts_eval binding, <<-EOS 'b'<=>'A' 'b'<=>'a' 'b'<=>'B' 'b'<=>'b' 'b'<=>'C' 'b'<=>'c' 'b'.cas…

Ruby | String | capitalize!

概要 String#capitalize! -> self | nil 詳細 文字列先頭の文字を大文字に、残りを小文字に変更。 アルファベット以外の文字はそのまま サンプルコード require 'tbpgr_utils' bulk_puts_eval binding, <<-EOS hoge = 'hoge' hoge.capitalize hoge hoge = 'h…

Ruby | String | capitalize

概要 String#capitalize -> String 詳細 文字列先頭の文字を大文字に、残りを小文字に変更した文字列を返却 アルファベット以外はそのまま。 サンプルコード require 'tbpgr_utils' bulk_puts_eval binding, <<-EOS 'hoge'.capitalize 'hoge_hige'.capitaliz…

Ruby | String | byteslice

概要 String#byteslice(nth) -> String | nil String#byteslice(nth, len) -> String | nil String#byteslice(range) -> String | nil 詳細 byte 単位での文字列切り出しを行う。byteslice(nth) で任意の 1 byte byteslice(nth, len) で任意の nth byte 目か…

Ruby | String | bytesize

概要 String#bytesize -> Integer 詳細 文字列のバイト長を整数で返却 サンプルコード require 'tbpgr_utils' bulk_puts_eval binding, <<-EOS "hoge".bytesize "ほげ".bytesize "hoげ".bytesize "hoげ".encoding "hoげ".encode("Shift_JIS").bytesize EOS _…

Ruby | String | bytes

概要 String#bytes -> [Integer] String#bytes {|byte| ... } -> self 詳細 文字列の各バイトを数値の配列で返却。(self.each_byte.to_a と同じです) ブロック版のインターフェースは obsolete (廃止) のため String#each_block を利用すること サンプルコ…