我试图通过写入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"}
答案 0 :(得分:0)
获得gem文件夹的一种方法是:
def gem_folder(gem_name, version)
"#{Gem.path[1]}/gems/#{gem_name}-#{version}"
end
每次更改gem时都需要更改版本,但您可能已经这样做了。
不幸的是,我不能保证这是跨平台的。
示例:
gem_folder('pry', '0.11.3')
# => "/Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.11.3"
# check find_files as a reference
Gem.find_files("pry")[0]
# => "/Users/max/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/pry-0.11.3/lib/pry.rb"
您可以为您的宝石硬编码宝石名称和版本。