Я подумал, можно ли вернуться назад, чтобы получить экземпляр ActiveStorage :: Service :: AzureStorageService (в производстве), и нашел этот ответ при обнаружении каждого экземпляра класса. 1004 * Отсюда я обнаружил, что могу:
asass = ObjectSpace.each_object(ActiveStorage::Service::AzureStorageService).first
Что затем позволило мне:
2.5.5 :015 > asass.exist?(c.json.blob.key)
AzureStorage Storage (313.3ms) Checked if file exists at key: ....PTLWNbEFLgeB8Y5x.... (yes)
=> true
Дальнейшее копание в недрах GitHub Rails привело меня к что ссылка на экземпляр службы ActiveStorage может быть достигнута через экземпляр сохраненного объекта, и что я всегда могу использовать метод send()
для вызова одного из его методов:
2.5.5 :045 > c.json.blob.service.send(:exist?, c.json.blob.key)
AzureStorage Storage (372.4ms) Checked if file exists at key: ....PTLWNbEFLgeB8Y5x.... (yes)
=> true
Я уверен, что оба подхода освещают одни и те же пути кода, но я не уверен, какой из них я предпочитаю в данный момент. Я все еще думаю, что должен существовать какой-то способ пройти через экземпляр Rails через app.
или Rails.application.
, чтобы добраться до экземпляра ActiveStorage, но я не смог разобраться в этом.