プログラミング -> 言語 -> Ruby

Ridgepole は SQLite には対応していない

結論 標題どおり。 根拠 README より。 ridgepole v3.0.0 Support Rails 8.0 (cf. https://github.com/ridgepole/ridgepole/pull/504) ... SQLite does not support. 余談 SQLite ではまっさらな状態からの作成は成功するが、以降エラーの連発で小一時間ハマ…

qsv など、Rust で CSV を扱う場合は ,, も ,"", も NULL になる

結論 example.csv が以下のようにあるとする。 name,age,height taro,,170 hanako,20,"" kenji,21,172 このとき、qsv で is null の条件で絞り込む。以下のように ,, の値であっても ,"", の値であっても is null の条件にヒットしている。 $ qsv sqlp examp…

Visual Studio Code にて Ruby LSP のコードジャンプが働かないときに試すこと

結論 .ruby-lsp/ を削除する Visual Studio Code を再起動する

Visual Studio Code で Sorbet を用いる際には Watchman を入れておく

結論 For the best experience, Sorbet requires Watchman, which listens for changes to the files on disk in addition to edits that happen to files open in the editor. For example, without Watchman installed, Sorbet will not detect when files…

Ubuntu 24.04 LTS (WSL2) にて Ruby 3.3.6 を rbenv でインストールしようとしたら optparse のせいでビルドに失敗したときの対処方法

結論 以下の記事と同じです。 obel.hatenablog.jp

Ruby で Sorbet を最小限で使う例

注意点 Rails ではなく、素の Ruby です Bundler を用います*1 詳細や最新情報は必ず 公式ドキュメント を参照してください 結論 1. Gemfile を書く gem 'sorbet' gem 'sorbet-runtime' gem 'tapioca', require: false 2. $ bundle install する $ bundle in…

Ubuntu 24.04 LTS (WSL2) にて Ruby 3.3.5 を rbenv でインストールしようとしたら optparse のせいでビルドに失敗したときの対処方法

結論 以下の記事と同じです。 obel.hatenablog.jp

Ruby 3.3.4 にて Apple Silicon の Mac で posix-spawn のインストールに失敗するときの対処法

結論 以下のように Bundler の config に設定してから $ bundle install し直す。 $ bundle config build.posix-spawn --with-cflags="-Wno-incompatible-function-pointer-types" 参考 github.com エラーメッセージ

CentOS 7 にて rbenv で Ruby 3.3.4 のインストール(ビルド)に失敗するときの対応策

OS の状況 $ cat /etc/os-release NAME="CentOS Linux" VERSION="7 (Core)" ID="centos" ID_LIKE="rhel fedora" VERSION_ID="7" PRETTY_NAME="CentOS Linux 7 (Core)" ANSI_COLOR="0;31" CPE_NAME="cpe:/o:centos:centos:7" HOME_URL="https://www.centos.or…

Ubuntu 24.04 LTS (WSL2) にて Ruby 3.3.4 を rbenv でインストールしようとしたら optparse のせいでビルドに失敗したときの対処方法

結論 以下と全く同じ対処方法で OK でした。 obel.hatenablog.jp

Ubuntu 24.04 LTS (WSL2) にて Ruby 3.3.3 を rbenv でインストールしようとしたら optparse のせいでビルドに失敗したときの対処方法

結論 以下の記事と同じですので、こちらを見るとすぐに解決します。 obel.hatenablog.jp 環境 Ubuntu 24.04 LTS WSL2 $ rbenv install 3.3.3 実行時のエラーログ compiling ripper_init.c installing default socket libraries checking ../.././parse.y and…

Ubuntu 24.04 LTS (WSL2) にて Ruby 3.3.2 を rbenv でインストールしようとしたら optparse のせいでビルドに失敗したときの対処方法

結論 以下の記事と同じですので、こちらを見るとすぐに解決します。 obel.hatenablog.jp 環境 Ubuntu 24.04 LTS WSL2 $ rbenv install 3.3.2 実行時のエラー画面とエラーログ gyazo.com make[2]: ディレクトリ '/tmp/ruby-build.20240530193506.59038.FKjUAA…

Ubuntu にて rbenv で 3.3.1 のインストールでエラーがでたので --with-baseruby で対処した

状況 現状の Ruby が 3.3.0 の状況において $ rbenv install 3.3.1 を実行するとエラーが出て、以下のようなログが出ました。 1727 make[2]: ディレクトリ '/tmp/ruby-build.20240424104050.96605.DfIbDe/ruby-3.3.1/ext/ripper' から出ます 1728 make[2]: …

Ruby で "sh" を実行しようとしたら Not Found と言われたとき

結論 require 'rake' をする。 公式ドキュメント docs.ruby-lang.org

Ruby で Time.parse しようとすると undefined method `parse' for Time:Class のエラーが出るとき

結論 require 'time' する。

Ruby で Google::Apis::DriveV3 を用いて Google Drive のファイルを操作する方法

前提条件 サービスアカウントを用いて認証を行うとします 使う gem google-api-client google-apis-sheets_v4 でもいいですが、名前が適切な方が誰からも分かりやすいので google-api-client がよいと思います 注意事項 当該ドライブ(フォルダ等)に、サー…

Ruby で インスタンス変数 に File.open を格納して複数のメソッドで each_line したらハマった

結論 こんな感じに書くと、Hoge#bar では期待通りの挙動*1にならないです。 class Hoge def initialize @file = File.open('/path/to/piyo.txt') end def foo @file.each_line do |line| puts line end end def bar @file.each_line do |line| puts line end…

macOS で Bundler で pg gem をインストールしようとする際に Can't find the 'libpq-fe.h' header というエラーが出る場合の対処方法の一つ

前提 Intel Mac pg のバージョンは 1.4.6 Ruby のバージョンは 3.2.2 PostgreSQL のバージョンは 15 結論 bundler の config にて、build.pg に対して --with-opt-dir="/usr/local/opt/libpq" を設定する。 具体的な設定方法 設定方法は 2つ あります。 1. b…

Nokogiri や REXML で "entity expansion has grown too large" エラーが出るときの対処方法

結論 XML がでかすぎるのが原因なので、上限を引き上げましょう REXML::Document.entity_expansion_text_limit の値を増やします。単位はバイトで、デフォルト値は 10240 (10KB) です REXML 配下なので require 'rexml/document' が必要になることがあります…

巨大な XML(XMLファイル)を Nokogiri で取り扱うときは Nokogiri::XML::Reader を用いる

結論 たとえば、数GBある XML ファイル sample.xml があったとします*1。 これを以下のように読み込むとエラーになります*2。 xml = Nokogiri::XML.parse(File.open('sample.xml')) なので、そのような場合には Nokogiri::XML::Reader を以下のように用いま…

M2 Mac で rbenv install 3.2.1 にて configure: error: something wrong with LDFLAGS エラーが出たときの対処方法の一つ

前提 macOS 13.2.1(22D68) uname $ uname -a Darwin FOOBAR.local 22.3.0 Darwin Kernel Version 22.3.0: Mon Jan 30 20:38:43 PST 2023; root:xnu-8792.81.3~2/RELEASE_ARM64_T8112 arm64 Xcode $ pkgutil --pkg-info=com.apple.pkg.CLTools_Executables …

Cloudflare R2 の 署名付きURL の取得を Ruby の AWS の gem を用いて実現する

MinIO の場合とほとんど同じです。 obel.hatenablog.jp 事前準備 「R2 API トークンの管理」から、トークン(アクセスキーとシークレットアクセスキー)を予め作成しておきます 「エンドポイント」は https://アカウントID.r2.cloudflarestorage.com/ になる…

MinIO の 署名付きURL の取得を Ruby の AWS の gem を用いて実現する

少しだけ注意する点がありますが、それ以外はいつもどおりです。 結論 必要な gem aws-sdk nokogiri nokogiri でなくとも ox や oga や libxml や rexml でもいいです nokogiri を選んだ理由は、Rails の場合は明示的に入れなくてよく、馴染み深いから、とい…

Ruby で Google Analytics 4 (GA4) の「アカウント」や「プロパティ」を API で取得する方法

結論 gem として google-analytics-admin-v1alpha を用います。各種データを取得するための Data API とは異なるので注意です。 公式ドキュメント cloud.google.com 具体的なコード例 具体的なコード例は次のとおりです。Data API のとき とほぼ同じです。 (…

Ruby で Google Analytics 4 (GA4) のデータを API で取得する方法

前提 2023年3月17日(金)現在の話です。 API の公式ドキュメント developers.google.com 結論 どの gem を使うか? google/analytics/data/v1beta です。 API の認証はどうするか? GCP のサービスアカウントを作成し、認証用の JSON ファイルである creden…

Ubuntu 22.04 (WSL2) で rbenv で Ruby v3.2.1 をインストールしようとすると require': cannot load such file -- optparse (LoadError) が出る場合

結論 以下のようにしたら自分の環境ではインストールに成功しました。 1. グローバルに利用する Ruby を v2.7.3 に設定する v2.7.3 を持っていない場合は $ rbenv install 2.7.3 で入れ、グローバルなバージョンとして v2.7.3 を指定します。 $ rbenv global…

(最近の)Ruby で YAML.load_file によってエイリアスが読み込めないときの対応

結論 キーワード引数として aliases: true を付与する。 例 yaml = YAML.load_file('config.yml', aliases: true) 補足 Psych というワードと併せて検索すると背景が分かります 現時点では、素の Ruby じゃないと遭遇しない現象かもしれません

Google Sheets API (Ruby) で update_spreadsheet_value メソッドの引数の意味

前提 以下のようなメソッド実行例です。 便宜上、以降では以下のコメントに基づいて 1つめ、2つ目... という形で引数を呼ぶことにします service.update_spreadsheet_value( sheet_id, # 1つめ range, # 2つめ value_range_object, # 3つめ value_input_opti…

Twitter で凍結されたアカウント情報を取得しようとした場合のレスポンス

※ 2022年4月10日(日)現在の情報です 結論 Ruby (https://github.com/sferik/twitter) の場合 /path/to/vendor/bundle/ruby/3.1.0/gems/twitter-7.0.0/lib/twitter/rest/request.rb:97:in `fail_or_return_response_body': User has been suspended. (Twitt…

Ruby にてハッシュの「キーだけ」を加工したい場合には transform_keys メソッドを用いる

結論 たとえば、{ foo: 'bar', hoge: 'fuga' } というハッシュがあったとします。このハッシュの foo および hoge のそれぞれを大文字に変更したい場合には次のようにします。 { foo: 'bar', hoge: 'fuga' }.transform_keys { |key| key.upcase } 上記の戻り…

Powered by はてなブログ