Rails неверный байт, выполняющий любой скрипт - PullRequest
1 голос
/ 02 февраля 2012

Не могу понять это, пытаясь запустить любой скрипт. Я получаю эту ошибку:
invalid byte sequence in UTF-8 (ArgumentError)

У меня новая машина с OS X, все свежее, с использованием Ruby 1.9.3и Rails 3.2.1, я работал без проблем несколько дней.

Сегодня я ушел на несколько часов и теперь не могу запускать скрипты.

Сначала я получилошибка при попытке новой миграции и думал, что это проблема с Postgres, переустановил, убедился, что все таблицы были закодированы с UTF-8.

Я также переустановил RVM и Rails.

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

Полный стек пытается запустить сервер вновое приложение на sqlite3


/Users/mgaughan/.rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:136:in `split': invalid byte sequence in UTF-8 (ArgumentError)
    from /Users/mgaughan/.rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:136:in `setup_environment'
    from /Users/mgaughan/.rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.21/lib/bundler/runtime.rb:13:in `setup'
    from /Users/mgaughan/.rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.21/lib/bundler.rb:110:in `setup'
    from /Users/mgaughan/.rvm/gems/ruby-1.9.3-p0@global/gems/bundler-1.0.21/lib/bundler/setup.rb:7:in `'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `require'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:59:in `rescue in require'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:35:in `require'
    from /Users/mgaughan/Code/something/config/boot.rb:6:in `'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
    from script/rails:5:in `'

Теперь, чем больше я смотрю на него, тем, очевидно, что-то напортачило с postgresql, потому что в приложениях на postgresql не удается установить пакет pg

Stack trace:


Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb 
checking for pg_config... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --ruby=/Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/bin/ruby
    --with-pg
    --without-pg
    --with-pg-dir
    --without-pg-dir
    --with-pg-include
    --without-pg-include=${pg-dir}/include
    --with-pg-lib
    --without-pg-lib=${pg-dir}/lib
    --with-pg-config
    --without-pg-config
    --with-pg_config
    --without-pg_config
/Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:1357:in `split': invalid byte sequence in UTF-8 (ArgumentError)
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:1357:in `find_executable0'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:1384:in `block in find_executable'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:790:in `block in checking_for'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:284:in `block (2 levels) in postpone'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:284:in `block in postpone'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:254:in `open'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:280:in `postpone'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:789:in `checking_for'
    from /Users/mgaughan/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/mkmf.rb:1383:in `find_executable'
    from extconf.rb:27:in `'


Gem files will remain installed in /Users/mgaughan/.rvm/gems/ruby-1.9.3-p0/gems/pg-0.12.2 for inspection.
Results logged to /Users/mgaughan/.rvm/gems/ruby-1.9.3-p0/gems/pg-0.12.2/ext/gem_make.out
An error occured while installing pg (0.12.2), and Bundler cannot continue.
Make sure that `gem install pg -v '0.12.2'` succeeds before bundling.

mkmf.log файл, который упоминается для проверки, пуст.

Так что я предполагаю, что Postgresql может быть причиной этой проблемы, но я довольно озадачен тем, почему новое приложение, использующее sqlite3, все равно выдаст эту ошибку байта..

Буду признателен за любую помощь, дайте мне знать, если есть какая-либо дополнительная информация, которую я могу предоставить.

Редактировать

Проблема, похоже, решилась сама собой.

Единственное изменение в моей машине, которое я сделал, было, как предложил @Frederick Cheung;Я удалил папку sbin из своего пути, которая была из старой установки NGINX, которая была удалена.

Возможно, в этом была разница, но мне она кажется маловероятной.

Несмотря на это, я запустилКоманда и все работало нормально и было в течение нескольких дней.

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Судя по трассировке стека, переменная окружения PATH содержит некоторые нежелательные данные. Я бы начал с проверки и удаления всего, что не похоже на принадлежащее ему

0 голосов
/ 02 февраля 2012

Содержат ли какие-либо инициализаторы или конфиги среды (application.rb, development.rb и т. Д.) Недопустимые символы?

Часто это происходит, если вы взяли файл javascript из сети, в заголовке которого есть прикольные символы. Если вы включите его в application.js, то синтаксический анализатор Sprockets выбрасывает об этом колебания.

В данном случае это выглядит так, как будто вы пытаетесь запустить свое приложение, поэтому мне кажется, что это недопустимый символ в одном из файлов, который используется во время инициализации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...