jamesrwhite / minicron

🕰️ Monitor your cron jobs
GNU General Public License v3.0
2.34k stars 154 forks source link

UTF-8 error #64

Closed michaelmior closed 10 years ago

michaelmior commented 10 years ago

When trying to access the Hub, I just get a blank screen. It seems all.js throws a 500. If I request it directly, I get the following error message:

{"error":"U+00C2 from UTF-8 to US-ASCII"}

Any thoughts on what could be causing this?

jamesrwhite commented 10 years ago

Interesting, what OS version and Ruby version are you running?

jamesrwhite commented 10 years ago

Also could you stop the server minicron server stop and start it again using minicron server start --debug --trace and see if you get a stack trace?

michaelmior commented 10 years ago

Aha! The problem seems to occur only when starting minicron via Upstart. I suspect there's some environment variables set up in shell that aren't exported when running via Upstart.

jamesrwhite commented 10 years ago

Oh weird, could you still send over that info if possible so I can reproduce and make sure it's definitely not a bug?

michaelmior commented 10 years ago

Yup. Just needed to figure out how to recover the logs. Here's the relevant piece.

U+00C2 from UTF-8 to US-ASCII
/var/lib/gems/2.0.0/gems/sinatra-assetpack-0.3.2/lib/sinatra/assetpack/package.rb:112:in `encode'
/var/lib/gems/2.0.0/gems/sinatra-assetpack-0.3.2/lib/sinatra/assetpack/package.rb:112:in `block in combined'
/var/lib/gems/2.0.0/gems/sinatra-assetpack-0.3.2/lib/sinatra/assetpack/package.rb:108:in `map'
/var/lib/gems/2.0.0/gems/sinatra-assetpack-0.3.2/lib/sinatra/assetpack/package.rb:108:in `combined'
/var/lib/gems/2.0.0/gems/sinatra-assetpack-0.3.2/lib/sinatra/assetpack/package.rb:94:in `minify'
/var/lib/gems/2.0.0/gems/sinatra-assetpack-0.3.2/lib/sinatra/assetpack/class_methods.rb:32:in `block (3 levels) in add_compressed_routes!'
/var/lib/gems/2.0.0/gems/tilt-1.4.1/lib/tilt.rb:127:in `fetch'
/var/lib/gems/2.0.0/gems/sinatra-assetpack-0.3.2/lib/sinatra/assetpack/class_methods.rb:31:in `block (2 levels) in add_compressed_routes!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1593:in `call'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1593:in `block in compile!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:957:in `[]'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:957:in `block (3 levels) in route!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:976:in `route_eval'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:957:in `block (2 levels) in route!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:997:in `block in process_route'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:995:in `catch'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:995:in `process_route'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:955:in `block in route!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:954:in `each'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:954:in `route!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1067:in `block in dispatch!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1049:in `block in invoke'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1049:in `catch'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1049:in `invoke'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1064:in `dispatch!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:889:in `block in call!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1049:in `block in invoke'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1049:in `catch'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:1049:in `invoke'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:889:in `call!'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:877:in `call'
/var/lib/gems/2.0.0/gems/rack-protection-1.5.1/lib/rack/protection/xss_header.rb:18:in `call'
/var/lib/gems/2.0.0/gems/rack-protection-1.5.1/lib/rack/protection/path_traversal.rb:16:in `call'
/var/lib/gems/2.0.0/gems/rack-protection-1.5.1/lib/rack/protection/json_csrf.rb:18:in `call'
/var/lib/gems/2.0.0/gems/rack-protection-1.5.1/lib/rack/protection/base.rb:50:in `call'
/var/lib/gems/2.0.0/gems/rack-protection-1.5.1/lib/rack/protection/base.rb:50:in `call'
/var/lib/gems/2.0.0/gems/rack-protection-1.5.1/lib/rack/protection/frame_options.rb:31:in `call'
/var/lib/gems/2.0.0/gems/rack-1.5.2/lib/rack/nulllogger.rb:9:in `call'
/var/lib/gems/2.0.0/gems/rack-1.5.2/lib/rack/head.rb:11:in `call'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:180:in `call'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:2004:in `call'
/var/lib/gems/2.0.0/gems/minicron-0.4/lib/minicron/hub/app.rb:130:in `call'
/var/lib/gems/2.0.0/gems/rack-1.5.2/lib/rack/builder.rb:138:in `call'
/var/lib/gems/2.0.0/gems/rack-1.5.2/lib/rack/urlmap.rb:65:in `block in call'
/var/lib/gems/2.0.0/gems/rack-1.5.2/lib/rack/urlmap.rb:50:in `each'
/var/lib/gems/2.0.0/gems/rack-1.5.2/lib/rack/urlmap.rb:50:in `call'
/var/lib/gems/2.0.0/gems/rack-1.5.2/lib/rack/showexceptions.rb:24:in `call'
/var/lib/gems/2.0.0/gems/rack-1.5.2/lib/rack/commonlogger.rb:33:in `call'
/var/lib/gems/2.0.0/gems/sinatra-1.4.4/lib/sinatra/base.rb:217:in `call'
/var/lib/gems/2.0.0/gems/thin-1.6.1/lib/thin/connection.rb:82:in `block in pre_process'
/var/lib/gems/2.0.0/gems/thin-1.6.1/lib/thin/connection.rb:80:in `catch'
/var/lib/gems/2.0.0/gems/thin-1.6.1/lib/thin/connection.rb:80:in `pre_process'
/var/lib/gems/2.0.0/gems/thin-1.6.1/lib/thin/connection.rb:55:in `process'
/var/lib/gems/2.0.0/gems/faye-websocket-0.7.2/lib/faye/adapters/thin.rb:40:in `process'
/var/lib/gems/2.0.0/gems/thin-1.6.1/lib/thin/connection.rb:41:in `receive_data'
/var/lib/gems/2.0.0/gems/faye-websocket-0.7.2/lib/faye/adapters/thin.rb:44:in `receive_data'
/var/lib/gems/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run_machine'
/var/lib/gems/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:187:in `run'
/var/lib/gems/2.0.0/gems/thin-1.6.1/lib/thin/backends/base.rb:73:in `start'
/var/lib/gems/2.0.0/gems/thin-1.6.1/lib/thin/server.rb:162:in `start'
/var/lib/gems/2.0.0/gems/minicron-0.4/lib/minicron/transport/server.rb:49:in `start!'
/var/lib/gems/2.0.0/gems/minicron-0.4/lib/minicron/cli/commands.rb:84:in `block (3 levels) in add_server_cli_command'
/var/lib/gems/2.0.0/gems/insidious-0.3/lib/insidious.rb:108:in `call'
/var/lib/gems/2.0.0/gems/insidious-0.3/lib/insidious.rb:108:in `run_daemon!'
/var/lib/gems/2.0.0/gems/insidious-0.3/lib/insidious.rb:28:in `start!'
/var/lib/gems/2.0.0/gems/minicron-0.4/lib/minicron/cli/commands.rb:78:in `block (2 levels) in add_server_cli_command'
/var/lib/gems/2.0.0/gems/commander-4.1.6/lib/commander/command.rb:180:in `call'
/var/lib/gems/2.0.0/gems/commander-4.1.6/lib/commander/command.rb:180:in `call'
/var/lib/gems/2.0.0/gems/commander-4.1.6/lib/commander/command.rb:155:in `run'
/var/lib/gems/2.0.0/gems/commander-4.1.6/lib/commander/runner.rb:422:in `run_active_command'
/var/lib/gems/2.0.0/gems/commander-4.1.6/lib/commander/runner.rb:82:in `run!'
/var/lib/gems/2.0.0/gems/minicron-0.4/lib/minicron/cli.rb:84:in `run'
/var/lib/gems/2.0.0/gems/minicron-0.4/bin/minicron:14:in `block in <top (required)>'
/var/lib/gems/2.0.0/gems/minicron-0.4/lib/minicron.rb:129:in `capture_output'
/var/lib/gems/2.0.0/gems/minicron-0.4/bin/minicron:12:in `<top (required)>'
/usr/local/bin/minicron:23:in `load'
/usr/local/bin/minicron:23:in `<main>'
michaelmior commented 10 years ago

Changing the start command to the following solved it for me. Although it seems like assetpack shouldn't depend on whatever locale happens to be set.

LANG=en_US.UTF-8 minicron server start
jamesrwhite commented 10 years ago

Ha, I literally just found this https://github.com/rstacruz/sinatra-assetpack/issues/76#issuecomment-21439392 which says exactly the same thing. It doesn't look like assetpack is going to fix it any time soon so I may just force Encoding.default_external to be UTF-8 on the minicron side. Thanks for reporting this :+1:

michaelmior commented 10 years ago

Yes, I noticed that as well. Seems like forcing the encoding would be safe for minicron. Thanks!