【Amazon Linux 2】「curl: (60) SSL certificate problem: certificate has expired」の対応
問題 🔗
Amazon Linux 2 の EC2 インスタンスから curl ができなくなった
$ curl https://ifconfig.me
curl: (60) SSL certificate problem: certificate has expired
More details here: https://curl.haxx.se/docs/sslcerts.html
curl failed to verify the legitimacy of the server and therefore could not
establish a secure connection to it. To learn more about this situation and
how to fix it, please visit the web page mentioned above.
解決方法 🔗
CA 証明書を更新してあげたら良い
$ sudo yum update ca-certificates
Before 🔗
$ yum list installed | grep ca-certificates
ca-certificates.noarch 2020.2.41-70.0.amzn2.0.1 @amzn2-core
After 🔗
$ yum list installed | grep ca-certificates
ca-certificates.noarch 2021.2.50-72.amzn2.0.7 @amzn2-core
参考 🔗
dev ドメインを Google Domains から Cloudflare Registrar に移管した
Google Domains が終了 ということで、普段からコアに使っている Cloudflare にドメインを移管した
終了が発表された時点では Cloudflare Registrar では dev ドメインが対応していなかったが、つい最近対応したようなので早速 dev ドメインを移管してみた
before 🔗
$ whois takagi.dev | grep Registrar:
Registrar: Google LLC.
after 🔗
$ whois takagi.dev | grep Registrar:
Registrar: CloudFlare, Inc.
移管手順 🔗
ドメインのロックを解除、認証コードの発行、認証、メールで移管の承認をするだけ
詳しくは以下の記事がわかりやすい
.dev を Google Domains から Cloudflare Registrar に移管してみた
元から CloudFlare DNS を使っていたので、移管の手続きをしただけで作業は終わった
Bskyrb でメンションがポストできるようになった
Bskyrb でメンションがポストできるようになった(正確には、なりそう)
今まではメンションができなかった 🔗
リプライできるが、単体のメンションはできなかった
ハンドル名がただの文字列になってしまう
コードは Ruby で Bluesky を触る で紹介したものと同じ
メンションができるようになった 🔗
メンションができるようになったらしい Issue を見つけたので試してみた
ただ、まだリリースされていない(2023年7月30日時点)かつ、使い方も変わったっぽい
以下が対応したコード
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'bskyrb', github: 'ShreyanJain9/bskyrb' # リリースされていないので、リポジトリ指定
end
credentials = ATProto::Credentials.new('username', 'password')
session = ATProto::Session.new(credentials)
client = Bskyrb::Client.new(session)
client.create_post('@ytkg.bsky.social card')
ハンドル名がちゃんとリンク?になっている
Deno Deploy では Cache Web API はまだ動かない
※ これは2023年7月23日現在の話
Deno 1.26 でサポートされた Cache Web API を Deno Deploy で使おうとしたら、そんなもんはないと
ReferenceError: caches is not defined
どうやらまだ Deno Deploy ではサポートされていないみたい
Future support にはなっていたのでそのうち
https://deno.com/deploy/docs/runtime-api#future-support
【iTerm2】ターミナルで画像を表示する
ターミナルで画像を表示させたくて、調べてみると、普段使っている iTerm2 でできることがわかった
手順 🔗
iTerm2 公式でスクリプトが配布されている
Images - Documentation - iTerm2 - macOS Terminal Replacement
スクリプトのダウンロードと実行権限の付与 🔗
$ wget https://iterm2.com/utilities/imgcat
$ chmod +x ./imgcat
画像ファイルを指定して表示 🔗
$ ./imgcat animal_stand_buta.png
画像URLを指定して表示 🔗
$ ./imgcat -u https://3.bp.blogspot.com/-vuwe9ksFA8M/Wat2E7TehXI/AAAAAAABGUk/ERQpcgCv52cLWGCXbXETvwpAVQpMuU8mQCLcBGAs/s400/animal_stand_buta.png
必要に応じて、/usr/local/bin に配置する
参考 🔗
【Bluesky】ハンドルにカスタムドメインを設定した
Bluesky のハンドルにカスタムドメインを設定してみた
公式でドメインの購入から設定まで簡単にできるサービス?仕組み? (https://account.bsky.app ) が提供されているが、今回は昔から持っていたドメインを使って設定した
ハンドルが短くなり、取得だけして放置していたドメインが役に立つ時が来て良かった
手順については既にいくつかの記事が出ているので、ここでは割愛する
【Ruby】bundler/inline で dotenv が動作しない(しなくなった)
問題 🔗
いつも書いている書き方で dotenv が動作しなくなった
EXAMPLE=test
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'dotenv', require: 'dotenv/load'
end
p ENV['EXAMPLE']
$ ruby app.rb
nil
nil が返ってくる
バージョンは以下
$ ruby -v
ruby 3.1.2p20 (2022-04-12 revision 4491bb740a) [x86_64-darwin20]
$ bundler -v
Bundler version 2.4.13
暫定対応 🔗
gemfile のブロック外で require してあげたら動く
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'dotenv'
end
require 'dotenv/load'
p ENV['EXAMPLE']
$ ruby app.rb
"test"
原因 🔗
ちゃんと深くは追ってはいないが、この PR でおかしくなってしまったっぽい?
https://github.com/rubygems/rubygems/pull/6306
参考 🔗
【Bluesky】おみくじボットを作った
自動で返信するボットを作ってみたくて、肩慣らしとしておみくじボットを作ってみた
「@omikuji.bsky.social おみくじ」とポストすると、おみくじの結果のリプライが飛んでくる
Ruby で Bluesky を触る で紹介した bskyrb と skyfall を使って実装して、Raspberry Pi で動かしている
補足 🔗
リポジトリ 🔗
おみくじのロジック 🔗
今のところこんな感じの単純ロジック
%w[大吉 吉 中吉 小吉 末吉 凶].sample
いずれいい感じにチューニングする予定
skyfall は v0.1.2 以上推奨 🔗
最初は v0.1.0 で動かしていたが、ストリーミング中に変なレスポンスが来た時に例外で止まってしまう不具合があった
v0.1.2 では問題なく動いている
Ruby で Bluesky を触る
Ruby で Bluesky を触るやり方
ポスト、リポスト、リプライ、ライク 🔗
bskyrb という Gem を使えば、Bluesky での基本的な操作ができる
# frozen_string_literal: true
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'bskyrb'
end
# 認証
credentials = Bskyrb::Credentials.new('username', 'password')
session = Bskyrb::Session.new(credentials, 'https://bsky.social')
bsky = Bskyrb::RecordManager.new(session)
# ポスト
post = bsky.create_post('Hello world from bskyrb!')
post_uri = post['uri']
# リポスト
bsky.repost(post_uri)
# リプライ
bsky.create_reply(post_uri, 'Replying to post from bskyrb')
# ライク
bsky.like(post_uri)
ストリーミングでポストを取得する 🔗
skyfall という Gem を使えば、ポストをストリーミングで取得できる
# frozen_string_literal: true
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'skyfall'
end
sky = Skyfall::Stream.new('bsky.social', :subscribe_repos)
sky.on_message do |m|
next if m.type != :commit
m.operations.each do |op|
next unless op.action == :create && op.type == :bsky_post
puts '------------------------'
puts op.raw_record['text']
end
end
sky.on_connect { puts 'Connected' }
sky.on_disconnect { puts 'Disconnected' }
sky.on_error { |e| puts "ERROR: #{e}" }
sky.connect
sleep
$ ruby app.rb
Connected
------------------------
Ei @diviviann.bsky.social olha o que recebi (e vai ter) hoje
Porque lloras, Zuckenberg? 🤣
------------------------
😘😘❤️
------------------------
im not a US citizen but i get your point
------------------------
[超新星] +1400
ten : 2400
4 : CHO ---> MOY
------------------------
ХА! Я ВСЕ БАЧУ!!
------------------------
J.Lo spends nights in a hyperbaric chamber, her life force withdrawn intentionally from her senses to create a meditative suspended animation, while celestial beings pat the nectar of immortal bliss on her face. I’m saying she looks good, y’all!!!
------------------------
Fair enough! Thank you for the tip.
bskyrb と組み合わせて使うと好きなボットが作れる
RuboCop のキャッシュ
RuboCop を実行した時に、1回目と2回目で出力が違うことに気がついた
どこかに実行結果を保存しているのかなと思ったら、キャッシュ機能が備わっていた
デフォルトでキャッシュは有効になっている
一時的に無効にしたい場合 🔗
以下のようにオプションをつけて実行
$ rubocop --cache false
キャッシュファイルの保存先 🔗
- $XDG_CACHE_HOME/$UID/rubocop_cache
もしくは
- $HOME/.cache/rubocop_cache
補足 🔗
キャッシュの有効・無効の設定、キャッシュファイルの保存先の設定については他のやり方もあるので、詳しくは公式ドキュメントを参照
【ls コマンド】数字順で表示する
ls コマンドはデフォルトでは辞書順で表示される
$ ls -1 | head
20230608164323_10.txt
20230608164323_101.txt
20230608164323_104.txt
20230608164323_106.txt
20230608164323_107.txt
20230608164323_109.txt
20230608164323_11.txt
20230608164323_110.txt
20230608164323_111.txt
20230608164323_113.txt
数字順で表示したい場合は、-v オプションを使うとできる(version number の v)
$ ls -v1 | head
20230608164323_3.txt
20230608164323_5.txt
20230608164323_6.txt
20230608164323_8.txt
20230608164323_9.txt
20230608164323_10.txt
20230608164323_11.txt
20230608164323_12.txt
20230608164323_13.txt
20230608164323_16.txt
Mac はできなかった
【Commit Genius】v0.5.0 をリリースした
Commit Genius v0.5.0
をリリースした
Commit Genius は ChatGPT にコミットメッセージを考えてもらう CLI ツール
https://github.com/ytkg/commit-genius
変更点 🔗
サブコマンド config の追加 🔗
今まで OpenAI の API キーは環境変数(OPENAI_ACCESS_TOKEN もしくは OPENAI_API_KEY)で設定する方法しかなかったが、コマンドでも設定できるようになった
設定は、~/.config/commit_genius/config.toml というファイルに記録される仕組みになっている
設定の値を追加 🔗
$ cg config set api_key sk-HogehogeXXX
設定の値を確認 🔗
$ cg config get api_key
sk-HogehogeXXX
設定の一覧を確認 🔗
$ cg config list
api_key = sk-HogehogeXXX
Bluesky のアカウントを作った
運良く招待コードをもらうことができたのでアカウントを作った
https://bsky.app/profile/ytkg.bsky.social
ちょうどアカウント数が10万人超えたっぽい( https://bluesky.denike.io )
メモ 🔗
Bluesky について気になったことを調べたメモ
カスタムドメイン 🔗
独自ドメインをハンドル名として使用できるらしい
元のハンドルは他の人が取れるようになるので注意が必要
取られたくない場合は自分で取得しておく
https://scrapbox.io/Bluesky/ カスタムドメインをハンドルとして設定する
招待コード 🔗
招待コードは2週間ごとに1つ発行される
https://scrapbox.io/Bluesky/invite_code の取得方法
CLIからポスト 🔗
既にいくつかの CLI は出ているが、自分は bsky を選んだ
$ go install github.com/mattn/bsky@latest
$ bsky -v
bsky version 0.0.43
$ bsky login ytkg.bsky.social [password]
$ bsky show-profile
Did: did:plc:kibug5qaam5kntgemionxycz
Handle: ytkg.bsky.social
DisplayName: YOSHIKI
Description: Software Engineer
Site: https://takagi.dev
Blog: https://takagi.blog
GitHub: https://github.com/ytkg
Follows: 3
Followers: 1
Avatar:
Banner:
$ bsky post 'bsky からポスト'
at://did:plc:kibug5qaam5kntgemionxycz/app.bsky.feed.post/3jwy4eno5sk2t
Raspberry Pi に Cloudflared をインストールする方法
手順 🔗
$ wget https://github.com/cloudflare/cloudflared/releases/download/2023.5.1/cloudflared-linux-armhf.deb
$ sudo apt install ./cloudflared-linux-armhf.deb
最新バージョンは https://github.com/cloudflare/cloudflared/releases で確認できる
$ cloudflared --version
cloudflared version 2023.5.1 (built 2023-05-23-2246 UTC)
バージョンが確認できればOK
$ rm ./cloudflared-linux-armhf.deb
このファイルはもう不要なので削除する
参考 🔗
【Cloudflare Workers】キャッシュが効いているかを確認する方法
レスポンスヘッダーの cf-cache-status が HIT になっていればキャッシュが効いている
$ curl -si https://example.net/ | grep cf-cache-status
cf-cache-status: HIT
Cloudflare Workers の Cache API はカスタムドメインを使用している時のみ有効になる
参考 🔗
【Mac】「"vagrant"を開くとコンピュータが破損します。」という警告がでるようになった
問題 🔗
Mac で Vagrant を起動(vagrant up)しようとすると、「“vagrant"を開くとコンピュータが破損します。」という警告がでるようになった
ちなみに「OK」押しても問題ない(何も起きない)
解決方法 🔗
結論としては、最新バージョンの Vagrant をインストールしたら良い
$ brew install hashicorp/tap/hashicorp-vagrant
その他のインストール方法は https://developer.hashicorp.com/vagrant/downloads
原因 🔗
2023年1月23日に RPM パッケージの署名キーをローテーションしていて、古い署名キーが4月24日に失効したため証明書が無効になったらしい
それで古い証明書で署名されたソフトウェアを起動しようとすると、Mac はそれをマルウェアとして認識して警告が出るようになった
https://support.hashicorp.com/hc/en-us/articles/13177506317203
1月23日以前にダウンロードした Vagrant が対象となっている
参考 🔗
“vagrant” will damage your computer. | Macos monterey · Issue #13132 · hashicorp/vagrant
【Ruby】XOR 交換アルゴリズムで2つの変数の値を入れ替える
XOR 交換アルゴリズムとは、XOR演算子(^)を使って、2つの変数の値を入れ替えるアルゴリズムのことで、一時変数を使わず変数の値を交換することができる
a = 1
b = 3
puts "Before swapping: a = #{a}, b = #{b}"
a = a ^ b
b = a ^ b
a = a ^ b
puts "After swapping: a = #{a}, b = #{b}"
$ ruby app.rb
Before swapping: a = 1, b = 3
After swapping: a = 3, b = 1
配列の場合はこれが使えない 🔗
配列には XOR 演算子がないのでエラーが発生する
$ ruby app.rb
Before swapping: a = [1, 2, 3], b = [4, 5, 6]
app.rb:6:in `<main>': undefined method `^' for [1, 2, 3]:Array (NoMethodError)
a = a ^ b
^
算術演算子(+ と -)を使えばできなくもない(注意あり)
ChatGPT にコミットメッセージを考えてもらう CLI ツールを作った
最近はコミットメッセージを ChatGPT に考えてもらっている
指示の入力と差分のコピペが面倒になったので、CLI ツールを作った
ツール名も ChatGPT に考えてもらった
インストール方法と使い方 🔗
インストール 🔗
Deno で作った
$ deno install --allow-env --allow-run --allow-net --allow-read https://deno.land/x/commit_genius/cg.ts
✅ Successfully installed cg
$ cg --version
cg v0.4.0
使い方 🔗
環境変数に OpenAPI の API キーをセット
$ export OPENAI_ACCESS_TOKEN=sk-HogehogeXXX
git add
して、コマンド叩けばコミットメッセージの候補が出てくる
$ git add .
$ cg
Possible commit message suggestions:
- Update installation guide (インストールガイドを更新)
- Add --allow-write flag to installation command (インストールコマンドに --allow-write フラグを追加)
- Update README.md with usage examples (README.mdを使用例付きで更新)
日本語も欲しかったので表示するようにしている(後々オプションで表示・非表示に選べるようにする予定)
【Gatsby】v4 から v5 にアップグレードした
このブログは Gatsby で作って、Cloudflare Pages でホスティングしている
先日、Cloudflare Pages で Node.js 18 がサポートされた ので、Gatsby v5 にアップグレードした
自分の環境では公式が用意しているマイグレーションガイド 通りにやって問題なく動作した
唯一の変更点(自分の環境での話) 🔗
気づいていないだけで他にもあるかもしれないけど、gatsby-plugin-sitemap の仕様変更があった
デフォルトのアウトプットパスが /sitemap
から /
に変更された
デフォルト値を使っていたので、サイトマップ URL が変わった
https://takagi.blog/sitemap/sitemap-index.xml から https://takagi.blog/sitemap-index.xml になった
サーチコンソールに登録しているサイトマップ URL を登録し直して作業は終了
Ruby で ChatGPT API を触る(Stream 編)
前回、Ruby で ruby-openai gem を使って、ChatGPT API を触ってみた
今回は ChatGPT の Web 版のように返答を少しずつ表示するやつをやってみる
ruby-openai はまだ Stream には対応していないので、Faraday を使って実装した
完成物 🔗
コード 🔗
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'faraday'
end
url = 'https://api.openai.com'
openai_api_key = 'APIキー'
headers = { Authorization: "Bearer #{openai_api_key}" }
faraday = Faraday.new(url: url, headers: headers) do |conn|
conn.request :json
end
params = {
model: 'gpt-3.5-turbo',
messages: [
{ role: 'user', content: 'こんにちは!' }
],
stream: true
}
faraday.post('/v1/chat/completions') do |req|
req.body = params.to_json
req.options.on_data = Proc.new do |chunk|
chunk.split('data: ')[1..].each do |data|
text = JSON.parse(data)
choice = text['choices'][0]
return if choice['finish_reason'] == 'stop'
print choice['delta']['content']
end
end
end
実行結果 🔗
Cloudflare Pages で Node.js 18 がサポートされた
ついに Cloudflare Pages で Node.js 18 が動くようになった
In case you missed it, @CloudflareDev Pages now supports Node.js 18 (and above!)
— Walshy (@WalshyDev) April 12, 2023
Just add a `NODE_VERSION` environment variable with the value of `18` (or `19` if you want the latest latest) and you're good to go!
公式ドキュメント の Node.js Supported versions も Any Version という書き方になっている(これは全部のバージョンに対応しているという意味でいいのかな?)
これでこのブログも Gatsby v5 に上げることができる(Gatsby v5 は Cloudflare Pages ではまだ動かない )
Node.js 18 に変更する 🔗
さっそく、このブログも Node.js 18 に上げてみる
【Docker】Rails Console で日本語を入力すると落ちる
問題 🔗
Docker コンテナ内で、Rails Consoleを起動して、日本語を入力しようとしたら落ちた
[1] pry(main)> '���'
/usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:106:in `write': "\xE3" from ASCII-8BIT to UTF-8 (Encoding::UndefinedConversionError)
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:106:in `puts'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:106:in `save_to_file'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:50:in `call'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/history.rb:50:in `push'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:267:in `handle_line'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:243:in `block (2 levels) in eval'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `catch'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:242:in `block in eval'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `catch'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_instance.rb:241:in `eval'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:77:in `block in repl'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `loop'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:67:in `repl'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `block in start'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `call'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:61:in `__with_ownership'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/input_lock.rb:79:in `with_ownership'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:38:in `start'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/repl.rb:15:in `start'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-0.10.1/lib/pry/pry_class.rb:169:in `start'
from /usr/local/lib/ruby/gems/2.0.0/gems/pry-nav-0.2.4/lib/pry-nav/pry_ext.rb:17:in `start_with_pry_nav'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.2/lib/rails/commands/console.rb:90:in `start'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.2/lib/rails/commands/console.rb:9:in `start'
from /usr/local/lib/ruby/gems/2.0.0/gems/railties-4.0.2/lib/rails/commands.rb:62:in `<top (required)>'
from bin/rails:4:in `require'
from bin/rails:4:in `<main>'
解決方法 🔗
環境変数でマルチバイト文字列を使うようにしたら良い
Ruby で ChatGPT API を触る
Ruby で ruby-openai gem を使って、ChatGPT API を触ってみた
Hello World! 的なやつ 🔗
「こんにちは」とメッセージを送って、そのレスポンスを表示する
require 'bundler/inline'
gemfile do
source 'https://rubygems.org'
gem 'ruby-openai'
end
client = OpenAI::Client.new(access_token: 'access_token')
response = client.chat(
parameters: {
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: 'こんにちは' }]
}
)
puts response.dig('choices', 0, 'message', 'content')
$ ruby app.rb
こんにちは!私はAIアシスタントです。どのようなご要望がありますか?
しりとり 🔗
ループでしりとりをやってみた
loop do
print 'User: '
content = gets.chomp
response = client.chat(
parameters: {
model: 'gpt-3.5-turbo',
messages: [{ role: 'user', content: content }]
}
)
puts "Assistant: #{response.dig('choices', 0, 'message', 'content')}"
end
$ ruby app.rb
User: しりとりをしよう
Assistant: りんご
User: ごりら
Assistant: ごりらとは、哺乳動物の一種で、日本語では「サイチョウザメ」「ラッコウオ」とも呼ばれます。体重は約2~3トンにもなり、大型哺乳動物の一つです。鼻先に角質の「つの」があり、強力な力で木を倒したり、車両をも動かすことができます。草食性で、主に木の葉などを食べす。また、ごりらは現在絶滅の危機に瀕しており、保護が必要な動物の一つです。
User:
失敗 🔗
「りんご」の次に「ごりら」と送ると、ゴリラの説明が返ってきた
CentOS 7.9 に Ruby 3.1.3 をインストールする
問題 🔗
CentOS 7.9 に Ruby 3.1.3 をインストールしようとしたら、gcc のバージョンが古いみたいでインストールできなかった
$ cat /etc/redhat-release
CentOS Linux release 7.9.2009 (Core)
$ gcc --version
gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-44)
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
$ rbenv install 3.1.3
To follow progress, use 'tail -f /tmp/ruby-build.20230403202324.15642.log' or pass --verbose
Downloading ruby-3.1.3.tar.gz...
-> https://cache.ruby-lang.org/pub/ruby/3.1/ruby-3.1.3.tar.gz
Installing ruby-3.1.3...
BUILD FAILED (CentOS 7.9.2009 using ruby-build 20230330-2-gf2c3a7f)
Inspect or clean up the working tree at /tmp/ruby-build.20230403202324.15642.bk87LP
Results logged to /tmp/ruby-build.20230403202324.15642.log
Last 10 log lines:
compiling dmyext.c
translating probes probes.d
miniinit.c: トップレベル:
cc1: 警告: 認識できないコマンドラインオプション "-Wno-tautological-compare" です [デフォルトで有効]
cc1: 警告: 認識できないコマンドラインオプション "-Wno-self-assign" です [デフォルトで有効]
cc1: 警告: 認識できないコマンドラインオプション "-Wno-parentheses-equality" です [デフォルトで有効]
cc1: 警告: 認識できないコマンドラインオプション "-Wno-constant-logical-operand" です [デフォルトで有効]
cc1: 警告: 認識できないコマンドラインオプション "-Wno-cast-function-type" です [デフォルトで有効]
make: *** [miniinit.o] エラー 1
make: *** 未完了のジョブを待っています....
解決方法 🔗
gcc のバージョンを上げる
switchbot gem v0.8.0 をリリースした
SwitchBot API 用の Gem、switchbot v0.8.0 をリリースした
https://rubygems.org/gems/switchbot
変更点 🔗
今回のアップデートは内部的なリファクタリングが中心で、機能としては Plug Mini に対応した
いつもと違うのは、Plug Mini
の対応はプルリクエストで頂いた点
とてもありがたい!
Add Plug Mini by kataring · Pull Request #21 · ytkg/switchbot
使い方 🔗
require 'switchbot'
client = Switchbot::Client.new('YOUR_TOKEN', 'YOUR_SECRET')
plug_mini = client.plug_mini('C271111EC0AB')
# ステータスの確認
plug_mini.status
# スイッチON
plug_mini.on
# スイッチOFF
plug_mini.off
# スイッチONかどうか確認
plug_mini.on?
# スイッチOFFかどうか確認
plug_mini.off?
# スイッチON/OFFのトグル
plug_mini.toggle