我试图用omuniauth gem设置twitter登录系统,突然间它发生了。我无法显示任何页面,并在下面显示错误消息。 “MembersController中的ArgumentError #USA-ASCII中的登录无效字节序列”你能告诉我如何解决这个问题吗?
这是终端命令中的日志。
☆终端命令log①
ArgumentError (invalid byte sequence in US-ASCII):
better_errors (1.0.1) lib/better_errors/error_page.rb:82:in `exception_message'
(erubis:734:in `render'
erubis (2.7.0) lib/erubis/evaluator.rb:65:in `eval'
erubis (2.7.0) lib/erubis/evaluator.rb:65:in `result'
better_errors (1.0.1) lib/better_errors/error_page.rb:25:in `render'
better_errors (1.0.1) lib/better_errors/middleware.rb:96:in `show_error_page'
better_errors (1.0.1) lib/better_errors/middleware.rb:88:in `rescue in protected_app_call'
better_errors (1.0.1) lib/better_errors/middleware.rb:84:in `protected_app_call'
better_errors (1.0.1) lib/better_errors/middleware.rb:79:in `better_errors_call'
better_errors (1.0.1) lib/better_errors/middleware.rb:56:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/debug_exceptions.rb:16:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
railties (3.2.11) lib/rails/rack/logger.rb:32:in `call_app'
railties (3.2.11) lib/rails/rack/logger.rb:16:in `block in call'
activesupport (3.2.11) lib/active_support/tagged_logging.rb:22:in `tagged'
railties (3.2.11) lib/rails/rack/logger.rb:16:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/request_id.rb:22:in `call'
rack (1.4.5) lib/rack/methodoverride.rb:21:in `call'
rack (1.4.5) lib/rack/runtime.rb:17:in `call'
activesupport (3.2.11) lib/active_support/cache/strategy/local_cache.rb:72:in `call'
rack (1.4.5) lib/rack/lock.rb:15:in `call'
actionpack (3.2.11) lib/action_dispatch/middleware/static.rb:62:in `call'
railties (3.2.11) lib/rails/engine.rb:479:in `call'
railties (3.2.11) lib/rails/application.rb:223:in `call'
rack (1.4.5) lib/rack/content_length.rb:14:in `call'
railties (3.2.11) lib/rails/rack/log_tailer.rb:17:in `call'
rack (1.4.5) lib/rack/handler/webrick.rb:59:in `service'
/Users/aramakikuniharu/.rvm/rubies/ruby-1.9.3- p448/lib/ruby/1.9.1/webrick/httpserver.rb:138:in `service'
/Users/aramaki/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/webrick/httpserver.rb:94:in `run'
/Users/aramaki/.rvm/rubies/ruby-1.9.3-p448/lib/ruby/1.9.1/webrick/server.rb:191:in `block in start_thread'
☆终端命令日志②
SyntaxError -
/Users/aramaki/railsprojects/miniSNS/app/controllers/application_controller.rb:30:
invalid multibyte char (US-ASCII)
/Users/aramaki/railsprojects/miniSNS/app/controllers/application_controller.rb:30: syntax error, unexpected $end, expecting keyword_end
end
^:
☆application_controller.rb
class ApplicationController < ActionController::Base
protect_from_forgery
def logout
session[:user_id] = nil
redirect_to "members/login"
return
end
def login?
if session[:user_id] != nil then
return true
else
return false
end
end
def me? obj = nil
id_num = obj !=nil ? obj.member_id : params[:id].to_i
if session[:user_id] == id_num then
return true
else
return false
end
end
def admin?
Member.find(session[:user_id]).admin
end
def checklogin?
if session[:user_id] != nil then
return true
else
redirect_to '/members/login'
return false
end
end
def checkme? obj = nil
id_num = obj !=nil ? obj.member_id : params[:id].to_i
if session[:user_id] == id_num then
return true
else
redirect_to '/members/' + session[:user_id].to_s
return false
end
end
def checkadmin?
if Member.find(session[:user_id]).admin then
return true
else
redirect_to '/members/' + session[:user_id].to_s
return false
end
end
helper_method :current_user
private
def current_user
@current_user ||= Member.find(session[:user_id]) if session[:user_id]
end
end
答案 0 :(得分:2)
查看十六进制编辑器中的代码显示,代码中的某些点上有一堆不可见的字符。当我遇到Alt
+ Space
如果你还没有声明你的ruby source file is UTF-8 Ruby 1.9 试图将文件视为US-ASCII而无法解析那些(他们在Ruby 2.0.0中将其更改为UTF- 8)。你应该删除所有这些字符(例如,在第30行end
之后有5个不可见的字符不是所有空格),那么它应该可以正常工作。