質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1988閲覧

Dockerで構築したRailsのmigrationファイルの作成時刻がUTCから変更できない

begenner

総合スコア80

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/05/20 11:16

現在Dockerを利用してRailsアプリケーションを作成しています。
テーブル作成・変更時時に生成されるmigrationファイルの日付がUTCになっておりJSTに変更しようとしてもうまくいきません(m_ m)
わかる方がいらっしゃればご教授いただきますようよろしくお願いいたします(m
_m)

動作環境

OS: mac
Ruby: 2.5.7
Rails: 5.1.7

現状

  • エラーはなし
  • migrationファイル作成時にUCTの時刻が適用されてしまう
  • Railsアプリケーションを起動しブラウザでTime.nowを表示すると下記の時刻になります(問題はなし)

erb

1<!-- 20:02 --> 22020-05-20 20:02:51 +0900

期待する動作

  • migrationファイル作成時にJSTの時刻が適用されるようにしたい

参考にしたサイト

試したこと

  1. 下記のファイルに#追記部分を追加し
  2. docker-compose build, docker-compose up を実行
  3. マイグレーションファイルを作成

bash

1# deviseのコマンドでユーザーテーブルを作成 2docker-compose rub web rails g devise User 3# 日本時間は20:11 4# 下記だと11:11(UTC)になっている <- 変更されていない 5#=> invoke active_record 6#=> create db/migrate/20200520111136_devise_create_users.rb 7#=> create app/models/user.rb 8#=> insert app/models/user.rb 9#=> route devise_for :users

該当しそうなコード

docker

1# docker-compose.yml 2version: '3.7' 3 4services: 5 db: 6 image: mysql:5.7 7 environment: 8 MYSQL_ROOT_PASSWORD: password 9 MYSQL_DATABASE: root 10 ports: 11 - "4306:3306" 12 volumes: 13 - db-data:/var/lib/mysql 14 web: 15 # 追記部分 16 environment: 17 TZ: Asia/Tokyo 18 # - "TZ=Japan" 19 init: true 20 tty: true 21 stdin_open: true 22 build: . 23 command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'" 24 volumes: 25 - .:/webapp 26 ports: 27 - "3000:3000" 28 links: 29 - db 30 31volumes: 32 db-data:

docker

1# Dockerfile 2ARG RUBY_VERSION=2.5.7 3 4FROM ruby:$RUBY_VERSION 5 6ENV LANG C.UTF-8 7ENV APP_DIR /webapp 8 9 10RUN apt-get update -qq && \ 11 apt-get install -y --no-install-recommends \ 12 vim \ 13 nodejs \ 14 build-essential && \ 15 rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* 16 17RUN mkdir $APP_DIR 18WORKDIR $APP_DIR 19 20ADD ./Gemfile $APP_DIR/Gemfile 21ADD ./Gemfile.lock $APP_DIR/Gemfile.lock 22 23RUN gem install bundler -v "1.17.3" 24RUN bundle install --jobs=10 25 26ADD . $APP_DIR

ruby

1# config/application.rb 2require_relative 'boot' 3require 'rails/all' 4Bundler.require(*Rails.groups) 5 6module Webapp 7 class Application < Rails::Application 8 config.load_defaults 5.1 9 config.i18n.available_locales = [ :en, :ja ] 10 config.i18n.default_locale = :ja 11 12 config.time_zone = 'Tokyo' 13 config.active_record.default_timezone = :local 14 15 # Don't generate system test files. 16 config.generators.system_tests = nil 17 end 18end 19

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/05/20 11:17

> migrationファイル作成時にJSTの時刻が適用されるようにしたい なぜそれが必要なのでしょうか。
begenner

2020/05/20 11:24

・macでDockerを使用せずにRailsを作成していた時は設定すれば日本時間の表示にできていた ・他の記事を見て変更できそうだったのでDockerでも変更した方が統一感が出る ・自分にとってもわかりやすい といったことが主な理由です。 変更せずに開発を進めた方がいいのでしょうか?
maisumakun

2020/05/20 11:30

環境によってはJSTにできるとなると、統一しないと厄介なことになるのは間違いないです。
begenner

2020/05/20 11:35

上記のリンク先の参考サイトにはできるようなことが書いてあったように見えたのですが私の勘違いでしょうか? また、できたとしてもしない方が無難といった感じでしょうか?
maisumakun

2020/05/20 11:41 編集

> 上記のリンク先の参考サイトにはできるようなことが書いてあったように見えたのですが 「マイグレーション」の時間を変えられる、という記載はどこにもなかったように思います。 (そして、マイグレーションにファイル名に入る時間は「どんな環境でも順番を一貫させる」ことが最優先なので、環境設定によらずUTC固定、ということも考えられます)
guest

回答1

0

ベストアンサー

どのような環境でもUTC固定で、変更するすべはないようです。

The name of the file is of the form YYYYMMDDHHMMSS_create_products.rb, that is to say a UTC timestamp identifying the migration followed by an underscore followed by the name of the migration. (Rails Guideより、強調は引用者)

投稿2020/05/20 11:45

maisumakun

総合スコア146018

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

begenner

2020/05/20 11:48

丁寧に対応いただきありがとうございました。 大変わかりやすかったです!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問