2013-06-10 23 views
71

Kiedy biegnę rake db:seed w moim Rails aplikacji, dostaję ten błąd:nieprawidłowa sekwencja bajtów w US-ASCII (Argument o błędzie), gdy uruchomię rake db: seed w Rails

invalid byte sequence in US-ASCII (Argument Error)

Właśnie dodałem science_majors i aż do mojego pliku nasion, a teraz gdy uruchamiam rake db:seed daje mi ten błąd:

invalid byte sequence error

dlaczego jest to, i jak można to naprawić?

część 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 

zostawiłem wszystkie inne uczelnie. Do tej pory mam 200 szkół, ale do tej pory Pitt jest jedynym, który dysponuje obszernymi danymi. Reszta ma tylko podstawowe dane, takie jak Harvard. Też zostawiłem niektóre dane dla Pitta ze względu na zwięzłość, ale daj mi znać, jeśli chcesz, żebym dołączył resztę.

Edytuj: Próbowałem usunąć * w science_majors na dole, a następnie działa rake db:seed, ale to nic nie zmieniło.

Odpowiedz

145

Otrzymujesz błąd kodowania, ponieważ twój system plików nie jest skonfigurowany do zakodowania dodanej daty (ponieważ prawdopodobnie zawiera ona nowe znaki - prawdopodobnie w adresie URL zakodowanej w kodzie HTML strony - która nie istniała w twoim wcześniejsze dane źródłowe).

Poniższy wola powinna rozwiązać ten problem przez ustawienie locale UTF-8 na komputerze:

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

Zaletą ustawienie regionalnych systemu jest to, że wszystkie kamienie (w przyszłości) będą łączone za pomocą UTF- 8 kodowania.

EDIT:

Ewentualnie, jeśli nie chcesz, aby zmienić kodowanie systemu, można ustawić kodowanie całego projektu poprzez określenie standardu kodowania w 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

Cieszę się, że pomogło. Jeśli podejmiesz takie podejście, upewnij się, że wszystkie środowiska, w których wdrożono projekt, mają ustawione locale na UTF-8. W przeciwnym razie musisz dodać '#encoding utf-8' na górze twojego pliku, aby upewnić się, że jest poprawnie zakodowany, jak to zauważył inny plakat. – zeantsoi

+0

Właśnie próbowałem usunąć #encoding utf-8 i zrobić to, co powiedziałeś, ale to nie zadziałało. '~/collegeanswers >> export LANG = en_US.UTF-8 ~/collegeanswers >> export LC_ALL = "en_US.UTF-8" ~/collegeanswers >> wiązka Korzystanie natarcia (10.0.4) . . Używanie i18n (0.6.1) Twój pakiet jest kompletny! Użyj 'bundle show [gemname]', aby zobaczyć, gdzie jest zainstalowany pakiet klejnotów. ~/collegeanswers >> rake db: seed rake aborted! ' czy wiesz dlaczego? –

+0

Jaki jest Twój błąd "rake"? Twoje istniejące klejnoty prawdopodobnie nie są jeszcze skonfigurowane do pracy z Twoim systemem kodowania. Spróbuj 'bbundle exec gem uninstall i18n', a następnie' bundle install'. – zeantsoi

61

Dodaj

#encoding: utf-8 

na początku pliku

+0

Dlaczego muszę to teraz zrobić, ale zanim nie musiałem? –

+0

Po prostu wypróbowałem i zadziałało, więc dzięki! Ale nadal chciałbym wiedzieć, dlaczego wszystko działało wcześniej, a teraz muszę dodać, żeby działało. –

+1

Może dodałeś jakieś specjalne znaki utf-8 do swojego pliku .. :) – Lichtamberg

7

Jak inni sugerowane, ja Adde d #encoding: utf-8 na górze mojego pliku (w tym przypadku seed.rb), ale nadal nie mógł uruchomić zadania rake.

Co ciekawe, znajomy zalecił usunięcie dodatkowych, generowanych przez szyny komentarzy z góry pliku źródłowego, tak aby pozostał tylko #encoding: utf-8.

Co byś wiedział - zadziałało.

1

W twoim pliku źródłowym znajduje się niepoprawny znak, w moim przypadku zmienia się pojedyncze cudzysłowy z `do '.

21

Możesz także spróbować export RUBYOPT="-KU -E utf-8:utf-8" jak wspomniano w tym GH thread

+0

Dzięki! To jedyna rzecz, która pomogła przy użyciu '' 'shotgun-0.9.1/bin/shotgun: 94: in' [] ': niepoprawna sekwencja bajtów w US-ASCII (ArgumentError) '' ' –

+0

Niesamowita odpowiedź. Dodano to i zadziałało. – adev

10

Jeśli masz ten problem w Döcker pojemnika ruby ​​można też ustawić LANG=C.UTF-8:

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

lub watch this issue.