2013-04-11 1 views
22

После обновления до ruby ​​1.9.3 одно из моих приложений работает нормально, но второе, которое я пытаюсь преобразовать, не выполняется на этапе «активы: прекомпиляция», когда я пытаюсь развертывать с capistrano. Вот StackTrace:Неудачные задачи рейка с неправильной последовательностью байтов в US-ASCII

rake aborted! 
    rake aborted! 
    invalid byte sequence in US-ASCII 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/trace_output.rb:16:in `block in trace_on' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/trace_output.rb:14:in `map' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/trace_output.rb:14:in `trace_on' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:328:in `trace' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:183:in `display_error_message' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:169:in `rescue in standard_exception_handling' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:159:in `standard_exception_handling' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:88:in `load_rakefile' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:72:in `block in run' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:160:in `standard_exception_handling' 
    /Users/george/.rvm/gems/[email protected]/gems/rake-10.0.4/lib/rake/application.rb:70:in `run' 
    /Users/george/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `eval' 
    /Users/george/.rvm/gems/[email protected]/bin/ruby_noexec_wrapper:14:in `<main>'  

Я прочитал многочисленные сообщения и попытался несколько предложений, но безрезультатно. Я попытался добавить следующее в верхней части моей Gemfile:

if RUBY_VERSION =~ /1.9/ 
    Encoding.default_external = Encoding::UTF_8 
    Encoding.default_internal = Encoding::UTF_8 
end 

Но это не имеет никакого значения.

Я проверил LANG и LC_ALL переменные среды следующим образом

$ echo $LC_ALL 
en_NZ.UTF-8 

$ echo $LANG 
en_NZ.UTF-8 

Я боюсь, что я действительно не понимаю, сообщение на всех, и я не знаю, как определить файл, который имеет проблемы.

Я не могу запустить любую команду рейка - она ​​дает ту же ошибку.

Обратите внимание, что я могу отлично запускать приложение в режиме разработки.

+0

После случайного поиска файлов в проекте. Я решил, что, поскольку сообщение об ошибке не указывало имя файла для проблемы, возможно, это было связано с самим рейком. Исправлена ​​проблема с удаленной задачей, содержащей жестко кодированные данные для базы данных. – giorgio

ответ

30

Добавить

#encoding: utf-8 

к первой строке Rakefile (или любой другой файл имеет странные символы)

+1

Но как найти файл, который есть? – giorgio

+0

Спасибо, fotanus !!! Также @giorgio файл называется 'Rakefile' – Trip

+2

Нет проблемного файла не Rakefile. Это было бы легко !. У меня была одна из моих проблем с рейком. – giorgio

1

Убедитесь, что вы не печатаете в файле в ромадзи (японский). Или настройку английского символа для какого-либо другого языка, отличного от US-ASCII.

Я попробовал запустить rake db: seed и получил аналогичную ошибку. Оказывается, я набирал свой файл семени в японских римских персонажах. Я забыл изменить свой ввод на клавиатуре обратно в США, прежде чем работать над моим проектом.

+0

как вы его исправили? –

+1

@BrenoSalgado он скорее всего добавит правильную кодировку в верхней части своего файла или удалит символы из его файла семени. – fotanus

+0

@BrenoSalgado Yea Я просто удалил персонажей, которые я набрал в Romaji, вернусь на US English и перепечатал их. – user2031423

5

Отслеживать файл (-ы) рейка при ошибке по , удаляя один за другим.

т.е. файлов в Lib/задач/delete_me.rake

Затем снова грабли или перезапускать, который когда-либо давал вам вопрос. Когда проблема исчезнет сделайте git diff, чтобы узнать, какой файл был виновником, и с вашим любимым редактором измените кодировку файла.

т.е.

ВИМ Библиотека/Задачи/delete_me.rake :. Установить fileencoding = UTF-8 : WQ

Затем повторно грабли, и вы должны вернуться в службе.

1

У меня была аналогичная проблема, и «ошибка» была по моему имени: она содержит символ US-ASCII (ö). Это было напечатано в файле setup.rb и вызвало проблемы. Я изменил его на «oe», и он отлично работал.

Я пошлю электронную почту к BitNami, чтобы он изменил как-то

2

Первый запуск

$ sudo gem install magic_encoding 

Затем перейдите в папку и запустить

$ magic_encoding 

Готов!

+0

Welp Я сделал это, и он не работал .. –

+0

Это работа для меня, спасибо! – Vsevolod

0

Я получал аналогичную ошибку, пытаясь выполнить любую команду rake (я использую Rails 3.2 с Ruby 1.9.3). Я пробовал все решения выше, без каких-либо успехов. Позже я узнал, что я был особым камнем, который вызывал ошибку (в моем случае это был камень Faker, который был обновлен несколько дней назад). Я удалил драгоценный камень (он не использовался), и все стало работать! Итак, мой совет: если вы столкнетесь с такой проблемой, и ни одно из перечисленных здесь решений не будет выполнено, проверьте версию каждого драгоценного камня и посмотрите, обновлен ли какой-либо из них. Попробуйте удалить их или установить совместимую версию.

Смежные вопросы