我在使用Passenger 运行Ruby on Rails 应用程序时遇到问题。我的应用程序位于 /Users/Glutexo/Práce/Bytek/Bytek 目录中,您可以看到 (á) 中有一个非 ASCII 字符。即使我将它符号链接到另一个目录,例如 /Library/WebServer/Documents/Bytek 所有字符都是 US-ASCII,问题仍然存在。
但是当我在所有 US-ASCII 路径中物理创建另一个 Rails 应用程序时,例如 /Users/Glutexo/rails/pokus,它可以工作:应用程序通过Passenger 启动并正常运行。
尝试运行驻留在非 ASCII 路径中的 Rails 应用程序时出现的错误页面显示以下内容:
错误信息:
US-ASCII 中的无效字节序列
异常类:
参数错误
回溯:
0 | /Users/Glutexo/.rvm/rubies/ruby-1.9.3-p125/lib/ruby/1.9.1/pathname.rb | 45 | 在`=~'
提到的 pathname.rb 中的行在以下函数中:
# chop_basename(path) -> [pre-basename, basename] or nil
def chop_basename(path)
base = File.basename(path)
if /\A#{SEPARATOR_PAT}?\z/o =~ base # This is the line no. 45
return nil
else
return path[0, path.rindex(base)], base
end
end
private :chop_basename
有没有人有任何建议,如何说服乘客即使从包含非 ASCII 字符的路径也能够运行 Ruby on Rails 应用程序?
Rails 是 3.2.2 版,Ruby 是 1.9.3-p125 版,Apache 是 2.2.21 版,Passenger 是 3.0.12 版。
提前感谢您的帮助!