Java có tính thuận tiện System.getProperty("user.home")
để nhận thư mục "nhà riêng" của người dùng theo cách độc lập với nền tảng. Tương đương với Ruby là gì? Tôi không có một hộp Windows để chơi xung quanh với, và tôi cảm thấy như dựa vào tildes trong tên tập tin không phải là cách sạch nhất. Có lựa chọn thay thế nào không?Phương tiện đa nền tảng để nhận thư mục chính của người dùng trong Ruby?
Trả lời
Phương pháp File.expand_path
sử dụng quy ước Unix điều trị các dấu ngã (~
) đặc biệt, do đó ~
đề cập đến thư mục home của người dùng hiện tại và ~foo
đề cập đến thư mục home foo
's.
Tôi không biết nếu có cách nào tốt hơn hay thành ngữ hơn, nhưng File.expand_path('~')
sẽ giúp bạn tiếp tục.
ENV["HOME"]
hoặc ENV["HOMEPATH"]
sẽ cung cấp cho bạn những gì bạn muốn.
homes = ["HOME", "HOMEPATH"]
realHome = homes.detect {|h| ENV[h] != nil}
if not realHome
puts "Could not find home directory"
end
là đúng trên Windows, tho? – davetron5000
Tôi tin rằng đó là: http://vlaurie.com/computers2/Articles/environment.htm –
@ davetron5000 Đó là những gì mã của tôi đang làm, 'HOMEPATH' là một biến môi trường chỉ trên Windows. –
Với Ruby 1.9 trở lên, bạn có thể sử dụng Dir.home
.
Trên nền tảng Unix (Linux, OS X, v.v.), ENV["HOME"]
, File.expandpath('~')
hoặc Dir.home
tất cả đều dựa vào biến môi trường HOME
đang được đặt. Nhưng đôi khi bạn sẽ thấy rằng biến môi trường không được đặt - điều này là phổ biến nếu bạn đang chạy từ tập lệnh khởi động hoặc từ một số trình lập lịch biểu hàng loạt. Nếu bạn đang ở trong tình huống này, bạn vẫn có thể nhận được đúng thư mục chính của mình thông qua các mục sau:
require 'etc'
Etc.getpwuid.dir
Có câu hỏi này là yêu cầu phương pháp "đa nền tảng" cần lưu ý rằng sẽ không hoạt động trên Windows (Etc.getpwuid
sẽ trở lại nil
ở đó.) trên Windows, ENV["HOME"]
và các phương pháp nêu trên mà dựa vào nó sẽ làm việc, mặc dù HOME
biến không được phổ biến thiết lập trên Windows - khởi động cực nhanh, Ruby sẽ điền vào ENV["HOME"]
dựa trên các cửa sổ HOMEPATH
và HOMEDRIVE
biến môi trường. Nếu các cửa sổ HOMEDRIVE
và HOMEPATH
các biến môi trường không được đặt thì điều này sẽ không hoạt động. Tôi không biết làm thế nào phổ biến mà thực sự là trong môi trường Windows, và tôi không biết về bất kỳ thay thế mà hoạt động trên Windows.
Đây là câu trả lời đúng. Cảm ơn con trỏ tới mô-đun v.v. – ckruse
- 1. Bộ công cụ giao diện người dùng đa nền tảng
- 2. Đường dẫn thư mục Desktop đa nền tảng?
- 3. Cách đa nền tảng để nhận thư mục tạm thời bằng Python
- 4. Chỉ nhận phương tiện của người dùng (ảnh) - Twitter API
- 5. Thư viện vẽ đa nền tảng
- 6. iOS: Nhận phương tiện trong nền
- 7. Thư viện C++ nào dùng để viết một dịch vụ đa nền tảng/daemon?
- 8. Sử dụng Windows nền tảng phương tiện truyền thông
- 9. Chuyển các thư viện C++ đa nền tảng sang nền tảng Windows Phone 8
- 10. Cách tốt nhất để tìm thư mục nhà của người dùng trong Java là gì?
- 11. Nhận wkhtmltopdf để nhận ra thư mục phông chữ của người dùng
- 12. Là nền tảng thư mục .git?
- 13. BitVM bitcode đa nền tảng
- 14. Tôi làm cách nào để tìm thư mục chính của người dùng theo cách thức nền tảng chéo, sử dụng C++?
- 15. SCTP: bất kỳ thư viện đa nền tảng nào?
- 16. Python có bộ công cụ GUI đa nền tảng sử dụng các tiện ích gốc không?
- 17. Công cụ biên soạn người dùng cuối hỗ trợ đa nền tảng
- 18. Nhận thư mục chính trong Linux, C++
- 19. Truy cập webcam đa nền tảng
- 20. Làm cách nào để tìm thư mục chính của người dùng trong Perl?
- 21. Thư viện đầu vào nhẹ, đa nền tảng
- 22. Nền tảng giải pháp tích cực VS Nền tảng dự án VS Mục tiêu nền tảng
- 23. Làm cách nào để ngăn tiện ích 'gem' truy cập vào thư mục chính của tôi?
- 24. Lấy đường dẫn của thư mục chính trong C#?
- 25. Một cách đa nền tảng phổ quát (di động) để hiển thị cảnh báo cho người dùng
- 26. thư viện nền tảng Java hashCode
- 27. cách mở tệp trong thư mục nhà của người dùng
- 28. Bộ hẹn giờ nhanh, đa nền tảng?
- 29. ios nhận số lần phát cho các mục trong thư viện phương tiện
- 30. Làm cách nào để bạn thêm các mục vào danh mục "Phương tiện của người dùng" trong cửa sổ "Thư viện" của Trình xây dựng giao diện?
là đúng trên Windows, tho? Các tài liệu không chỉ ra là như vậy – davetron5000
Dir.home thêm vào Ruby 1.9.? http://redmine.ruby-lang.org/issues/show/1027 – codecraig
Mọi thứ trên trang này hoạt động (ít nhất là trên Windows 7), nhưng tôi nghĩ Dir.home và sử dụng dấu ngã dường như là tốt nhất. – davetron5000