Ruby

RubyKaigi2022で "String meets Encoding" というタイトルで話しました

RubyKaigi2022 Day3で "String meets Encoding" というタイトルで話しました。 無事話すことができて良かったです。 スライド 後日YouTubeに動画がアップロードされると思うので、アップロードされたらそちらも貼ります。 きっかけ 本編中に話したとおり、Ru…

String#force_encodingは文字コードの強制変換ではない

Ruby の String#force_encoding は String の encoding を変更するだけで、文字コードの変換を行うわけではありません。そのため、バイト列は変換されません。 force_encoding はどんなメソッドか String の encoding を変更します。ただし、バイト列は変更…

Rubyだけで文字コード変換を実装する

Ruby Advent Calendar 2021 - Qiita の5日目の記事です。 こんにちは。ima1zumiです。 私はRubyKaigi Takeout 2021 で Dive into Encoding というタイトルでオレオレ文字コードを作って文字コードを学ぶ話をしました。 その中で、C拡張のgemとして自作文字コ…

RubyKaigi Takeout 2021 に登壇します

RubyKaigi Takeout 2021 に『Dive into Encoding』というタイトルで登壇します。 私の登壇は3日目である 2021-09-11 (土) の 11:00 - 11:25 です。 rubykaigi.org 自作文字コードを作ってローカルのRubyにビルドして遊んだ話をします。文字コードの基礎からR…

Gemのバージョンを比較する

文字列で比較するとうまく比較できない。 '1.0.9' < '1.0.10' # => false Gem::Version を使うと文字列のまま比較できる。 また、 pre や beta などの文字が入っていても正しく比較できる。 require 'rubygems' Gem::Version.new('1.0.9') < Gem::Version.ne…

ファイルパスを指定して irb と reline を起動したい

はじめに 私は irb をよく使うので、せっかくなら常に最新版を使ってバグを見つけたいなと思いました。 irb と reline は git clone しておおむね master に追従しているので、ファイルパスを指定して irb を起動することにしました。 ruby -I <path> Ruby 起動時</path>…

gem installしたgemのパスを知りたい

gemのインストール場所は、$ gem environment の出力結果の INSTALLATION DIRECTORY で分かる。 ❯ gem environment RubyGems Environment: - RUBYGEMS VERSION: 3.2.3 - RUBY VERSION: 3.0.0 (2020-12-25 patchlevel 0) [x86_64-darwin19] - INSTALLATION DI…

URI#escape と URI#unescape は Ruby 3.0.0 から削除された

タイトルの通り、 URI.escape と URI.unescape は Ruby 3.0.0 から削除されました。長い間非推奨となっていましたが、ついに 3.0.0 で削除されました。 代わりに ERB::Util.#url_encode , CGI.escape , URI.encode_www_form , WEBrick::HTTPUtils.#escape_fo…

reline のテストを実行

はじめに この記事は2020年ふりかえりアドベントカレンダー 11日目です。これを書いているのは12月14日ですが、あまり気にしないことにしました。昨日の記事は サロゲートペアとRubyのStringについての覚書 - いまブログ です。 先日 Ruby の標準添付ライブ…

サロゲートペアとRubyのStringについての覚書

はじめに この記事は2020年ふりかえりアドベントカレンダー 10日目です。これを書いているのは12月14日ですが、あまり気にしないことにしました。昨日の記事は .irbrc で irb で使える独自メソッドを定義する - いまブログ です。 TL;DL サロゲートペアは16…

.irbrc で irb で使える独自メソッドを定義する

はじめに この記事は2020年ふりかえりアドベントカレンダー 9日目です。これを書いているのは12月12日ですが、あまり気にしないことにします。昨日の記事は Hamada.rb #16 に参加 - いまブログ です。 今日は以下のツイートで教えていただいた内容についてま…

Hamada.rb #16 に参加

この記事は2020年ふりかえりアドベントカレンダー 8日目です。昨日の記事は yarn install 時の gyp: No Xcode or CLT version detected! を解消する - いまブログ です。 島根県浜田市の Ruby コミュニティ、 Hamada.rb に参加しました。現在はオンラインで…

Rubyにはオブジェクトを汚染する仕組みがあった

はじめに Ruby 3.0 Advent Calendar 2020 5日目の記事です。 昨日は、【Ruby 3.0 Advent Calendar 2020】Ruby3.0で非推奨から廃止になるメソッドたち【4日目】 - ゲームリンクスの徒然なる日常 です。 また、この記事は2020年ふりかえりアドベントカレンダー…

Rubyリファレンスマニュアルを修正する方法

この記事は2020年ふりかえりアドベントカレンダー 2日目です。昨日の記事は 2020年の終わりと2021年に向けての準備をするぞという気持ち - いまブログ です。 Ruby リファレンスマニュアルとは Ruby の日本語版の公式ドキュメントです。略して「るりま」と呼…

Machida.rb #04 に参加

Machida.rb #04 Machida.rb #04 - Machida.rb | Doorkeeper 今回のテーマはRubyのコードを持ち寄ってワイワイコードレビューする会! ということで私も自作プログラムをレビューしていただいた。 レビューしてもらったコード Slackのメッセージをコピペする…

macOSでRubyをビルドするときの注意点

2020/09/08: gdbmのスペルが間違っていたため修正 2022/09/20: libyamlを追加 Ruby Hacking Challenge in Hamada.rb - connpassに参加しDocker(Ubuntu)でRuby 2.8をビルドしました。 ローカルのmacOS Catalinaでもビルドできたので注意点を書き残しておきま…

VSCodeで使っている拡張機能とsettings.json

まえがき macをクリーンインストールするためにVSCodeの拡張機能を整理したのでまとめました。 使う言語 メイン: Ruby, Ruby on Rails, Python たまに使う: JavaScript, HTML, CSS 拡張機能 アルファベット順に書いていきます。 Beautify JS書いてる時に便…

gemのソースコードをVSCodeで開く

gemのソースコードを見たいときにbundle openを使うと便利です。 このコマンドを使うと、bundleしているバージョンのgemのソースコードをコマンド一発で開けます。気持ちがいいです。 Bundler: The best way to manage a Ruby application's gems というわけ…

【Ruby】URLに使えるランダムな文字列を生成する

SecureRandom.urlsafe_base64が利用できます。 require "securerandom" p SecureRandom.urlsafe_base64 # => j5NMdF_d2_4KUWkjIesVfw 文字数を変えたい場合は、SecureRandom.urlsafe_base64(n)のように書きます。生成される文字列の長さはn の約 4/3 倍にな…