Получить имя пользователя в RubyMotion OSX

Мне нужно получить домашний каталог пользователя или хотя бы его имя.

Используя FileUtils, мне нужно перемещать файлы на основе их имени учетной записи, а использование ~/, похоже, не работает.

Как мне получить имя учетной записи пользователя?


person Chris Edwards    schedule 21.05.2014    source источник


Ответы (2)


Я еще не пользователь rubymotion, но в большинстве рубинов вы можете сделать

ENV["HOME"]

для домашнего каталога и

ENV["USER"]

чтобы пользователь достиг именно этого, используя определенные переменные среды.

person Patru    schedule 21.05.2014
comment
Спасибо, Патру, с тех пор я нашел этот пост stackoverflow.com/questions/3020187/, который предполагает, что это не лучший способ. Я попробую (и предложения) и посмотрю :) - person Chris Edwards; 21.05.2014
comment
Конечно, вы правы, если у вас нет контроля над тем, что остальная часть вашего процесса делает с окружающей средой. Вы можете проверить это сообщение для некоторых больше предложений по получению домашнего каталога с помощью ruby, особенно объяснение Etc.getpwuid.dir (и почему это не работает в Windows). Удивительно, что ruby, который пытается следовать POLS, не предоставляет независимого от платформы пути к этой, казалось бы, простой задаче. - person Patru; 21.05.2014

Чтобы перейти к пути к документу и создать новую папку в OSX, вы можете это сделать.

directory = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, true).first
directory = directory.stringByAppendingPathComponent("Sub Folder")

fileManager = NSFileManager.defaultManager

fileExists = fileManager.fileExistsAtPath(directory)
if (fileExists)
  NSLog("Folder already exists")
else
  if(!fileManager.createDirectoryAtPath(directory, withIntermediateDirectories:true, attributes: nil, error: nil))
    NSLog("Failed to create folder")
  else
    NSLog("Successfully created folder")
  end
end

Если вам нужно только имя учетной записи пользователя, вы можете использовать NSHost


Вместо домашнего каталога вы можете использовать NSHomeDirectory.

fm = NSFileManager.defaultManager
directory = NSSearchPathForDirectoriesInDomains(NSHomeDirectory, NSUserDomainMask, true).first
fm.contentsOfDirectoryAtPath(directory, error: nil).each do |file|
  puts file # outputs each file under the home directory
  // Copy file here using NSFileManager
end

Затем вы можете использовать copyItemAtPath


person ahmet    schedule 22.05.2014
comment
Круто спасибо, буду пробовать! То, что я пытаюсь сделать, это скопировать файл с пути, который исходит из домашнего каталога пользователей, в какой-то другой каталог. Я также не знаю имени файла, поэтому использую подстановочные знаки (*), которые пока не работают... - person Chris Edwards; 22.05.2014