Problemas ao executar o script ruby ​​como tarefa cron

0

Eu tenho um script ruby ​​que eu quero executar como cron job.It executa perfeitamente quando eu executar o prompt de comando em uma máquina linux. Mas quando eu executo o mesmo script usando um trabalho cron, ele falha.

Eu recebo o seguinte erro com a codificação de string. Não sei por que ele só reclama quando estou executando como um trabalho cron. Também configurei meu shell como / bin / bash no crontab, que é o mesmo shell do meu prompt de comando.

O erro que recebo é

em `encode ':" \ xE2 "em US-ASCII (Encoding :: InvalidByteSequenceError)

a linha de código que causa o erro é

split.encode('utf-8).split(some_str)
Konquestor
fonte

Respostas:

0

A mensagem de erro informa que você definiu, no crontabambiente, US-ASCII como seu idioma e que nesse idioma a cadeia "\ xE2" não existe. Provavelmente, isso se deve ao fato de a sequência ser codificada em ASCII-8 bits, enquanto você precisa convertê-la em UTF-8.

É possível que a sequência tenha sido contaminada por algum caractere invisível, como acontece frequentemente quando você recorta e cola.

A seguir, a ser aplicado antes de manipular a corda, deve resolver o seu problema:

  new_str = some_str.encode('utf-8', 'binary', :invalid => :replace, :undef => :replace, :replace => '')
MariusMatutiae
fonte