高木のブログ

【Ruby】タイムゾーンを変更する

2022/09/10

GitHub Actions で時間を扱うRuby スクリプトを動かしたい
そのためには、GitHub Actions のタイムゾーンは UTC になっているので、タイムゾーンを変更する必要がある

Ruby はシステムのタイムゾーンに依存する

app.rb
puts Time.now
$ ruby app.rb
2022-09-10 20:14:08 +0900

環境変数 TZ を指定してタイムゾーンを変更する

システムのタイムゾーンを変更するか、環境変数 TZ で指定してあげれば変更できる
環境変数で指定するのが手軽そう

$ TZ=UTC ruby app.rb
2022-09-10 11:14:33 +0000
$ TZ=America/New_York ruby app.rb
2022-09-10 07:14:46 -0400

GitHub Actions で日本時間で Ruby スクリプトを実行する

GitHub Actions では、上記の実行時に TZ を指定するやり方と、env で TZ を指定するやり方ができる

実行時に TZ を指定

jobs:
  ruby:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/[email protected]
    - name: Set up Ruby
      uses: ruby/setup-[email protected]
      with:
        ruby-version: 3.1
    - name: Run script
      run: TZ=Asia/Tokyo ruby app.rb

env で TZ を指定

jobs:
  ruby:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/[email protected]
    - name: Set up Ruby
      uses: ruby/setup-[email protected]
      with:
        ruby-version: 3.1
    - name: Run script
      env:
        TZ: "Asia/Tokyo"
      run: ruby app.rb

参考

#Ruby と #Rails の Time や Time.zone の扱いががマジで分からないし混沌としてるのでちょっとだけ整理したい。 - Qiita


ytkg

Written by ytkg, Twitter, GitHub