Closed Alexilmarranen closed 7 years ago
Ранее не было необходимости заморачиваться с относительными путями. Как вы себе представляете выбор типа пути в интерфейсе (разрешается фантазировать).
Если Вы имеете ввиду то, как я вижу выбор относительных путей в интерфейсе - то в этом нет необходимости - путь из абсолютного конвертируется в относительный и пользователю абсолютно не важно что храниться в базе, ведь он в итоге работает в интерфейсе с абсолютными путями. Если же вопрос про выбор именно типа путей для ссылок, то в интерфейсе это может быть чекбокс "Использовать относительные пути для линков", если данная функция все-таки будет уверенно реализована и протестирована. Первично наверное стоит сделать такой переключатель в виде строки в конфиге (что я и сделал у себя, успешно собрал и протестировал вручную в работе для варианта с преобразованием и хранением относительных путей, которые берутся от директории приложения). Однако такой вариант (с путями, которые относительны от директории приложения) не решает проблемы совместного использования, если само приложение не лежит на разделяемом ресурсе и не запускается всеми пользователями с разделяемого ресурса.
Тогда как вам другие варианты:
Добавить в настройки "Префикс для относительных путей". Чтобы была возможность задавать относительные пути не относительно базы, а вообще относительно чего угодно.
Или сделать интеллектуальное преобразование пути "на лету", например через задаваемое регулярное выражение.
Не заморачиваться с путями, а решить проблему на уровне файловой системы и линков на нужные директории.
Я пока не очень хорошо понимаю архитектуру MyTetra, поэтому мои рассуждения могут быть слегка неверными. Однако вот что я думаю:
Я проверил вариант с решением проблемы на уровне файловой системы и созданием симлинков. Действительно, этот вариант работает как надо, если у всех машин, которые разделяют ресурс, имеется симлинк на разделяемый ресурс (или его часть), который хранит те файлы, на которые надо ссылаться в базе. Лично я для такого симлинка выбрал путь в директории /home. Таким образом у пользователей базы, являющейся разделяемым ресурсом, осталось два ограничения:
Лично для меня проблема полностью решена (если не всплывет каких-то других обстоятельств в процессе использования). Если вы считаете, что более нативная реализация в MyTetra не требуется, то issue наверное можно закрывать. Спасибо за идею, не понимаю как я сам не догадался %)
Возможно ли использование в базе относительных путей к файлам для аттачей типа "link", причем таким образом, чтобы путь был относительным по отношению к директории data? Дело в том, что относительные пути такого рода дадут возможность использовать базу с прикрепленными файлами, лежащими в директории рядом с базой, совместно на нескольких компьютерах через синхронизируемый файловый ресурс. Добавление аттачей с путями относительными директории приложения дело тривиальное, а вот относительно директории базы сильно сложнее, как я понимаю.