Я интегрирую OneupFlysystemBundle, и мне интересно, как использовать local
адаптер на моем компьютере для разработки и awss3v3
на производственных серверах.
Я сделал это, но это не работает (он всегда использует локальный):
oneup_flysystem:
adapters:
default_adapter:
local:
directory: %flysystem.local_adapter.directory%
awss3v3:
client: flysystem_clients.s3
bucket: "%flysystem.s3_client.foo.bucketName%"prefix: "foo/"
filesystems:
default:
adapter: default_adapter
Я думаю, что я мог бы заставить это работать, используя:
oneup_flysystem:
adapters:
default_local_adapter:
local:
directory: %flysystem.local_adapter.directory%
default_s3_adapter:
awss3v3:
client: flysystem_clients.s3
bucket: "%flysystem.s3_client.foo.bucketName%"prefix: "foo/"
filesystems:
default:
adapter: "%choosen_adapter%" # choosen_adapter value beeing either "default_local_adapter" or "default_s3_adapter"
но мне не нравится это решение, у кого-нибудь есть идея получше?
Ваше последнее решение очень похоже на то, как сам Symfony позволяет выбирать драйвер СУБД для использования или настраивать серверную часть кэша. Это выглядит хорошо.
Параметры, относящиеся к среде выполнения, можно настроить в app/config/parameters.yml
(положить choosen_adapter
параметр в нем), его причина существования.
Тем не менее, это обычно плохая практика, ведущая к странному поведению при использовании другой среды в разработке и на производстве. Некоторые ошибки могут появляться только в производстве, потому что вместо локальной FS используется S3.
Вы должны попытаться работать в среде разработчика как можно ближе к рабочей среде. S3 дешевый (даже бесплатный, если вы не храните много данных), если возможно, вы должны использовать его также в dev.
Других решений пока нет …