是否有可能让我的宝石写入它的根宝石目录?

时间:2018-03-21 04:55:00

标签: ruby rubygems rvm filepath

我试图通过写入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"}

1 个答案:

答案 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"

您可以为您的宝石硬编码宝石名称和版本。