Я испытал некоторую боль при работе с «дорожкой» при разработке драгоценного камня. Вот структура папокКакова наилучшая практика для чтения файла (под lib) при разработке драгоценного камня?
производство кода:
lib/gem_name/foo/templates/some_template.erb
lib/gem_name/foo/bar.rb
тест-кода:
test/gem_name/foo/bar_test.rb
В bar.rb, я прочитал шаблон по:
File.read("templates/some_template.erb") => Errno::ENOENT: No such file or directory
, когда я запустите тестовый блок в bar_test.rb в RubyMine, он дает мне ошибку:
Errno::ENOENT: No such file or directory - D:/.../test/gem_name/foo/templates/some_template.erb
Очевидно, что теств пути не так.
Моим вопрос является,
- Как бороться с этими вопросами?
- Что такое наилучшая практика для обработки такой путь проблема при разработке драгоценного камня?
Edit:
Поскольку __FILE__
только возвращает путь к файлу написано, в настоящее время я определяю fname
(см @ ответ ckruse в) как функции в каждом файле, мне нужно это. Это работает, но это не изящно. Возможно, у кого-то будет лучшее решение, чем у меня на этом. Если да, то пожалуйста, дайте мне знать :)
Спасибо @ckruse. Я знаю, что могу это сделать, но я не уверен, что это хорошая практика, так как каждый раз, когда мне нужно загрузить файл, мне нужно написать 'File.dirname (__ FILE__) +" /templates/xxxx.xxx "' , Кажется немного подробным. –
Это инкапсуляция для ;-) написать функцию, возвращающую правильный путь. Я редактирую решение для этого. – ckruse
Есть ли у вас какие-либо предложения о том, где и как разместить такие методы? Я думаю, что этот метод будет использоваться как в производственных кодексах, так и в тестовых кодах. –