【发布时间】:2018-03-21 04:55:00
【问题描述】:
我正在尝试通过写入 gem 中包含的文件来改进我的 gem 的收藏夹功能。我当前的版本可以工作,但它要求用户在当前工作目录中有创建的文件才能工作。
我目前正在使用FileUtils 来编写文件,但不知道是否 1. 这甚至可能认为可能会有权限问题和 2. 如果有可能如何在不同平台上成功设置路径目标和环境。
当前代码:在我的可执行文件中
#creator
if !File.exist?('usr')
FileUtils::mkdir 'usr'
FileUtils::touch 'usr/favorites.txt'
end
#writer
File.open("../ruby_doc_favorites.txt", "a"){|l| l.puts "some string"}
我想要...
File.open("[dynamic_path_to_gem_directory]", "a"){|l| l.puts "some string"}
【问题讨论】:
-
我 - 作为 gem 用户 - 如果我有更改配置文件的存储位置或至少在我的主目录中拥有该数据,我更愿意这样做。并且不要与 gem 本身文件夹中同一台机器上的所有其他用户共享其数据。此外,gem 的文件(我认为它的源代码)在下载后不应更改。我的建议是将 gem 与其数据分开。
-
我同意 spickermann - 你要实现的目标看起来很不合适。如果您要为 gem 建立某种数据库,用户应该能够手动设置该文件的路径,因此如果他重新安装 gem,数据将保持不变。或者,如果您只需要一个临时文件,您可以改用
Tempfile。 -
另外值得注意的是,在某些情况下写入 gem 目录可能不起作用,例如用户运行系统 Ruby 安装,其中 gem 是由 root 安装的。
标签: ruby rubygems rvm filepath