Перво-наперво - спасибо за отличный инструмент :+1:
Сейчас я использую Windows (да...) и пытаюсь выполнить развертывание с помощью Mina.
Я обнаружил, что сгенерированный сценарий bash в Windows Git Bash (стандартная оболочка mingw32) имеет окончания строк CRLF, но Linux использует LF, поэтому возникают такие ошибки, как «Неожиданный EOF».
Я записываю этот сгенерированный скрипт в файл, конвертирую окончания строк в LF и использую его вручную - все работает нормально.
Это функция Mina, ошибка mingw32 или неправильная конфигурация? :)
Хм. Вы пытаетесь выполнить развертывание на сервере Windows или работаете на рабочей станции Windows?
Спасибо за предупреждение — к сожалению, сейчас у нас нет компьютера с Windows для тестирования, но я полагаю, что мы можем поработать над некоторыми гипотетическими исправлениями.
У меня такая же проблема. На Win7x64 попытка развернуть на CentOS
bash: -c line 106: unexpected EOF while looking for a matching `"'
У одного из моих коллег также возникла эта проблема при развертывании на сервере Ubuntu. Он на Vista (без комментариев) с Git Bash (mingw32), а мы используем Mina 0.3.0.
Я получил ту же ошибку, что и @rezen в Windows 8.1 x64, пытаясь развернуть Ubuntu LTS 12.04.3 x64.
@reterius у меня такая же ошибка в windows.
Как записать этот сгенерированный скрипт в файл, преобразовать окончания строк в LF и использовать его вручную?
Теперь я знаю, почему.
Метод Shellwords.escape для Ruby не поддерживает среду Windows.
Итак, чтобы это исправить, я добавил немного кода в lib/mina.rb.
Оно работает!
Я новичок, так что.... но в любом случае, это работает.
# lib/mina.rb
module Mina
#if windows os
require 'rbconfig'
is_windows = (RbConfig::CONFIG['host_os'] =~ /mswin|mingw|cygwin/)
if is_windows
module Shellwords
def shellescape(str)
'"' + str.gsub(/\\(?=\\*\")/, "\\\\\\").gsub(/\"/, "\\\"").gsub(/\\$/, "\\\\\\").gsub("%", "%%") + '"'
end
module_function :shellescape
class << self
alias escape shellescape
end
end
end
...
работает отлично !! не новичок....эксперт
Этот твик попал в кодовую базу?
Поможет ли решить эту проблему, если я добавлю исправление @insub в запрос на вытягивание?
@coredevelopers : есть ли причина, по которой это не поднимается? Решение insub работает. Почему бы не сделать небольшие исправления для поддержки сообщества Windows?
Это действительно работает. Спасибо!
Может ли кто-нибудь протестировать мастер github, если это работает?
Самый полезный комментарий
Теперь я знаю, почему.
Метод Shellwords.escape для Ruby не поддерживает среду Windows.
Итак, чтобы это исправить, я добавил немного кода в lib/mina.rb.
Оно работает!
Я новичок, так что.... но в любом случае, это работает.