Rails: rake db: seed çalıştırdığımda US-ASCII'de geçersiz bayt dizisi (Bağımsız Değişken Hatası)


87

Ben çalıştırdığınızda rake db:seedbenim de Railsapp, bu hatayı alıyorum:

US-ASCII'de geçersiz bayt dizisi (Bağımsız Değişken Hatası)

science_majorsTohum dosyama yeni ekledim ve şimdi çalıştırdığımda rake db:seedbana şu hatayı veriyor:

geçersiz bayt dizisi hatası

Bu neden ve bunu nasıl düzeltebilirim?

seeds.rb parçası

@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

Diğer tüm üniversiteleri dışarıda bıraktım. Şimdiye kadar 200 okulum var, ancak Pitt şu ana kadar kapsamlı verilere sahip tek okul. Geri kalanında Harvard gibi temel veriler var. Kısaca Pitt'in bazı verilerini de dışarıda bıraktım, ancak geri kalanını da dahil etmemi isterseniz bana bildirin.

Düzenleme: Ben yaptırmayı denedi *içinde 's science_majorsçalıştıran sonra aşağı ve rake db:seed, ama değişim şey vermedi.

Yanıtlar:


185

Dosya sisteminiz eklediğiniz tarihi kodlayacak şekilde yapılandırılmadığı için bir kodlama hatası alıyorsunuz (muhtemelen önceki veri çekirdeğinizde bulunmayan yeni karakterler (muhtemelen HTML varlık kodlu harita URL'nizde) içerdiğinden) .

Aşağıdakiler, makinenizde UTF-8 yerel ayarını ayarlayarak bu hatayı çözecektir:

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

Bir sistem yerel ayarı belirlemenin yararı, tüm mücevherlerin (ileriye dönük) UTF-8 kodlaması kullanılarak paketlenecek olmasıdır.

DÜZENLE:

Alternatif olarak, sistem kodlamanızı değiştirmek istemiyorsanız, Gemfile'ınızda bir kodlama standardı belirterek kodlamanızı proje genelinde ayarlayabilirsiniz:

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
Yardımcı olmasına sevindim. Bu yaklaşımı kullanırsanız, projenizi dağıttığınız tüm ortamların yerel ayarlarının UTF-8 olarak ayarlandığından emin olun. Aksi takdirde, #encoding utf-8diğer posterin zekice belirttiği gibi, düzgün şekilde kodlandığından emin olmak için dosyanızın en üstüne eklemeniz gerekir .
zeantsoi

aslında # kodlama utf-8'i kaldırmaya ve söylediklerinizi yapmaya çalıştım ama işe yaramadı. ~/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] `, bundle show [gemname]` için bundled gem'in nereye kurulduğunu görebilirsiniz. ~ / collegeanswers >> rake db: tohum komisyonu iptal edildi! `nedenini biliyor musunuz?
Adam Zerner

Senin hatan ne rake? Mevcut mücevherleriniz muhtemelen henüz dosya sistemi kodlamanızla çalışacak şekilde yapılandırılmamış. Deneyin bbundle exec gem uninstall i18nöyleyse bundle install.
zeantsoi

komisyon hatam oldu invalid byte sequence in US-ASCII (ArgumentError) . Dediğini denedim ve aynı hatayı aldım.
Adam Zerner

Web sunucunuzu yeniden başlattınız mı? Başarmaya çalıştığınız şeyi başarmak için daha fazla seçenek sağlamak için cevabım güncellendi.
zeantsoi

64

Ekle

#encoding: utf-8

dosyanın en üstünde


Bunu neden şimdi yapmam gerekiyor ama daha önce buna gerek yoktu?
Adam Zerner

Sadece denedim ve işe yaradı, çok teşekkürler! Ama yine de her şeyin neden daha önce çalıştığını bilmek istiyorum ve şimdi bunun işe yaraması için bunu eklemem gerekiyor.
Adam Zerner

1
Belki dosyanıza bazı özel utf-8 işaretleri
eklemişsinizdir

Sadece diğer adamın cevabının güncellemelerini okudum ve aslında daha kapsamlı, bu yüzden bunu kabul edilen cevap olarak işaretleyeceğim, ama yine de yardımın için gerçekten minnettarım!
Adam Zerner

39

Ayrıca export RUBYOPT="-KU -E utf-8:utf-8" bu GH başlığında belirtildiği gibi deneyebilirsiniz


Teşekkürler! Yardımcı olan tek şey buydushotgun-0.9.1/bin/shotgun:94:in `[]': invalid byte sequence in US-ASCII (ArgumentError)
Slava V

19

Ruby docker container'da bu sorunu yaşıyorsanız, aşağıdakilerden birini yapabilirsiniz LANG=C.UTF-8:

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

veya bu sayıyı izleyin .


veya bu yanıttaki bağlantıda görüldüğü gibi, kendi Docker görüntünüzü oluşturuyorsanız Dockerfile
Alex

7

Diğerlerinin önerdiği gibi, #encoding: utf-8(bu durumda seed.rb) dosyamın üstüne ekledim, ancak yine de rake görevinin çalışmasını sağlayamadım.

Yeterince ilginç bir şekilde, bir arkadaşım ek, raylar tarafından üretilen yorumları çekirdek dosyasının üst kısmından kaldırmamı önerdi, böylece yalnızca #encoding: utf-8kaldı.

Ne bilirdiniz - işe yaradı.


1

Tohum dosyanızda geçersiz bir karakter var, benim durumumda tek tırnakların '' yerine '' olarak değiştirilmesi işlendi.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.