Rails: неверная последовательность байтов в US-ASCII (ошибка аргумента) при запуске rake db:seed

Когда я запускаю rake db:seed в своем приложении Rails, я получаю эту ошибку:

неверная последовательность байтов в US-ASCII (ошибка аргумента)

Я только что добавил science_majors и вниз в свой начальный файл, и теперь, когда я запускаю rake db:seed, я получаю эту ошибку:

ошибка недопустимой последовательности байтов

Почему это так и как я могу это исправить?

часть seeds.rb

@college = College.find_or_create_by_name!('University of Pittsburgh')
if @college.update_attributes(
  url: 'university-of-pittsburgh',
  public: 'Public',
  years: '4-year',
  category: 'National University',
  calendar: 'Semester',
  location: 'Pittsburgh, PA',
  setting: 'Large City (250-500k)',
  retention: '90',
  majors: 'business/marketing: 15%|social sciences: 14%|health professions: 11%|english: 10%|engineering: 9%|psychology: 8%|biology: 7%|history: 5%',
  scholarships_link: 'http://www.oafa.pitt.edu/universityschlrs.aspx',
  map: '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?f=q&amp;source=s_q&amp;hl=en&amp;geocode=&amp;q=university+of+pittsburgh&amp;aq=&amp;sll=40.444261,-79.970448&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=university+of+pittsburgh&amp;t=m&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038&amp;output=embed"></iframe><br /><small><a href="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=university+of+pittsburgh&amp;aq=&amp;sll=40.431368,-79.9805&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=university+of+pittsburgh&amp;t=m&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038" style="color:#0000FF;text-align:left">View Larger Map</a></small>',
  street_view: '<iframe width="425" height="350" frameborder="0" scrolling="no" marginheight="0" marginwidth="0" src="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&amp;aq=0&amp;oq=uni&amp;sll=40.444261,-79.970448&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038&amp;t=m&amp;layer=c&amp;cbll=40.441775,-79.956671&amp;panoid=BgWQKMiSI1fpwP7JUF16Vg&amp;cbp=12,45.25,,0,-3.34&amp;output=svembed"></iframe><br /><small><a href="https://maps.google.com/maps?f=q&amp;source=embed&amp;hl=en&amp;geocode=&amp;q=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&amp;aq=0&amp;oq=uni&amp;sll=40.431368,-79.9805&amp;sspn=0.142165,0.251656&amp;ie=UTF8&amp;hq=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&amp;ll=40.443486,-79.958245&amp;spn=0.010798,0.021038&amp;t=m&amp;layer=c&amp;cbll=40.441775,-79.956671&amp;panoid=BgWQKMiSI1fpwP7JUF16Vg&amp;cbp=12,45.25,,0,-3.34" style="color:#0000FF;text-align:left">View Larger Map</a></small>',
  housing: '<iframe src="http://www.tour.pitt.edu/tour-categories/residence-halls" scrolling="no" height="820" width="900"></iframe>',
  food: '<div style="overflow: hidden; max-width: 1000px;"><iframe scrolling="no" src="http://www.pc.pitt.edu/dining/menus.php" style="margin-left: 0; height: 2000px; margin-top: -370px; margin-bottom: -375px; width: 750px;"></iframe></div>',
  weather: '<div style="overflow: hidden; max-width: 500px;"><iframe scrolling="no" src="http://www.weather.com/weather/wxclimatology/monthly/graph/USPA1290" style="margin-left: -40px; height: 1570px; margin-top: -490px; width: 500px;"></iframe></div>',
  dorms: 'Towers (fr.)|Sutherland (fr.)|Lothrop (fr.)|Nordenberg (fr.)|Holland (fr.)|Forbes (fr.; honors)|McCormick|Brackenridge|Amos|Bruce|Panther|Pennsylvania|Ruskin|Bouquet Gardens|Oakwood Apartments|Centre-Plaza Apartments|Forbes-Craig Apartments (honors)',
  science_majors: 'Actuarial Mathematics|Applied Mathematics|Bioinformatics|Biological Sciences|Chemistry*|Computer Science|Ecology and Evolution|Environmental Geology|Environmental Studies|Geology|History and Philosophy of Science|Linguistics*|Mathematics*|Mathematics-Economics|Mathematics-Philosophy|Microbiology|Molecular Biology|Natural Sciences Area|Neuroscience*|Physics*|Physics and Astronomy|Scientific Computing|Statistics',
  social_science_majors: 'Economics*|Economics–Statistics|History*|Political Science*|Politics-Philosophy|Psychology|Sociology*|Urban Studies',
  humanities_majors: 'Africana Studies*|Africana Studies–English|Anthropology|Chinese*|Classics*|English Literature*|English Writing|Film Studies*|French*|German|History of Art & Architecture|Humanities Area|Italian*|Italian Studies|Japanese*|Liberal Studies|Music*|Philosophy*|Religious Studies*|Russian|Slavic Studies|Spanish|Studio Arts*|Theatre Arts*',
  business_majors: 'Accounting|Finance|General Management|Global Management|Marketing',
  engineering_majors: 'Bioengineering*|Chemical Engineering*|Civil Engineering*|Computer Engineering|Electrical Engineering*|Engineering Physics|Industrial Engineering*|Materials Science and Engineering*|Mechanical Engineering*',
  professional_majors: 'Administration of Justice*|Applied Developmental Psychology|Architectural Studies|Athletic Training|Clinical Dietetics and Nutrition|Communication: Rhet & Comm|Communication Science|Dental Hygiene|Emergency Medicine|Health Information Management|Health Services|Health and Physical Activity|Information Science|Legal Studies*|Media and Professional Communications|Nursing|Pharmacy|Public Service*|Rehabilitation Science|Social Work*'
)
else
  # handle validation errors
end

@college= College.find_or_create_by_name!('Harvard')
if @college.update_attributes(
  url: 'harvard',
  public: 'Private',
  years: '4-year',
  category: 'National University',
  calendar: 'Semester',
  location: 'Cambridge, MA',
  setting: 'Small City (50-250k)',
  degrees: 'Bachelors, Masters, Doctoral',
  rotc: 'Air Force, Army, Navy',
  considered: 'Academic GPA|Alumni Relation|Application Essay|Character/Personal Qualities|Extracurricular Activities|First Generation College Student|Geographical Residence|Interview|Racial/Ethnic Status|Recommendations|Rigor of secondary school record|Standardized Test Scores|Talent/Ability|Volunteer Work|Work Experience',
  student_faculty: '7 to 1')
else
  # handle validation errors
end

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

Редактировать: я попытался удалить * в science_majors вниз, а затем запустить rake db:seed, но это ничего не изменило.


person Adam Zerner    schedule 10.06.2013    source источник


Ответы (6)


Вы получаете сообщение об ошибке кодирования, потому что ваша файловая система не настроена для кодирования добавленной вами даты (поскольку, предположительно, она включает новые символы — возможно, в URL-адрес карты, закодированный в вашем HTML-объекте, — которых не было в вашем предыдущем начальном числе данных) .

Следующее должно устранить эту ошибку, установив локаль UTF-8 на вашем компьютере:

# from your command line
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
bundle

Преимущество установки языкового стандарта системы заключается в том, что все драгоценные камни (в будущем) будут связаны с использованием кодировки UTF-8.

РЕДАКТИРОВАТЬ:

В качестве альтернативы, если вы не хотите менять системную кодировку, вы можете установить свою кодировку для всего проекта, указав стандарт кодирования в вашем Gemfile:

if RUBY_VERSION =~ /1.9/ # assuming you're running Ruby ~1.9
  Encoding.default_external = Encoding::UTF_8
  Encoding.default_internal = Encoding::UTF_8
end
person zeantsoi    schedule 10.06.2013
comment
Рад, что это помогло. Если вы выберете этот подход, убедитесь, что все среды, в которых вы развернули свой проект, имеют локали, установленные на UTF-8. В противном случае вам нужно будет добавить #encoding utf-8 в начало вашего файла, чтобы убедиться, что он правильно закодирован, как проницательно отмечает другой автор. - person zeantsoi; 11.06.2013
comment
на самом деле я просто пытался удалить #encoding utf-8 и сделать то, что вы сказали, но это не сработало. ~/collegeanswers >> export LANG=en_US.UTF-8 ~/collegeanswers >> export LC_ALL="en_US.UTF-8" ~/collegeanswers >> bundle Using rake (10.0.4) . . Using i18n (0.6.1) Your bundle is complete! Use bundle show [gemname]`, чтобы увидеть, где установлен драгоценный камень в комплекте. ~/collegeanswers ›› rake db:seed rake aborted!` знаете почему? - person Adam Zerner; 11.06.2013
comment
В чем ваша rake ошибка? Ваши существующие гемы, вероятно, еще не настроены для работы с кодировкой вашей файловой системы. Попробуйте bbundle exec gem uninstall i18n, затем bundle install. - person zeantsoi; 11.06.2013
comment
моя ошибка рейка была invalid byte sequence in US-ASCII (ArgumentError) . Я только что попробовал то, что вы сказали, и получил ту же ошибку. - person Adam Zerner; 11.06.2013
comment
Вы перезапустили свой веб-сервер? Обновлен мой ответ, чтобы предоставить больше возможностей для достижения того, чего вы пытаетесь достичь. - person zeantsoi; 11.06.2013
comment
Я не знаю, что это значит. Тем не менее, я делал control + c, чтобы перемещаться между рельсами вперед и назад. - person Adam Zerner; 11.06.2013
comment
давайте продолжим это обсуждение в чате - person Adam Zerner; 11.06.2013
comment
Вместо этого поместите это в свой ~/.bash_profile (или соответствующий файл, в зависимости от ваших настроек). Также измените часть en_US в зависимости от вашего языка (здесь "en") и региона (здесь "US"). - person Joe Eifert; 13.10.2016

Добавлять

#encoding: utf-8

вверху файла

person BvuRVKyUVlViVIc7    schedule 10.06.2013
comment
Почему мне нужно сделать это сейчас, а раньше мне не нужно было? - person Adam Zerner; 10.06.2013
comment
Я только что попробовал, и это сработало, так что спасибо! Но я все еще хотел бы знать, почему все работало раньше, и теперь мне нужно добавить это, чтобы это заработало. - person Adam Zerner; 10.06.2013
comment
Возможно, вы добавили в свой файл какие-то специальные знаки utf-8 .. :) - person BvuRVKyUVlViVIc7; 10.06.2013
comment
Я только что прочитал обновления ответа другого парня, и на самом деле он более полный, поэтому я отмечу его как принятый ответ, но я все равно очень ценю вашу помощь! - person Adam Zerner; 11.06.2013

Вы также можете попробовать export RUBYOPT="-KU -E utf-8:utf-8", как указано в этой теме GH.

person lanwen    schedule 02.10.2015
comment
Спасибо! Это единственное, что помогло с shotgun-0.9.1/bin/shotgun:94:in `[]': invalid byte sequence in US-ASCII (ArgumentError) - person Slava V; 30.08.2016

Если у вас возникла эта проблема в контейнере ruby ​​docker, вы можете установить LANG=C.UTF-8:

docker run -it --rm -e LANG=C.UTF-8 ruby ...

или посмотреть этот выпуск.

person laktak    schedule 19.08.2016
comment
или, как видно из ссылки в этом ответе, при создании собственного образа Docker добавьте «ENV LANG=C.UTF-8» в свой файл Docker - person Alex; 01.09.2020

Как и другие, я добавил #encoding: utf-8 в начало моего (в данном случае seed.rb) файла, но так и не смог заставить работать задачу rake.

Интересно, что друг порекомендовал мне удалить дополнительные комментарии, сгенерированные rails, из верхней части начального файла, чтобы осталось только #encoding: utf-8.

Что бы вы знали - это сработало.

person cheshireoctopus    schedule 22.10.2013

В вашем начальном файле есть недопустимый символ, в моем случае изменение одинарных кавычек с ` на ' сработало.

person Aldo Solis Zenteno    schedule 20.03.2014