Software

Latest comments

rails 7.0.4 で pg 1.5 を使うと警告が出る問題

wakairo @wakairo
Last edited

結論

railsのバージョンを7.0.5以上に上げてから、pg 1.5 にバージョンを上げれば、警告の問題は発生しません。

問題が発生したバージョン

  • ruby 3.2.2 (2023-03-30 revision e51014f9c0) [x86_64-linux]
  • rails (7.0.4.3)

問題を引き起こした作業内容

bundle updateでpgのバージョンを1.4系から1.5系に上げた。

発生した問題

rails testで以下のような警告が複数出るようになった。

PG::Coder.new(hash) is deprecated. Please use keyword arguments instead! Called from /usr/local/bundle/gems/activerecord-7.0.4.3/lib/active_record/connection_adapters/postgresql_adapter.rb:980:in `new'

rails 7.0.5のリリース後に行った対処

Gemfileにて、pgは1.5以降、railsは7.0.5以降を使うように指定してから、bundle updateコマンドを実行した。
その後でrails testを実行し、前述の警告が出ないことを確認した。

rails 7.0.5のリリース前に行った対処

Gemfileに以下のように記述して、利用するpgを1.4系に留めるように指定した。

gem "pg", "~> 1.4.6"

rails本家の対応状況

0
Raw
https://www.techtips.page/en/comments/164

bundleコマンドの公式マニュアル

wakairo @wakairo
Last edited

bundleコマンドの公式マニュアルは、公式サイトから、 Docs > Reference Guidesで辿ることができる。

例えば、bundle updateのマニュアルはこちら。こちらでは、利用できるオプションについてもきちんと説明されています。

ちなみに、Google検索からでは、なぜか公式マニュアルにたどり着きにくい気がするので、このTopicを立てました。

0
Raw
https://www.techtips.page/en/comments/163

Railsを用いた運用中のサービスのアップグレードの仕方

wakairo @wakairo
Last edited

まずはRubyをアップグレード

「RubyのアップグレードとRailsのアップグレードは別々に行うのがよい方法です。最初にRubyを可能な限り最新版にアップグレードし、それからRailsをアップグレードします。」 Railsガイドより

次にRailsを1つずつアップグレード

「Railsのバージョンを変更する場合、マイナーバージョンを1つずつゆっくりと上げながら、その都度表示される非推奨機能の警告メッセージを上手に利用するのがベストです。」Railsガイドより

具体的には、以下の手順を繰り返す。

  1. テストを書き、テストがパスすることを確認する。
  2. 現時点のバージョンのパッチバージョンを最新のパッチに移行する。
  3. テストを修正し、非推奨の機能を修正する。
  4. 次のマイナーバージョンの最新パッチに移行する。
0
Raw
https://www.techtips.page/en/comments/160

パッケージにアップデートがあったときの通知

wakairo @wakairo
Last edited

WingetUIを以下のように設定することで、インストールしたソフトウェアのパッケージに更新があったときに通知を受け取ることが出来ます。

  • 自動起動させる
  • 1時間毎といった間隔を選んで、インストールしたパッケージにアップデートがあるかどうかを定期的に確認させる
  • アップデートがあったときに通知させる

現在、この通知を有効にしてWingetUIを利用しているのですが、通知を受け取ってから数回の操作でサクッとソフトウェアのアップデートが出来るので便利です。

ただし、wingetを利用し始める前に既にインストールしていたソフトウェアについては、更新の通知を受け取っても、その先がスムーズに進まないことがしばしば起きています。
一度アンインストールしてwingetからインストールし直せば良いのかもしれませんが、データや設定が飛ぶリスクが気になってそう出来ていないソフトが残っています。
まっさらな状態からwingetを使っている場合は、WingetUIの通知機能を使ってソフトを最新に保つことが快適に出来そうですが、後からwingetを使い始めた場合はプッシュ型の通知よりも、自分の都合の良いタイミングでwingetコマンドを叩いた方が良いのかどうか。それとも、今は我慢で、wingetへの対応が進めば個々のアップデートでつまずくことは減っていくのでしょうか?

0
Raw
https://www.techtips.page/en/comments/91

qart.jsで作成したQRコードを紙に印刷して使う場合のノウハウ

wakairo @wakairo

QRコードのセル数を少なくするために(つまり、印刷されたときの1つのセルを大きくするために)Versionはできるだけ小さく、また、くっきりと印刷するためにSizeは大きめに設定すると良いようです。 ちなみに、合成したQRコードを家庭用プリンタで縦横4cm弱で印刷しましたが、Versionを10に設定した場合はときどきしか認識に成功しませんでした。そこで、Versionを4に設定したところ、認識率が大分改善しました。

0
Raw
https://www.techtips.page/en/comments/87

wingetがインストールされているかの確認方法(wingetは、管理者として実行したシェルでないと実行できないことがある)

wakairo @wakairo
Last edited

管理者としてではなく普通に実行したシェルでwingetコマンドが認識されず実行できない問題が解決しましたので、その現象と原因、そして修正方法をこちらにまとめました

なお、この問題の解決にはkou1okadaさんの情報が大きな助けとなりました。この場を借りて御礼申し上げます。

0
Raw
https://www.techtips.page/en/comments/77

管理者としてではなく普通に実行したシェルではwingetコマンドが認識されないときの対処法

wakairo @wakairo
Last edited

現象

管理者として実行したコマンドプロンプトやPowerShellでは問題なくwingetを利用できる。 しかし、管理者として実行しなかったコマンドプロンプトやPowerShellではwingetが「認識されていません」などとなって実行できない。

原因

環境変数のPathに対応するレジストリの値の種類がREG_SZになっている。

原因がレジストリにあるか確認する方法

PowerShellで以下のコマンドを実行したときの結果を見て、

REG Query HKCU\Environment /V Path

以下のように、Pathの種類がREG_SZとなっている場合は、問題の原因はこのレジストリの設定です。

HKEY_CURRENT_USER\Environment 

    Path    REG_SZ    C:\foobar;%USERPROFILE%\AppData\Local\Microsoft\WindowsApps 

修正方法

このWebページに載っている以下のコマンドを実行します。

if ((gi HKCU:\Environment).GetValueKind("Path") -eq "String") {sp Registry::HKEY_CURRENT_USER\Environment Path (gi HKCU:\Environment).GetValue("Path",$null,"DoNotExpandEnvironmentNames") -Type ExpandString; [Environment]::SetEnvironmentVariable("WM_SETTINGCHANGE","","User")} 

修正できたかの確認

PowerShellで、以下のように、先ほどと同じコマンドを実行し、Pathの種類がREG_EXPAND_SZに変わったことを確認します。

PS C:\Users\wakai> REG Query HKCU\Environment /V Path 

HKEY_CURRENT_USER\Environment 

    Path    REG_EXPAND_SZ    C:\foobar;%USERPROFILE%\AppData\Local\Microsoft\WindowsApps 

さらに、管理者として実行していないPowerShellかコマンドプロンプトで以下のコマンドを実行し、バージョンが無事表示されるようになっていれば、修正が出来ています。

winget -v

なお、レジストリを変更した後は、念のためコンピュータの再起動をしておいた方が良いかもしません。

謝辞

この問題の解決では、前述のkou1okadaさんのWebページの情報が大きな助けとなりました。この場を借りて御礼申し上げます。

0
Raw
https://www.techtips.page/en/comments/76
😄1
🔄1
🔧1

wingetのエラー表示はWingetUIよりも不親切?

wakairo @wakairo
Last edited

アプリケーションの更新が失敗したときやエラーが発生したときの表示がwingetは不親切な気がしています。
wingetでエラーなどが発生したときに、wingetが返したメッセージを読んでも、次にいったいどうすればいいのかよく分からないことが多いように感じています。

それに比べると、WingetUIはwingetよりも関連する情報を多めに出してくれるので、親切な気がします。
wingetでもやりようはあるのでしょうが、ライトユーザーが日常的なメンテナンスをする分には、WingetUIの方が適しているのかもしれません。

0
Raw
https://www.techtips.page/en/comments/75

UniGetUI(旧WingetUI)のインストール

wakairo @wakairo
Last edited

公式のGitHubのREADMEにも書かれていますが、
インストールはPowerShellかコマンドプロンプトで以下のコマンドを実行することで簡単にできます。

winget install --exact wingetui --source winget

インストーラーをダウンロードして実行することでもインストールできるようですが、せっかくwingetがパッケージ管理をしてくれるのですから、wingetコマンドからのインストールの方が良さそうな気がします。

なお、2024年7月現在、前述のREADMEでは、インストーラーからのインストールが推奨(recommended)となっています。wingetコマンドからのインストールで問題になることはないと思いますが、winget以外のパッケージ・マネジャーも多数サポートするようになり、利用目的がwinget以外のパッケージ・マネジャーである方への配慮として、推奨をインストーラーにしたのかもしれません。推測ですが。

0
Raw
https://www.techtips.page/en/comments/74