有没有办法自动追加到$: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 / rubypaths的文件,并让脚本从cron运行,稍作修改? 因此,不要依赖ARGV,而是执行以下操作:
path_array = [] path_array = IO.read("/etc/rubypaths").split("\n") ...
但也许你想要的是操作系统以某种方式“知道”文件系统上有另一个site_ruby文件夹, 并且你想要它被添加到$ RUBYLIB。 不知道如果这是可行的,而没有实际通过/ etc中的文件告诉操作系统你的意图。