Я пытаюсь создать свой первый шаблон приложения Rails, и у меня возникла небольшая проблема с методом copy_file
.
Сначала немного предыстории .... Очевидно, что пакет Ruby OpenSSL не поставляется с хранилищем CA, поэтому любая попытка подключиться к службе HTTPS не удастся выполнить из коробки. Обходной путь (для приложений Rails 3) - добавить строку OpenSSL::SSL::VERIFY_PEER = OpenSSL::SSL::VERIFY_NONE
в начало вашего файла config/environment.rb
. Мне нужно сделать это на лету в моем шаблоне, чтобы я мог установить jQuery.
Итак, я все понял, моя общая мысль:
- Сделайте резервную копию моего
config/environment.rb
файла.
- Добавить данные к оригиналу
- Выполнить задачу
jquery:install --ui
- Восстановить исходный файл
config/environment.rb
.
См. мой шаблон Gist , строки 25..34 - соответствующий раздел.
Так что все это работает до шага # 4, который завершается ошибкой с Error: Could not find "env.orig" in any of your source paths
в строке # 31.
Это ОЧЕНЬ сбивает с толку, потому что строка # 28 работает, я вижу файл env.orig
на диске, так почему же не работает обратный ход?
Что я делаю не так?
Обновление 1:
После просмотра источника Thor thor\actions.rb
выяснилось, что Thor использует разные пути (не путь к текущему проекту) для источника и места назначения. Кроме того, моя копия на самом деле не работала, она фактически копировала файл шаблона ERB, а не уже сгенерированный файл.
После передышки мне пришло в голову использовать правильный инструмент для работы , так что теперь у меня есть: run 'cp environment.rb environment.~'
и run 'mv environment.~ environment.rb'
, который работает просто отлично. Я совершенно уверен, что это не будет работать на коробке с Windows без установленных инструментов Unix, но я могу жить с этим. У кого-нибудь есть лучше способ?