Tag: Rails3.1

Invalid byte sequence in US-ASCII (ArgumentError) with Ruby on Rails

Lately when starting Unicorn instances, I've encountered following issue:

$ bundle exec unicorn_rails -c config/unicorn.rb -E production -D
/gems_path/lib/bundler.rb:294:in `block in load_gemspec_uncached': 
  invalid byte sequence in US-ASCII (ArgumentError)
	from /gems_path/lib/bundler.rb:291:in `chdir'
	from /gems_path/lib/bundler.rb:291:in `load_gemspec_uncached'
	from /gems_path/lib/bundler.rb:282:in `load_gemspec'
	from /gems_path/lib/bundler/source.rb:411:in `block in load_spec_files'
	from /gems_path/lib/bundler/source.rb:410:in `each'
	from /gems_path/lib/bundler/source.rb:410:in `load_spec_files'
	from /gems_path/lib/bundler/source.rb:799:in `load_spec_files'
	from /gems_path/lib/bundler/source.rb:381:in `local_specs'
	from /gems_path/lib/bundler/source.rb:774:in `specs'
	from /gems_path/lib/bundler/lazy_specification.rb:53:in `__materialize__'
	from /gems_path/lib/bundler/spec_set.rb:86:in `block in materialize'
	from /gems_path/lib/bundler/spec_set.rb:83:in `map!'
	from /gems_path/lib/bundler/spec_set.rb:83:in `materialize'
	from /gems_path/lib/bundler/definition.rb:113:in `specs'
	from /gems_path/lib/bundler/definition.rb:158:in `specs_for'
	from /gems_path/lib/bundler/definition.rb:147:in `requested_specs'
	from /gems_path/lib/bundler/environment.rb:23:in `requested_specs'
	from /gems_path/lib/bundler/runtime.rb:11:in `setup'
	from /gems_path/lib/bundler.rb:116:in `setup'
	from /gems_path/lib/bundler/setup.rb:7:in `<top (required)>'
	from /gems_path/rubygems/custom_require.rb:36:in `require'
	from /gems_path/rubygems/custom_require.rb:36:in `require'

There are two ways to fix this. You can export language settings to your shell:

export LANGUAGE=en_US.UTF-8
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8

or you can put this into your Gemfile:

if RUBY_VERSION =~ /1.9/
  Encoding.default_external = Encoding::UTF_8
  Encoding.default_internal = Encoding::UTF_8
end

Both methods should work.

Ruby on Rails + Webrick: ERROR NoMethodError: undefined method ‘split’ for nil:NilClass

Recently after updating Ruby on Rails, after runnig Webrick in a development mode, it started to crush with such an error:

 ERROR NoMethodError: undefined method `split' for nil:NilClass
    /home/path/gems/rack-1.4.3/lib/rack/handler/webrick.rb:68:in `block in service'
    /home/path/gems/rack-1.4.3/lib/rack/utils.rb:387:in `block in each'
    /home/path/gems/rack-1.4.3/lib/rack/utils.rb:386:in `each'
    /home/path/gems/rack-1.4.3/lib/rack/utils.rb:386:in `each'
    /home/path/gems/rack-1.4.3/lib/rack/handler/webrick.rb:62:in `service'
    /home/path/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
    /home/path/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
    /home/path/ruby-1.9.3-p194/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'

I don't know why it happens but I know how to fix it ;)
To do so, you need to find 68 line in a Webric server:

# Ofc change the path to your Webrick path
vim /home/path/gems/rack-1.4.3/lib/rack/handler/webrick.rb

Localize line 68 and change:

res[k] = vs.split("\n").join(", ")

to:

res[k] = vs.to_s.split("\n").join(", ")

It seams that the header value is somehow nil, that's why we cast it to empty string.

Copyright © 2024 Closer to Code

Theme by Anders NorenUp ↑