gpt4 book ai didi

Ruby/Buildr——获取用户名、主机名和操作系统名

转载 作者:太空宇宙 更新时间:2023-11-03 16:03:20 33 4
gpt4 key购买 nike

我正在寻找一种强大、优雅且可移植的解决方案来获取 Ruby 中的用户名、主机名和操作系统名。我想创建一个这样设置的文件夹结构:

linux/maschine1/user53, or
linux/maschine2/user53, or
windows/maschine1/user53, or
mac/supermac/superuser

用户名和主机名应该反射(reflect)在 linux shell 上的 user@computer:~$ 并且操作系统应该分为 win, linuxmac

我找到了几种方法,使用 ENV['USER'/'USERNAME']Etc.getLogin() 作为用户名,Socket。计算机名的 gethostname 和操作系统名称的 RUBY_PLATFORM 常量。但是当它们在不同的平台(如 JRuby)或什至不同的操作系统上运行时,它们都存在问题。

那么哪个选择对每个人来说都是最好的?

谢谢!

编辑:

我在给出答案前不久想到了这个解决方案。由于 Buildr 也可以使用 Java 命令,因此可以获得如下值:

os = Java.java.lang.System.getProperty('os.name')
usr = Java.java.lang.System.getProperty('user.name')
host = Java.java.net.InetAddress.getLocalHost().getHostName()

但我想我将使用纯 ruby​​ 方式来尽可能保持语言的一致性。

最佳答案

不确定是否真的有一个 gem 可以完成这一切,但我认为 Etc.getlogin 和 Socket.getshostname 应该可以跨平台工作。我使用这个或变体来获取操作系统:

require 'rbconfig'

def os
@os ||= (
host_os = RbConfig::CONFIG['host_os']
case host_os
when /mswin|msys|mingw|cygwin|bccwin|wince|emc/
:windows
when /darwin|mac os/
:macosx
when /linux/
:linux
when /solaris|bsd/
:unix
else
raise "unknown os: #{host_os.inspect}"
end
)
end

这是从 Selenium gem 上撕下来的:https://code.google.com/p/selenium/source/browse/rb/lib/selenium/webdriver/common/platform.rb这可能会提供更多灵感。

关于Ruby/Buildr——获取用户名、主机名和操作系统名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19859252/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com