Как работать с базой данных в геме, предназначенном для общесистемного инструмента командной строки

Я разрабатываю драгоценный камень, который в основном используется как общесистемный инструмент командной строки. Этот гем хранит необходимые данные для приложения в базе данных. Мне интересно, есть ли какой-нибудь дефакто-стандартный способ обработки базы данных в этой ситуации.

До сих пор я думаю об использовании sqlite3, потому что я не хочу, чтобы пользователи проходили через эти мучительные процессы для установки общесистемного mysql или postgress. (и да, я использую реляционную базу данных, и sqlite более чем достаточно с точки зрения производительности и т. д., мое приложение просто маленькое)

Если это правильное решение, вопрос сводится к тому, куда мне поместить файл базы данных sqlite3. Определенно размещать это в каталоге gem - не очень хорошая идея, и пока я думаю о том, чтобы найти его в /usr/local/MY_GEM/*.

Извините, вопрос может показаться немного расплывчатым для некоторых людей, но если бы мне нужно было определить один вопрос, это было бы «Все ли у меня хорошо?» или «Ребята, у вас есть идеи получше?».


person Ryo    schedule 18.02.2015    source источник


Ответы (2)


База данных полностью зависит от пользователя? Или это статические данные, которые нужны вашему приложению? Если это зависит от пользователя, я бы поместил его в ~/.my_gem.db или ~/.my_gem/data.sqlite3 или аналогичный.

person Philip Hallstrom    schedule 18.02.2015
comment
Это зависит от пользователя, не думает о сети, сборе данных и т. Д. И я не думал о ~/.my_gem, и да, звучит как хорошая идея. Спасибо. - person Ryo; 19.02.2015

Ответ @Philip отличный, но вас также может заинтересовать спецификация базового каталога XDG http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html Я считаю, что он предназначен для настольных приложений, но предоставляет спецификацию данных и конфигурации для каждого пользователя, а также общесистемную конфигурацию. Приложения высокого профиля, такие как Chrome и Inkscape, похоже, используют эту спецификацию.

Спецификация основана на переменных среды, но результат, скорее всего, будет примерно таким:

 ~/.config/mygem/myconfig.db
 ~/.local/share/mygem/mydata.db
person tribeca    schedule 19.02.2015
comment
о, отлично выглядит, посмотрю. Спасибо за это. - person Ryo; 19.02.2015