ruby on rails - run - secuencia de bytes inválida en US-ASCII(Error de argumento) cuando ejecuto rake db: seed en Rails
ruby on rails run migrations (6)
Cuando ejecuto rake db:seed
en mi aplicación Rails
, obtengo este error:
secuencia de bytes inválida en US-ASCII (Error de argumento)
Acabo de agregar science_majors
y bajar a mi archivo semilla, y ahora cuando ejecuto rake db:seed
me da este error:
error de secuencia de bytes inválidos
¿Por qué es esto y cómo puedo solucionarlo?
parte de 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&source=s_q&hl=en&geocode=&q=university+of+pittsburgh&aq=&sll=40.444261,-79.970448&sspn=0.142165,0.251656&ie=UTF8&hq=university+of+pittsburgh&t=m&ll=40.443486,-79.958245&spn=0.010798,0.021038&output=embed"></iframe><br /><small><a href="https://maps.google.com/maps?f=q&source=embed&hl=en&geocode=&q=university+of+pittsburgh&aq=&sll=40.431368,-79.9805&sspn=0.142165,0.251656&ie=UTF8&hq=university+of+pittsburgh&t=m&ll=40.443486,-79.958245&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&source=embed&hl=en&geocode=&q=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&aq=0&oq=uni&sll=40.444261,-79.970448&sspn=0.142165,0.251656&ie=UTF8&hq=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&ll=40.443486,-79.958245&spn=0.010798,0.021038&t=m&layer=c&cbll=40.441775,-79.956671&panoid=BgWQKMiSI1fpwP7JUF16Vg&cbp=12,45.25,,0,-3.34&output=svembed"></iframe><br /><small><a href="https://maps.google.com/maps?f=q&source=embed&hl=en&geocode=&q=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&aq=0&oq=uni&sll=40.431368,-79.9805&sspn=0.142165,0.251656&ie=UTF8&hq=University+of+Pittsburgh,+4200+Fifth+Ave,+Pittsburgh,+PA&ll=40.443486,-79.958245&spn=0.010798,0.021038&t=m&layer=c&cbll=40.441775,-79.956671&panoid=BgWQKMiSI1fpwP7JUF16Vg&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
Olvidé todas las otras universidades. Hasta ahora, tengo 200 escuelas, pero hasta ahora Pitt es el único con datos completos. El resto solo tiene datos básicos, como Harvard. También dejé algunos de los datos de Pitt en aras de la brevedad, pero avíseme si desea que incluya el resto.
Editar: Traté de eliminar los *
en science_majors
en down y luego ejecutar rake db:seed
, pero eso no cambió nada.
Añadir
#encoding: utf-8
en la parte superior del archivo
Al igual que otros sugirieron, agregué #encoding: utf-8
a la parte superior de mi archivo (en este caso, seed.rb), pero aún no pude hacer funcionar la tarea de rake.
Curiosamente, un amigo me recomendó que elimine los comentarios adicionales generados por los rieles de la parte superior del archivo inicial, de modo que solo #encoding: utf-8
.
¿Qué sabrías? Funcionó.
Está recibiendo un error de codificación porque su sistema de archivos no está configurado para codificar la fecha que ha agregado (ya que presumiblemente incluye nuevos caracteres, posiblemente en su URL de mapa codificada por entidad HTML, que no existía en su semilla de datos anterior) .
La siguiente voluntad debería resolver este error configurando la configuración regional UTF-8 en su máquina:
# from your command line
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
bundle
La ventaja de establecer una configuración regional del sistema es que todas las gemas (en adelante) se agruparán utilizando la codificación UTF-8.
EDITAR:
Alternativamente, si no desea cambiar la codificación de su sistema, puede establecer su codificación en todo el proyecto especificando un estándar de codificación en su 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
Hay un caracter no válido en su archivo semilla, en mi caso cambiando las comillas simples de `to ''resueltas.
Si tiene este problema en un contenedor de Ruby Docker, puede establecer LANG=C.UTF-8
:
docker run -it --rm -e LANG=C.UTF-8 ruby ...
También puedes intentar export RUBYOPT="-KU -E utf-8:utf-8"
como se menciona en este hilo de GH