具有持久数据的Ruby Gems

我想创建ruby应用程序(而不是rails).这是一个控制台应用程序,需要保留一些数据.我正在使用pstore作为数据库.我想将此应用程序部署为gem.

我的问题是:我的数据在哪里?

目前我已经创建了一个数据目录作为标准gem布局中bin目录的兄弟.因此,我希望gem在部署之后将其数据存储在“内部”中.但是当我进行本地gem安装测试时,我发现数据存储在本地存储到项目文件中,而不是存储在gems目录中的某个位置.

当然,我可能只是误解了“rake install_gem”正在做什么.另外,我模糊地担心,如果我需要sudo来安装gem,它实际上可以在gem目录中“内部”创建数据文件.

有人可以澄清这一点吗?

谢谢.
John Schank

@makevoid – 谢谢你的回复.这是我的主要脚本的全部内容.在/ bin目录中…(我将它添加到主要问题中,因为我不熟悉如何在注释中格式化内容 – 并且粘贴的代码看起来很糟糕.

#!/usr/bin/env ruby

$LOAD_PATH.unshift File.dirname(__FILE__) + '/../lib'

require 'timesheet'

begin
  command_hash = TimesheetParser.parse
  store = YAML::Store.new("data/time_entries.yaml")
  tl = TimeLog.new(store)
  ts = Timesheet.new(tl)
  ts.process(command_hash)
rescue Exception => e
  raise if command_hash[:debug]
  puts e.message
最佳答案
在Linux上,有两个常用的存储变量数据的位置.

/home/user/.application

如果每个用户都需要它自己的存储,则通常在用户主目录中完成.应在用户主目录中存储的路径

ENV["HOME"] + "/." + $application_name

在/ var / lib中/应用

如果所有用户共享存储,或者应用程序仅由一个用户(大多数守护程序)运行,则/ var是存储所有类型数据的正确位置.

> / var / log用于日志
> / var / run for pid’s
> / var / lock用于锁定文件
> / var / www for httpservers
> / var / tmp表示不重要但持久的数据
> / var / lib用于所有其他数据

存储在/ var中的路径应该是

"/var/lib/" + $application_name

确保此目录的权限是这样的,您不必让您的应用程序以root身份运行.

相关文章

文件查找(find) 1 find 简单的说,就是实时查找指定的内容或条件。特点:最新、最快、最准确。 用法:...
非交互式添加分区 方法一 添加/deb/sdb 下的分区,其实位置为1到1000M,第二个分区位置为1001至3000M,...
编译安装httpd 1 去官网下载源码包 为避免非法软件,一定要去官网下载http://www.apache.org httpd-2.4...
gdisk用法 gdisk - InteractiveGUIDpartitiontable (GPT) manipulator GPTfdisk (akagdisk) isatext-mo...
1 一定用快捷键 这里简单的说下几个常用的快捷按键。 1.1 移动光标快捷键 Crtl + a 光标回到命令行...
bash shell中测试命令 test命令提供了if-than语句中测试不同条件的途径。如果test命令中列出的条件成立...