LoginSignup
2
0

【Rails】システムスペックで日本語のファイル名をダウンロードするとファイル名が "download" になってしまう場合の対処法

Last updated at Posted at 2023-10-04

発生した問題

Railsのシステムスペックでファイルダウンロードの機能をテストしようとしたが、日本語を含むファイル名だとファイル名がなぜか "download" になってしまう。

# 期待するpath
/path/to/downloaded_files/ほげほげ.txt

# 実際のpath
/path/to/downloaded_files/download

以下は失敗するテストコード(ヘッドレスChromeを利用するシステムスペック)の例。

click_link 'ダウンロード'

# wait_and_find_download_file は自作のヘルパーメソッド、という想定
download_path = wait_and_find_download_file

expect(download_path).to end_with "ほげほげ.txt"
#=> Failure/Error: expect(download_path).to end_with "ほげほげ.txt"
#=>   expected `"/path/to/downloaded_files/download".end_with?("ほげほげ.txt")` to be truthy, got false

とくに、ローカル環境ではパスするのに、CI環境(GitHub Actionsなど)でテストが落ちてしまう。

一方、ファイル名をアルファベットのみにするとテストは問題なくパスする("abc.txt"など)。

対処法

ロケールの設定を日本にする。たとえばGitHub Actions(Ubuntu環境)でテストが落ちる場合、以下のような設定を追加する。

steps:
  # ...

  - name: Set Locale
    run: |
      sudo locale-gen ja_JP.UTF-8
      sudo update-locale LANG=ja_JP.UTF-8
2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0