2014-01-17 4 views
2

Я использую Rails 3.2.13 с ruby ​​1.9.3. Я продолжаю получать следующую ошибку:Rails- RSPEC неполный многобайтовый символ ошибка

Failure/Error: @user = Fabricate :user, role_ids: [role.id] 
PG::Error: 
    incomplete multibyte character 
# ./spec/controllers/api_controllers/projects_controller_spec.rb:6:in `block (2 levels) in <top (required)>' 

Неудачная вещь об ошибке в том, что она происходит с перерывами. Иногда я могу запускать тесты 10 раз, пока это не происходит, и иногда это случается каждый раз.

Код вокруг линии 6 файла projects_controller_spec.rb, где происходит ошибка выглядит так:

require 'spec_helper' 

describe Api::V1::ProjectsController do 
    before do 
    role = Fabricate :data_collector_role 
    @user = Fabricate :user, role_ids: [role.id] # this is line 6 
    @project = Fabricate.build(:project, proposal: Fabricate(:full_proposal)) 
    @project.save(validate: false) 
    @permission = Fabricate :permission, user: @user, project: @project 
    @project2 = Fabricate.build(:project, proposal: Fabricate(:full_proposal)) 
    @project2.save(validate: false) 
    request.env["HTTP_ACCEPT"] = 'application/json' 
    request.env['HTTP_AUTHORIZATION'] = ActionController::HttpAuthentication::Token.encode_credentials(@user.api_key) 
    end 

переработчика, который вызывается в строке 6 выше выглядит следующим образом:

Fabricator :user do 
    username { sequence(:username) { |n| "foo#{n}" } } 
    password 'foobar' 
    password_confirmation 'foobar' 
    email_address "[email protected]" 
    home_phone "123456789" 
    work_phone "456789189" 
    sales_channel 
end 

Тот же код вызывается в других спецификациях, которые не предназначены для контроллеров API, и они работают в 100% случаев.

Каждый сейчас и снова Rspec падает полностью и дает следующее сообщение об ошибке:

 Failure/Error: get :show, { id: @project.id } 
    ActiveRecord::StatementInvalid: 
/Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:182:in `split': invalid byte sequence in UTF-8 (ArgumentError) 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:182:in `dump_failure_info' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:175:in `dump_failure' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:19:in `block in dump_failures' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:17:in `each' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:17:in `each_with_index' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/formatters/base_text_formatter.rb:17:in `dump_failures' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:98:in `block in notify' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:97:in `each' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:97:in `notify' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:81:in `finish' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/reporter.rb:36:in `report' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/command_line.rb:25:in `run' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:66:in `rescue in run' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:62:in `run' 
from /Users/michael/.rvm/gems/ruby-1.9.3-p448/gems/rspec-core-2.11.1/lib/rspec/core/runner.rb:8:in `block in autorun' 
+0

проверки, если это помогает http://stackoverflow.com/questions/9167468/rails-3-how-to-handle-pg-error-incomplete-multibyte-character – PriteshJ

+1

@PriteshJ Нет никаких символов UTF-8 в любом месте тестов, которые могли бы быть вызывая проблему. Спасибо, что указали, что хотя – bambinz

ответ

0

Добавить это в верхней части вашего файла спецификации/контроллеры/api_controllers/projects_controller_spec.rb

# !/usr/bin/env ruby 
# encoding: utf-8 
+0

Trix для детей, глупый кролик. –

+0

К сожалению, это не помогло – bambinz

+0

Обновлен ответ, повторите попытку. –

Смежные вопросы