Как работать с windows путями из под nix в руби?

собственно я немного в ступоре.
Из под nix (ubuntu) скрипт работает с разными путями, пути могут быть как никсовые, так и виндовые.
С никсами проблем нет
nix_path = Pathname.new '/nix/path/ok/file.txt'
nix_path.basename # => <Pathname:file.txt> 
nix_path.parent # => <Pathname:/nix/path/ok>

А с виндой беда..
win_path = Pathname.new 'C:\win\path\file.txt'
win_path.basename # => <Pathname:C:\win\path\file.txt> 
win_path.parent # => <Pathname:.>

Тоже самое касается и использование File
File.basename 'C:\win\path\file.txt' # => "C:\\win\\path\\file.txt"


Как быть?
  • Вопрос задан
  • 146 просмотров
Решения вопроса 1
@vsuhachev
win_path = Pathname.new 'C:\win\path\file.txt'.tr('\\', '/')


А так вообще концептуально вы неверно используете Pathname т.к. его реализация системно-зависимая. Поэтому лучше им пользоваться для родных для текущей ОС путей. А для путей из вашей предметной области (Unix/Win/etc) написать отдельные классы которые делают все так как вам нужно
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы