プログラミング -> 言語 -> Ruby
前提 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 …
MinIO の場合とほとんど同じです。 obel.hatenablog.jp 事前準備 「R2 API トークンの管理」から、トークン(アクセスキーとシークレットアクセスキー)を予め作成しておきます 「エンドポイント」は https://アカウントID.r2.cloudflarestorage.com/ になる…
少しだけ注意する点がありますが、それ以外はいつもどおりです。 結論 必要な gem aws-sdk nokogiri nokogiri でなくとも ox や oga や libxml や rexml でもいいです nokogiri を選んだ理由は、Rails の場合は明示的に入れなくてよく、馴染み深いから、とい…
結論 gem として google-analytics-admin-v1alpha を用います。各種データを取得するための Data API とは異なるので注意です。 公式ドキュメント cloud.google.com 具体的なコード例 具体的なコード例は次のとおりです。Data API のとき とほぼ同じです。 (…
前提 2023年3月17日(金)現在の話です。 結論 どの gem を使うか? google/analytics/data/v1beta です。 API の認証はどうするか? GCP のサービスアカウントを作成し、認証用の JSON ファイルである credentials.json を準備しておいてください*1。下記の…
結論 以下のようにしたら自分の環境ではインストールに成功しました。 1. グローバルに利用する Ruby を v2.7.3 に設定する v2.7.3 を持っていない場合は $ rbenv install 2.7.3 で入れ、グローバルなバージョンとして v2.7.3 を指定します。 $ rbenv global…
結論 キーワード引数として aliases: true を付与する。 例 yaml = YAML.load_file('config.yml', aliases: true) 補足 Psych というワードと併せて検索すると背景が分かります 現時点では、素の Ruby じゃないと遭遇しない現象かもしれません
前提 以下のようなメソッド実行例です。 便宜上、以降では以下のコメントに基づいて 1つめ、2つ目... という形で引数を呼ぶことにします service.update_spreadsheet_value( sheet_id, # 1つめ range, # 2つめ value_range_object, # 3つめ value_input_opti…
※ 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…
結論 たとえば、{ foo: 'bar', hoge: 'fuga' } というハッシュがあったとします。このハッシュの foo および hoge のそれぞれを大文字に変更したい場合には次のようにします。 { foo: 'bar', hoge: 'fuga' }.transform_keys { |key| key.upcase } 上記の戻り…
結論 作成するファイルは以下の 2つ です。 .github/workflows/danger_js.yml ファイル名は何でも良いです 単独のファイルとして切り出さず、既存の yml に内容を追加しても大丈夫です dangerfile.js ファイルの内容 2つのファイルの内容は次のとおりです。 …
実例 クォートで囲まないと NG。 $ bundle exec rails foo_task:barbar['hoge','fuga'] zsh: no matches found: foo_task:barbar['hoge','fuga'] クォートで囲むと OK。 $ bundle exec rails "foo_task:barbar['hoge','fuga']" (正常処理)
結論 たとえば、API で取得できる media_url_https が https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq.jpg であったとします。この URL に wget をしても原寸大画像は得られません*1。 常に原寸大画像を取得するためには https://pbs.twimg.com/media/FAlJ_Js…
大前提 正規表現は最後の手段にするべきです。 結論 RFC3986 に従います(後述)。 たとえば対象とする URL が https://pbs.twimg.com/media/FAlJ_JsUUAAgOSq?format=jpg&name=orig であったとします。そのとき、以下のように抽出できます。 url = 'https://…
結論 URI#decode_www_form_component を使いましょう。 具体例 以下、エスケープシーケンスをくくるためにダブルクォートを用いることに注意です。 [1] pry(main)> URI.decode_www_form_component("\xE3\x81\x82\xE3\x81\x84\xE3\x81\x86") => "あいう" 検索…
Lita とは www.lita.io 結論 まず以下のようなハンドラーを作ります。 module Lita module Handlers class Healthcheck < Handler http.get '/healthcheck' do |_request, response| response.body << 'OK' end Lita.register_handler(self) end end end そ…
Lita とは www.lita.io 結論 2021/07/25 時点では、以下のソースにあるように Ruby 3 で escape メソッドが削除されたため、Webサーバ の応答をしようとすると落ちます。 github.com 以下のようにコメントが書いてあります。 # The http_router gem still us…
Lita とは Ruby製の ChatBot フレームワークです。 www.lita.io 設定ファイル内での Redis のアドレスの指定方法 lita_config.rb というファイルに設定を書き込んでいきます。その際、Redis のアドレスを指定するには以下のように書きます。 (前略) config…
Lita とは Ruby製の bot のフレームワークです。 docs.lita.io 結論 ローカル(シェル)で動作確認する際には @Lita を先頭に付けないとポストが受け付けられません(レスポンスが返ってきません)。 以下のように、@Lita を先頭につけて bot に話しかける必…
gyazo.com 現象 以下のようなエラーメッセージが出る場合です。 An error occurred while installing mimemagic (0.3.9), and Bundler cannot continue. Make sure that `gem install mimemagic -v '0.3.9' --source 'https://rubygems.org/'` succeeds befo…
結論 以下のとおりです。 Kitakyushu: 1110809 Saitama: 1116753 Chiba: 1117034 Fukuoka: 1117099 Hamamatsu: 1117155 Hiroshima: 1117227 Kawasaki: 1117502 Kobe: 1117545 Kumamoto: 1117605 Nagoya: 1117817 Niigata: 1117881 Sagamihara: 1118072 Sappo…
結論 設定の Test Framework の項目で明示的にテストに用いるフレームワーク*1 を指定するといける場合があります。 gyazo.com *1:RSpec とか Minitest とか
結論 --example オプションを使い、その値として「テストの名前」を入れます。 例 以下のような Spec があったとします。 feature 'おはよう' do scenario 'こんにちは' do # ここにテストが入る end end このとき、このテストを実行するためには次のコマン…
gyazo.com 結論 標題の通りなので、たとえばデータベースにユーザデータを格納しようとする際に name に NOT NULL 制約をかけていたりバリデーションをかけていたりすると、エラーになります。 対処法の一つとしては Twitter::NullObject のときは例外として…
結論 初回は @client.direct_messages_events(count: 1) で取得し、その戻り値から next_cursor を得て、それを用いて次回は @client.direct_messages_events(count: 1, cursor: next_cursor) で取得します。 next_cursor に nil が返ってきたら取得完了です…
結論 リトライをする(こちらのせいではない)*1。 具体的方法 以下にリトライをするための方法が書いてあります。 github.com client.request_options.retries = 3 *1:ただし、アルゴリズムが悪いことなどが原因のことはある
結論 標題の通りで、知っている人には当たり前なのですが、以下のような戻り値になります。 [].all? { |foo| foo == 1 } #=> true どうするか all? を使わないようにすればこのハマりやすい返り値から逃れられます。もし all? を使う場合には、レシーバが []…
結論 配列を & で結びつける場合には、「論理積(積集合)」を配列で返す。 論理積の例 x = [1, 2, 3, 4, 5] y = [3, 6, 1, 9, 7] x & y #=> [1, 3] 補足 同様に、配列を |(縦線、パイプ、バーティカルバー)一つで結びつける場合には、「論理和(和集合)…
結論 以下のとおりです。 [1] pry(main)> foo_bar = 'hoge' => "hoge" [2] pry(main)> foo-bar = 'hoge' NameError: undefined local variable or method `foo' for main:Object from (pry):2:in `__pry__'
結論 unicode_normalize(:nfkc) メソッドを用います。 例 'アイウエオ'.unicode_normalize(:nfkc) #=> "アイウエオ" '123456'.unicode_normalize(:nfkc) #=> "123456"