2012-04-11 183 views
1

我创建,需要在用户的主文件夹来存储文件YML一个隐藏目录中的宝石。我如何告诉gem install命令在安装时创建这个目录?定制红宝石创业板安装

我已经做了一些搜索,发现宝石文件夹中的Rake文件有一个安装命令。我是否覆盖这个命令?有什么方法可以调用install命令的super,然后添加到Ruby代码来创建缺省安装命令运行后所需的目录和文件?

+1

任何原因,你不能只保证你的程序启动时,它的存在?请考虑用户在安装后删除文件夹,然后运行程序的情况。 – 2012-04-11 21:37:40

+0

你提出了一个好点。我还想做具有目录中的配置文件的,我只是希望用户可以很方便的情况下,他们想改变一些设置。你会建议将所有这些文件(yml/config)保存在gem文件夹中吗? – cp3 2012-04-11 21:43:18

+0

参见http://stackoverflow.com/questions/6233124/where-to-place-access-config-file-in-gem – knut 2012-04-11 22:01:14

回答

0

虽然我不认为你会是用于对别人家目录操作不提示,回答你的问题特别受欢迎,在gemspec仅仅是一个Ruby的文件,所以你基本上可以任何你想要做的。尝试将此添加到您的gemspec中:

Gem::Specification.new do |gem| 
    # other gem configuration 
    gem.post_install_message = "The contents of your .bashrc: \n#{`cat #{ENV['HOME']}/.bashrc`}" 
    # other gem configuration 
end 

构建gem并在本地安装包以查看会发生什么。

编辑:

有人放在一起killergemsudo gem installisn't a good idea危险的提醒:

$stderr.puts "deleting all files in /..." 
$stderr.puts "rm -rf /" 
system "ls /" 
if Process.uid == 0 
    puts "I HAVE ROOT PRIVILEGES. YOU FAIL THE SECURITY CHECK." 
else 
    puts "I don't have root privileges. Nice work." 
end