Rails: ลำดับไบต์ไม่ถูกต้องใน US-ASCII (Argument Error) เมื่อฉันเรียกใช้ rake db: seed


87

เมื่อฉันรันrake db:seedในRailsแอพฉันได้รับข้อผิดพลาดนี้:

ลำดับไบต์ไม่ถูกต้องใน US-ASCII (Argument Error)

ฉันเพิ่งเพิ่มscience_majorsและลงในไฟล์ seed ของฉันและตอนนี้เมื่อฉันเรียกใช้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 แห่ง แต่ Pitt เป็นเพียงแห่งเดียวที่มีข้อมูลครอบคลุม ส่วนที่เหลือก็มีข้อมูลพื้นฐานเช่นเดียวกับฮาร์วาร์ด ฉันยังทิ้งข้อมูลบางส่วนของพิตต์ไว้เพื่อความกะทัดรัด แต่โปรดแจ้งให้เราทราบหากคุณต้องการให้ฉันรวมส่วนที่เหลือ

แก้ไข: ฉันลองเอา*ของในscience_majorsลงแล้วเรียกใช้rake db:seedแต่ก็ไม่ได้เปลี่ยนแปลงอะไร

คำตอบ:


185

คุณได้รับข้อผิดพลาดในการเข้ารหัสเนื่องจากระบบไฟล์ของคุณไม่ได้กำหนดค่าให้เข้ารหัสวันที่ที่คุณเพิ่ม (เนื่องจากน่าจะมีอักขระใหม่ซึ่งอาจอยู่ใน URL แผนที่ที่เข้ารหัสเอนทิตี HTML ของคุณซึ่งไม่มีอยู่ใน data seed ก่อนหน้านี้) .

สิ่งต่อไปนี้ควรแก้ไขข้อผิดพลาดนี้โดยการตั้งค่าภาษา 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

1
ดีใจที่ช่วยได้ หากคุณใช้แนวทางนี้ตรวจสอบให้แน่ใจว่าสภาพแวดล้อมทั้งหมดที่คุณปรับใช้โครงการของคุณมีโลแคลถูกตั้งค่าเป็น UTF-8 มิฉะนั้นคุณจะต้องเพิ่ม#encoding utf-8ที่ด้านบนของไฟล์เพื่อให้แน่ใจว่ามีการเข้ารหัสอย่างถูกต้องตามที่ผู้โพสต์รายอื่นบันทึกไว้อย่างชัดเจน
zeantsoi

ฉันเพิ่งลองลบ #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 บันเดิลแสดง [gemname] `เพื่อดูตำแหน่งที่ติดตั้งเจมที่รวมไว้ ~ / collegeanswers >> rake db: Seed rake ถูกยกเลิก! `รู้ไหมว่าทำไม?
Adam Zerner

rakeข้อผิดพลาดของคุณคืออะไร? อัญมณีที่มีอยู่ของคุณอาจยังไม่ได้รับการกำหนดค่าให้ทำงานกับการเข้ารหัสระบบไฟล์ของคุณ ลองแล้วbbundle exec gem uninstall i18n bundle install
zeantsoi

invalid byte sequence in US-ASCII (ArgumentError) ข้อผิดพลาดของฉันคือการเสาะหา ฉันเพิ่งลองสิ่งที่คุณพูดและได้รับข้อผิดพลาดเดียวกัน
Adam Zerner

คุณรีสตาร์ทเว็บเซิร์ฟเวอร์หรือไม่ อัปเดตคำตอบของฉันเพื่อให้มีตัวเลือกเพิ่มเติมในการทำสิ่งที่คุณพยายามบรรลุ
zeantsoi

64

เพิ่ม

#encoding: utf-8

ที่ด้านบนสุดของไฟล์


ทำไมต้องทำตอนนี้ แต่ก่อนไม่ต้องทำ
Adam Zerner

ฉันเพิ่งลองใช้และมันได้ผลขอบคุณมาก! แต่ฉันก็ยังอยากรู้ว่าทำไมทุกอย่างถึงใช้งานได้ก่อนหน้านี้และตอนนี้ฉันต้องเพิ่มสิ่งนั้นเพื่อให้มันทำงาน
Adam Zerner

1
บางทีคุณอาจจะเพิ่มเครื่องหมาย utf-8 พิเศษในไฟล์ของคุณ .. :)
BvuRVKyUVlViVIc7

ฉันเพิ่งอ่านการอัปเดตสำหรับคำตอบของผู้ชายคนอื่นและมันครอบคลุมมากกว่านี้จริงๆดังนั้นฉันจะทำเครื่องหมายว่าเป็นคำตอบที่ยอมรับ แต่ฉันก็ยังขอขอบคุณสำหรับความช่วยเหลือของคุณ!
Adam Zerner

39

คุณยังสามารถลองexport RUBYOPT="-KU -E utf-8:utf-8" ตามที่ระบุไว้ในเธรด GHนี้


ขอบคุณ! นั่นเป็นสิ่งเดียวที่ช่วยได้shotgun-0.9.1/bin/shotgun:94:in `[]': invalid byte sequence in US-ASCII (ArgumentError)
Slava V

19

หากคุณประสบปัญหานี้ในตู้คอนเทนเนอร์ทับทิมคุณอาจตั้งค่าLANG=C.UTF-8:

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

หรือดูปัญหานี้


หรือตามที่เห็นในลิงค์ในคำตอบนี้หากสร้างอิมเมจ Docker ของคุณเองให้เพิ่ม 'ENV LANG = C.UTF-8' ใน Dockerfile ของคุณ
Alex

7

เช่นเดียวกับคนอื่น ๆ ที่แนะนำฉันได้เพิ่ม#encoding: utf-8ที่ด้านบนของไฟล์ (ในกรณีนี้คือ seed.rb) แต่ยังไม่สามารถทำให้งานคราดทำงานได้

ที่น่าสนใจพอเพื่อนแนะนำให้ผมลบเพิ่มเติมความเห็นรางที่สร้างจากด้านบนของไฟล์เมล็ดเพื่อให้เฉพาะ#encoding: utf-8ยังคงอยู่

คุณจะรู้อะไร - มันได้ผล


โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.