如何处理用于系统范围命令行工具的gem中的数据库

时间:2015-02-18 22:40:06

标签: ruby sqlite gem

我正在开发一个基本上用作系统范围命令行工具的gem。此gem在数据库中存储应用程序的必要数据。我想知道在这种情况下是否有任何事实标准​​的方法来处理数据库。

到目前为止,我正在考虑使用sqlite3,因为我不希望用户通过这些痛苦的过程来安装系统范围的mysql或postgress。 (是的,我使用关系数据库和sqlite在性能等方面绰绰有余,我的应用只是一个简单的小应用程序)

如果这是正确的决定,问题归结为我应该放置sqlite3数据库文件的位置。绝对把它放在gem目录下并不是一个好主意,到目前为止我正在考虑找到/ usr / local / MY_GEM /*.

对不起,对于某些人来说这个问题可能听起来有点模糊,但如果我要定义一个问题,那就是“我做得还好吗?”或者“你们有更好的主意吗?”。

2 个答案:

答案 0 :(得分:0)

数据库完全是用户特定的吗?或者它是您的应用程序需要的静态数据?如果它是用户特定的,我会把它放在〜/ .my_gem.db或〜/ .my_gem / data.sqlite3或类似的。

答案 1 :(得分:0)

@ Philip的答案很棒,但您可能也对XDG基本目录规范感兴趣http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html我认为它针对桌面应用程序,但提供了每个用户的数据和配置规范以及系统范围的配置。 Chrome和Inkscape等高端应用程序似乎都在使用此规范。

规范基于环境变量,但结果可能是这样的:

 ~/.config/mygem/myconfig.db
 ~/.local/share/mygem/mydata.db