Categories
├─Books Cloud services Events Standard TechTips Others
├─Software
│ ├─Mac OS Programming languages Windows Others
│ ├─Libraries
│ │ └─C C++ Java JavaScript Python Ruby Rust Others
│ └─Unix
│ └─Unix commands Others
└─Web
└─Document Service Others
IrfanViewがv4.70になってからwingetソースでのインストールが上手く行かない
問題
2024年10月26日現在、以下のコマンドのように、wingetがソースとなっている方のパッケージIDを指定してwingetからインストールを試みても、IrfanViewが起動できないので、インストールが上手く行っていないと思われる。
対応策
最新版になるのが多少遅れても良いのであれば、Microsoft Storeからインストールする。なおMicrosoft Storeからであれば、Microsoft StoreのGUIからインストールしても、Microsoft Storeの方のパッケージIDを指定してwingetコマンドからインストールしても、どちらでも大丈夫のようである。
minitestにおける不等号などの二項演算子を用いたアサーション
minitestにおいて、不等号などの二項演算子(例:<, >, <=, =>)を用いたアサーションをしたいときには、
assert_operator()
が利用できます。assert_operator()
を用いるメリットassert_operator()
を用いるメリットとして、アサーションが失敗した時の情報が多くなることが挙げられます。以下のように、
assert_operator()
を使用した場合は、アサーション失敗のメッセージにおいて、以下のように変数の中身も表示してくれます。
比較して、以下のように単純に記述した場合は、
以下のようにアサーションに失敗した以外の情報を得ることが出来ません。
(参考)
assert_not_operator
ちなみにrailsのテスト環境では、
assert_not_operator
もあります。rails 7.0からrails 7.1への移行(アップデート、アップグレード)で必要な作業
Rails 7.1で追加されたパスワード関連エラーメッセージへの対応
has_secure_password
を利用しているモデルがあり、かつ、英語以外のロケールへ対応している既存アプリでは、 rails 7.1で追加されたエラーの種類であるpassword_too_long
に対応するエラーメッセージの訳文を追加する必要があります。 (追加をしないとパスワードが長すぎた場合のエラーメッセージが英語で表示されます。)なお、本件の詳細についてはこちらをご覧下さい。
Rails 7.1では、パスワードに関してエラーメッセージの種類が増えた
Rails 7.1に取り込まれたこちらのプルリクエストによって、
ActiveModel::SecurePassword
のhas_secure_password
メソッドを利用している場合のパスワードのバリデーションにおいて、 パスワード文字列が72バイト以内かどうかのチェックが行われるようになりました。 そして、72バイトを超えている場合には、password_too_long
という新しい種類のエラーが出るようになりました。この変更に伴って、日本語表示のRailsアプリでは、
password_too_long
のエラーメッセージの日本語訳を用意する必要があります。 具体的には、以下の階層の所に以下のような日本語訳が必要となります。Emailアドレスとして適切かどうかのチェックに使えるURI::MailTo::EMAIL_REGEXP
rubyの標準添付ライブラリであるuriに存在している
URI::MailTo::EMAIL_REGEXP
は、 ある文字列が規格上Emailアドレスとして適切かどうかのチェックに以下のように利用できます。Railsガイドでも、 このEMAIL_REGEXPを用いてemailのバリデーションを行う方法を以下のように紹介しています。
URI::MailTo::EMAIL_REGEXPを使うメリット
TechRachoの記事によると、
URI::MailTo::EMAIL_REGEXP
の正規表現はHTML規格書から持ってきているため、URI::MailTo::EMAIL_REGEXP
を使ったバリデーションはブラウザがinput type="email"
で行うバリデーションと一致するというメリットがあります。余談
URI::MailTo::EMAIL_REGEXP
は、 Rubyリファレンスマニュアルにも Ruby標準ライブラリリファレンスにも、実は記載されていません。 ですので、URI::MailTo::EMAIL_REGEXP
を利用するのは少々裏技的な側面があるのかもしれません。 ただ、上述の通り、Railsガイドや記事で取り上げられるぐらいに認知されていますので、利用しても大丈夫なのではないかと思います。setup-rubyにおける.ruby-versionを用いたバージョン指定
GitHub Actionsの設定ファイルでsetup-rubyを使う時に、 以下のように
ruby-version
のところで.ruby-version
と指定すると、 GitHubレポジトリからチェックアウトされたプロジェクトの中にある .ruby-versionという名前のファイルで指定されているrubyのバージョンが GitHub Actionsのsetup-rubyで使われます。jobsが複数あって、同じバージョンで複数回setup-rubyをしているときなどには、バージョン記述の重複がなくなって有用だと思います。
(参考)
この指定方法は、railsの新規アプリのGitHub Actionsの設定で利用されています。
Test Topic
A comment by @test_withdrawn
rails 7.1からrails 7.2への移行(アップデート、アップグレード)で必要な作業
rails 7.2への移行におけるアイコン画像
bin/rails app:update
コマンドを実行すると以下の2つのアイコン画像ファイルがpublic/
に作成されますが、これら2つのファイルは、
rails new
で生成される新規railsアプリ用のファイルであるため、既存アプリでは単純に削除してしまい、 従来通りのアイコン画像とアイコン設定(faviconやapple-touch-icon)を用いれば大丈夫です。 (もちろん、既存アプリにおいてアイコン設定が適切に行われている場合の話です。)ちなみに、以下の通りrails 7.2では、新規アプリのアイコン設定が大幅に更新されています。 rails 7.2のこの新たなアイコン設定は、既存アプリにおいてもアイコン設定を見直す際に役立つかもしません。
(参考)rails 7.2.1の新規アプリのアイコン設定
以下が、新規アプリ用のテンプレートファイルからコピーしたrails 7.2.1の新規アプリのアイコン設定です。
新たなアイコン画像ファイルによるアイコン設定に関与しているプルリクエストは、 PR #50526と PR #50629です。 3つのアイコン画像ファイル(apple-touch-icon-precomposed.png、apple-touch-icon.png、favicon.ico)が削除され、 2つのアイコン画像ファイル(icon.png、icon.svg)が追加されています。 また、manifestに関しては、PWAに関する新機能に関連して導入されています。
rails 7.1からrails 7.2への移行(アップデート、アップグレード)で必要な作業
rails 7.2ではassertionがないテストに対して警告が出るようになった
現象
rails 7.2では、Minitestを使ったテストに関して、assert系メソッドが1つも呼ばれないテストがあると"Test is missing assertions"という警告が出るようになりました。
警告が出ないようにする方法
各テストでassert系メソッドが最低1回は実際に呼ばれるようにして下さい。 例外が起きないことを確認するテストでは
assert_nothing_raised
メソッドを用いて下さい。 なお、警告の回避方法を含め、こちらの記事が参考になるかもしれません。関連するプルリクエストとコミット
この機能はPR #51625で導入され、このときはrailsアプリの設定によって挙動を変えられるようになっていました。 その後、commit 6a6c7e6によって機能が単純化され、単に常に警告が出力されるだけになりました。 その後、PR #51693で関係するコードを綺麗にする作業などが行われています。
rails 7.1からrails 7.2への移行(アップデート、アップグレード)で必要な作業
rails 7.2で追加されたブラウザバージョン指定機能と406-unsupported-browser.html
bin/rails app:update
コマンドを実行するとpublic/に406-unsupported-browser.html作成されます。 このHTMLフィアルは、rails 7.2で追加されたブラウザバージョン指定機能が指定範囲外のブラウザに対して送るファイルです。なお、既存アプリでは、この機能の利用を始めないのであれば、念のため406-unsupported-browser.htmlを置くだけ置いておくという対応で良いように思います。