【问题标题】:Customizing ruby gem install自定义 ruby​​ gem 安装
【发布时间】:2012-04-11 21:29:36
【问题描述】:

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

我做了一些搜索,发现 gem 文件夹中的 Rakefile 有一个安装命令。我要覆盖这个命令吗?有什么方法可以调用 install 命令的 super 然后添加到 Ruby 代码中以创建默认安装命令运行后所需的目录和文件?

【问题讨论】:

  • 有什么理由不能确保它在程序启动时存在?还要考虑用户在安装后删除了文件夹,然后运行您的程序的情况。
  • 你提出了一个很好的观点。我也在考虑在该目录中有一个配置文件,我只是希望用户能够轻松访问,以防他们想要更改某些设置。您是否建议将所有这些文件(yml/config)保留在 gem 文件夹中?

标签: ruby gem installation


【解决方案1】:

虽然我不认为您在不提示的情况下对某人的主目录执行操作而特别受欢迎,但要回答您的问题,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 并在本地安装包,看看会发生什么。

编辑:

有人把killergem放在一起提醒sudo gem install的危险isn'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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多