Я пишу сценарий Ruby, который включает сравнение дат.
Чтобы сохранить читабельность, я бы хотел сделать что-то вроде 1.day.ago. Я думал, что это будет так же просто, как добавить gem 'activesupport' в мой gemfile и потребовать require 'active_support'. Но это не работает.
Я пошел дальше:
require "active_support/core_ext/date/calculations"
require "active_support/core_ext/integer/time"
require "active_support/core_ext/time"
Но я не совсем там:
1.day.ago
#NameError: uninitialized constant ActiveSupport::IsolatedExecutionState
#
# ::ActiveSupport::IsolatedExecutionState[:time_zone] || zone_default
…Я не уверен, что еще мне нужно. Как использовать все методы даты/времени активной записи в моем ванильном рубиновом скрипте?
Да, исправление обезьяны не применяется. Требовать только active_support Я получаю сообщение об ошибке: NoMethodError: undefined method month' for 1:Integer`
Вам просто нужно включить ActiveSupport::IsolatedExecutionState например.
# This is not needed because active_support/core_ext/integer/time already requires it
# require "active_support/core_ext/date/calculations"
# This is not really needed either as almost all of it will
# be required by the requirements in active_support/core_ext/integer/time
# require "active_support/core_ext/time"
require "active_support/core_ext/integer/time"
require "active_support/isolated_execution_state.rb"
1.day.ago
#=> 2023-02-20 19:18:49.686473704 +0000
Почему это не требуется в «active_support/core_ext/time/zones», я не могу сказать, поскольку мне кажется, что это должно быть, чтобы избежать этой проблемы.
Если вы действительно хотите включить все activesupport, вы были очень близки, однако на самом деле требуется оператор require 'active_support/all' Содержимое этого файла просто:
require "active_support"
require "active_support/time"
require "active_support/core_ext"
Я подозреваю, что вам нужно gem 'activesupport' (исходя из ошибки, которую вы получаете), но исправление обезьяны не применяется к классу Integer просто путем включения драгоценного камня. Какую ошибку вы получаете, когда используете полный гем?