如何最好地自动处理多个site_ruby位置?

有没有办法自动追加到$:variables在ruby帐户额外的site_ruby位置?

Ruby安装在/ usr / local /中,并且使用gem_install将新的ruby文件正确安装到/ usr / local / lib / ruby​​ / site_ruby。

然而,有一些ruby绑定到我们想要安装的阴影工具,他们安装到/ usr / lib / ruby​​ / site_ruby(本地)。 有没有一个标准的方法来告诉ruby这个目录也应该被默认包含在内?

我知道脚本可以dynamic更新$:或者可以用-I调用它,但似乎这是应该在安装中处理的东西。

有没有人find一个干净的方式来解决这类问题?

谢谢,夹头

在/ etc / profile中设置RUBYLIB以包含所需的path。

一些狡猾的示例代码:

#!/usr/bin/ruby -w path_array = ARGV.dup $:.each {|path| path_array << path } path_string = "RUBYLIB=#{path_array.join(":")}" begin File.open("/etc/profile", "a") {|f| f.puts(path_string)} rescue => e puts "error writing file: #{e}" exit 1 end 

您可以将此脚本别名到您的path中,然后调用

 $ add_ruby_path "<path1>" "<path2>" "<path3>" 

虽然不是很自动,但…

也许你可以创build一个名为/ etc / ruby​​paths的文件,并让脚本从cron运行,稍作修改? 因此,不要依赖ARGV,而是执行以下操作:

 path_array = [] path_array = IO.read("/etc/rubypaths").split("\n") ... 

但也许你想要的是操作系统以某种方式“知道”文件系统上有另一个site_ruby文件夹, 并且你想要它被添加到$ RUBYLIB。 不知道如果这是可行的,而没有实际通过/ etc中的文件告诉操作系统你的意图。