ruby-on-rails - 如何让 Rails 默认使用系统时间?

标签 ruby-on-rails timezone

我想配置我的 Rails 4.2.5 应用程序以使用其运行系统的时区(例如 Time.current 与 Time.now 相同),而不必将其硬编码到配置中。

这是为了与我受聘之前创建的现有遗留基础设施兼容。我完全了解默认使用 UTC 的最佳实践,有一天我们将重写所有代码以使用 UTC 作为默认值,但这不是今天的选择。由于现有代码和应用程​​序使用服务器的非 UTC 时区作为默认时区,因此违反该约定将破坏我们现有的代码。

这是一个专有应用程序,运行在使用 Chef 自动部署的云实例上;单个实例是手动管理的。因此,操作系统配置是应用程序环境配置,并且在所有实例中都是一致的。此外,一切都只在 Linux 上运行,因此可移植性不是问题。

文档说,如果设置了 Time.zone 或 config.time_zone,Time.current 将返回 Time.now。我在 application.rb 中未设置 config.time_zone ,但默认情况下它仍然以某种方式设置为“UTC”。如何防止这种情况发生,以便 Rails 仅使用操作系统的时区设置?

最佳答案

我建议对config.time_zone使用UTC,并根据登录用户的时区调整每个请求。

您可能对我撰写的关于 Rails 时区的博客文章感兴趣? http://jessehouse.com/blog/2013/11/15/working-with-timezones-and-ruby-on-rails/

如果您确实想在应用程序范围内将 config.time_zone 设置为不同的值 (不推荐),您可以将其设置为环境变量并设置您的厨师脚本配置服务器期间的环境变量

config.time_zone = ENV['LOCAL_TIME_ZONE'] || 'UTC'`

无论你做什么:都不要将config.active_record.default_timezone设置为:local,这会导致以后出现严重的问题

关于ruby-on-rails - 如何让 Rails 默认使用系统时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34210623/

相关文章:

ruby-on-rails - Rails 4 强参数获得嵌套模型的许可

postgresql - 更改数据的时区值

sql - 如何将 unix 时间戳转换为带时区的日期?

php时间偏移mysql实时时间

datetime - 如何从 Twitter API 可靠地确定用户的时区?

javascript - 无法在 Highcharts 图表中设置时区

ruby-on-rails - 如何在我的装置中加载带有外键的 HABTM 关系?

ruby-on-rails - 查找集合的最后一条匹配记录

ruby-on-rails - 根据日期重复记录 - Rails

ruby-on-rails - 运行时遇到错误 : sudo -i gem pristine --all