ruby

Github Actions + simplecov + codecov でカバレッジを表示する

rochefort/git-trend のCIは、これまで Travis-CI を利用していたのですが、 無料で使えなくなっていました(どうも2020年ぐらいからだったみたい)ので、今だとGithub Actionsが簡単に利用できそうでしたので、こちらへ移行しました。 また、カバレッジの表…

macOS Sonomaでのmysql2 gemのエラー対応

Sonomaでのmysql2関連のエラー対応メモです。 macOSアップグレードの度に毎回似たようなやつをググっては対応していたので、少し調べながら対応してみました。 根本的に理解するには、もっと深いところを調べる必要がありそう。 どれも、その筋の人にしか分…

macOS Sonoma 14.1.2にrubyをinstallする

会社用のM3 Macが届いたので、さっそくrubyをinstallしようとしたら、エラーでハマったのでメモしておく。 エラー内容 $ RUBY_CONFIGURE_OPTS="--with-openssl-dir=$(brew --prefix openssl)" asdf install ruby 3.2.2 To follow progress, use 'tail -f /va…

active_recordをrails以外で使う

ググるとActive Recordを単独で使う方法が出てきますが、手元のRails7系のActive Recordだと動かなかったので、調べながらやってみました。 結論 以下で動きました。 # Rakefile require "bundler/gem_tasks" require "bundler/setup" require "active_recor…

RUBYOPT=-W:deprecated 環境変数を設定しておこう

古いruby2.7系のアプリを3.1.2に更新する作業をしていました。 rubyのでdeprecated warningについて ruby2.7.1 でキーワード引数関係のdeprected warningが沢山出るようになったののを受けて ruby2.7.2 では、deprecated warningをデフォルト非表示にする対…

プロを目指す人のためのRuby入門 読了

プロを目指す人のためのRuby入門 言語仕様からテスト駆動開発・デバッグ技法まで Software Design plus作者:伊藤 淳一技術評論社Amazon cherry本、第二版読了。 初版も読んでいたのですが、第二版も読んでみました。 サンプルコードも書きながら楽しく読み進…

vscodeのsnippetでrubyのクラスをファイル名を元に自動でセットする

確かatomではrubyのsnippetを使ってクラスを書くときに、ファイル名から自動で生成してくれたと思うのですが、 vscodeのruby snippetではクラス名は ClassName 固定でセットされています。 これが煩わしいので、独自のsnippetsを書いて対応しました。 やり方…

anyenvからasdfに移行(M1 Mac)

豊富なプラグインとshellの起動が短くなるという話を聞いて asdf を入れてみました。 anyenvはshellの起動の度にワンテンポ待つ(約1秒ほど)のが少し気になっていました。 Installation 以下に、環境ごとに記載されています。 Getting Started | asdf 私はm…

SodaStreamMapというサイトを作った

先日、Sodastream(Genesis v2)を購入し - rochefort's blog 、soda lifeを満喫している毎日なのですが、ガスが無くなると、ガスシリンダーの交換が必要になります。 Sodastreamのガスシリンダー交換 交換方法は、オンラインで申し込むか、取扱店舗に行って…

sesrverless frameworkを使ってrubyでAPIを作る

The Serverless Application Framework | Serverless.com 以前から気にはなっていたのですが、簡易的なAPIを作るために利用してみました。 同様のServerless Frameworkとしては、Ruby on Jets というのがあります。 こちらも触ってみたいところ。 ざっくり利…

rubyのcommitteeでRequestValidationを試してみる(OpenAPI 3.0)

昨年末からOpenAPI 3.0について調べていました。 YAMLを書いていて、型定義を元に簡単なvalidationぐらいはやってくれるツールはないかと思って探してみたところ、 OpenApI 3.0準拠のcommitteeというrubygemで実現できることが分かりました。 準備 rails rai…

vscodeでrubocopのAutoCorrectを使う方法

ググると、rufoやprettierというフォーマッター使う事例がありましたが、rubocop単体できた方が望ましいので 調べてやって見ました。 プラグイン misogi/vscode-ruby-rubocop: Rubocop extension for Visual Studio Code こんな感じで動作してくれます。 素…

git-trend v1.2.0 Released

rochefort/git-trend: fetch Trending repository on github HTMLの構造が変わって、動作しなくなっていたのでupdate。 github trending Trending repositories on GitHub today 見た目が変わっているのは、時々あるので特に驚きはなかったのですが、(今回…

バージョンアップの自動化をしてくれるDependabotが便利

他にもいくつかりますし、今更感がありますが去年導入してとても便利だと思ったのでご紹介。 dependabot.com 地味に面倒なライブラリのversion upですが、こいつを入れるだけで GithubのPull Requestまで出してくれます。 rubyだとGemfileを自動検知して良い…

SeleniumDriverのエラー(unable to connect to chromedriver 127.0.0.1:9515)

新年早々、seleniumでscrapeしようとしたら、タイトルのエラーとなった。 一般的な解決方法は ググると結構見つかって、chromedriver-helper をuninstallして homebrew で chromedriver入れろとのこと。 現時点ではchromedriverはhomebrewでは扱っていないた…

Ruby throwの使いどころ

例外ではなく、制御構造の話。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (5件) を見る 項目27 スコープから飛び出したい時にはraiseではなくthrowを使おう catchとthrowはgotoの…

Ruby リソースはブロックとensureで管理しよう

File::openの話にとどまらず、リソースを確保するというコードの抽象化の紹介。 (File::openについてはここでは省略) Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (5件) を見る …

Rubyの例外Tips

みんな最初は迷う例外のTips。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (5件) を見る 項目22 raiseにはただの文字列ではなくカスタム例外を渡そう raiseに文字列を渡すとRuntim…

RubyのSet#include? で効率化

項目18 要素が含まれているかどうかの処理を効率よく行うために集合を使うことを検討しよう Effective Ruby作者:Peter J.Jones翔泳社Amazon 先ずはArray Array#include? は計算量がO(n) 。 class Role def initialize(name, permissions) @name, @permission…

nil、スカラーオブジェクトを配列に変換するには、Arrayメソッドを使おう

これ知らなかった。 こんな感じで配列を引数にとる場合、「配列」、「nil」、「引数1個」を一括で処理したいと思うことがあると思う。こんな時にこれを解決する方法があった。 これは使っていこう。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳…

Rubyのコレクション書き換え時の注意点

これも嵌りがちな内容。 コレクションのコピーについて。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (5件) を見る 項目16 コレクションを書き換える前に引数として渡すコレクショ…

クラス変数("@@")やめとけってよ

クラス変数("@@")使う人あんまりいないと思うけど、グローバル変数と同じようなもんだから使うなよっていう話。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (5件) を見る 項目15 …

Rubyのprotectedの使いどころ

Rubyのprivate/protectedは特殊で誰しもが混乱する設計の一つです。 そんなprotectedの使い所について書かれています。 Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (5件) を見る …

RubyのComparableモジュールで比較を実装

Effective Ruby作者: Peter J.Jones出版社/メーカー: 翔泳社発売日: 2015/01/19メディア: Kindle版この商品を含むブログ (5件) を見る 項目13 "<=>"とComparableモジュールで比較を実装しよう 例にでてくるのはバージョンの比較を実装する時の話。 例えば、"…

Effective Ruby: selfを書く場所

Effective Ruby作者: Peter J. Jones,arton,長尾高弘出版社/メーカー: 翔泳社発売日: 2015/01/09メディア: 大型本この商品を含むブログ (13件) を見る 「項目8 サブクラスを初期化するときにはsuperを呼び出そう」は、そのまんまで 子クラスでinitializeメソ…

Effective Ruby: Struct便利だよ

項目10 構造化データの表現にはHashではなくStructを使おう CSVファイルの取り込み時などに、それ用のクラスを作るの面倒だなという場合は、Structが良いというお話。 私もこの手のやつはHashだと扱いにくいので、自然とStructを使うようにしていました。 で…

Effective Ruby: superってメソッドとちゃうんやで

項目7 superのふるまいがひと通りでないことに注意しよう Effective Ruby作者: Peter J. Jones,arton,長尾高弘出版社/メーカー: 翔泳社発売日: 2015/01/09メディア: 大型本この商品を含むブログ (13件) を見る super superってメソッドではなくキーワードだ…

Effective Ruby: 特異クラスとかその辺の話

項目6 Rubyが継承階層をどのように組み立てるかを頭に入れよう 「項目5 実行時の警告に注意しよう」-wオプションと$VERBOSE変数の話でした。 知っているべき内容ですが、既に理解している内容だったので1個飛ばし。 内容的には、include時に不可視な特異ク…

Effective Ruby: 定数がミュータブルなことに注意しよう

良書やなEffective Ruby。 項目4 定数がミュータブルなことに注意しよう 定数のfreeze module Defaults NETWORKS = ["192.168.1", "192.168.2"].freeze end def host_addresses(host, networks=Defaults::NETWORKS) networks.map { |net| net << ".#{host}" …

Effective Ruby: Perlっぽい記号やめようぜ

項目3 Rubyの暗号めいたPerl風機能を避けよう お題目は、その通り!!という感じです。 例が面白かったのでご紹介。 while readline print if ~ /^ERROR:/ end ぱっと見、各行頭がERROR: で始まるものを出力しそうだというのは分かりますが、具体的にどうな…