当应用程序路径中存在非 ASCII 字符时,Ruby on Rails 应用程序将不会开始使用 Passenger

2024-02-17

我在使用 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 | 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

有没有人有任何建议,如何说服 Passenger 即使从包含非 ASCII 字符的路径也能够运行 Ruby on Rails 应用程序?

Rails 版本为 3.2.2,Ruby 版本为 1.9.3-p125,Apache 版本为 2.2.21,Passenger 版本为 3.0.12。

预先感谢您的任何帮助!


此问题的解决方案是在 Rails 应用程序源文件中添加“神奇注释”。例如,在遇到非 ASCII 字符的文件开头,添加以下内容:

# encoding: utf-8

有一个有用的宝石可以帮助您做到这一点:https://github.com/m-ryan/magic_encoding https://github.com/m-ryan/magic_encoding

为了确认这个解决方案,我在包含“Práce”的目录中设置了乘客与 Rails 应用程序,并得到了与您类似的错误。我在 Rails 应用程序的根目录中运行 magic_encoding gem 的“magic_encoding”命令。我重新启动了乘客,它似乎已经成功了。希望有帮助!

也可以看看:Rails 和 Ruby 1.9 中的无效多字节字符 (US-ASCII) https://stackoverflow.com/questions/1739836/invalid-multibyte-char-us-ascii-with-rails-and-ruby-1-9

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当应用程序路径中存在非 ASCII 字符时,Ruby on Rails 应用程序将不会开始使用 Passenger 的相关文章

随机推荐

  • 签署 F# 程序集(强名称组件)

    我在 CodeProject 上找到了这篇文章 http www codeproject com Articles 512956 NET Shell Extensions Shell Context Menus http www codep
  • python 中的“is”是如何工作的?

    请有人解释一下如何在 if 条件下使用 is 我正在使用分数模块 但遇到了一些麻烦 gt gt gt Fraction 0 1 is 0 False gt gt gt float Fraction 0 1 0 0 gt gt gt floa
  • 如何使用 IDisposable 修复内存泄漏

    我有一个 net 应用程序似乎存在内存泄漏问题 net 服务启动时大约需要 100MB 内存 但在负载下它会达到大约 400 500MB 我的大多数类都没有非托管资源 并且那些已经实现了 IDisposable 的类 所以我的问题是在我的课
  • 延迟加载加载图像后如何触发事件?

    我有需要绝对定位的图像 以便图像的中心位于其父 div 的中心 我已经有执行此操作的代码 我最近添加了延迟加载插件 它按预期工作 但我需要一种触发图像居中代码的方法after延迟加载已加载and图像淡入 我当前的代码基本上是这样的 jQue
  • 更改现有应用程序的证书指纹

    我有一个已发布到 Google Play 的现有应用程序 一切都很好 直到我换了一台电脑并且我的 sha1 指纹发生了变化 有没有可能的方法来更改 google play 开发者控制台中现有应用程序的 sha1 如果没有 我该如何处理 谢谢
  • 在 numpy 中乘以对数概率矩阵的数值稳定方法

    我需要获取包含对数概率的两个 NumPy 矩阵 或其他二维数组 的矩阵乘积 天真的方式np log np dot np exp a np exp b 由于明显的原因而不是首选 Using from scipy misc import log
  • 调用虚拟成员类的方法

    我知道该怎样virtual在成员函数的上下文中工作 但我在网上看到一篇关于虚拟成员类的文章 这让我感到困惑 我找到的例子是这样的 class Machine void run virtual class Parts The inner cl
  • GIT 无法从远程存储库读取

    我克隆了一个私人存储库 将其分叉 并对功能分支进行了一些更改 当我尝试将这些更改推送到存储库时 我收到以下消息 Permission denied publickey fatal Could not read from remote rep
  • Three.js 立方体每面都有不同的纹理

    我正在尝试创建一个 Three js 立方体 每个面上都有不同的纹理 基本上是一个骰子 这是在我的沙盒环境中 因此应该只生成一个旋转立方体 每侧都有骰子图像 1 6 完成后 我打算将其用于浏览器基础游戏 这个例子我只在 Chrome 中进行
  • IIS 的 ProxyPassReverseCookieDomain 等效项

    我使用 IIS 和 URL 重写作为反向代理 我的实际 Web 应用程序托管在无法直接访问互联网的服务器上 在重写规则中 我将反向代理的主机名替换为本地 IP 地址 这很好用 不过 我使用的应用程序提供下载 一旦客户端发出下载请求 服务器端
  • 禁用 jqgrid 的编辑(添加、编辑和删除)按钮而不是隐藏(默认行为)

    默认情况下 Jqgrid 使用值为 false 的适当属性隐藏添加 编辑和删除按钮 例如 导航网格中的 add false edit false del false 或其他方式 在这里 我想禁用这些按钮而不是隐藏 任何人都可以帮忙解决这个问
  • 获取给定进程的 STARTUPINFO

    是否可以获取另一个正在运行的进程的启动信息 我想找出命令行参数 是否应该最小化 最大化运行 在目录中启动 以管理员身份运行等 您需要从远程进程读取 RTL USER PROCESS PARAMETERS 这可以这样做 NTSTATUS Ge
  • 在调试时在注册类中调用 qmlRegisterType() 会导致应用程序崩溃

    我想用qmlRegiterType 在注册类本身中 我尝试使用此方法topic https stackoverflow com questions 37622694 call qmlregistertype in the registere
  • 在 ASP.NET Core 中获取控制器详细信息

    在 ASP NET 4 x 中 有一个ReflectedControllerDescriptor所在的类System Web Mvc 此类提供控制器的描述符 在我之前的应用程序中 我曾经这样做过 var controllerDescript
  • Codeigniter 的 Google 双因素身份验证教程

    有谁知道 Codeigniter 的 Google 双因素身份验证教程吗 这里 tutsplus 将双因素身份验证与 CodeIgniter 集成 http net tutsplus com tutorials php integratin
  • 使用分离器调整控件的大小超出父级的客户区

    我正在尝试使用拆分器复制大小调整 如 MS SQL Management Studio 中所述这个问题 https stackoverflow com questions 13909756 how to resize controls be
  • 如何将图像帧相机传递给 wasm (C++) 中的函数?

    我正在尝试构建一个 C 函数并使用 Emscripten 将其编译为 Wasm 该函数的作用是接收图像并对其进行一些处理并返回结果 我的第一个 POC 成功了 用户使用上传图像file输入 我使用传递图像的数据FileReader API
  • 如何将 MSSQL CTE 查询转换为 MySQL 5.7?

    我有一个 SQL 查询 with temp as select min ms date as start max ms date as end count sessionid visitor count category convert v
  • 防止 Master Branch 领先于 dev

    我们有一个非常标准的 git 工作流程 但我对一件事感到恼火 master 领先于开发 因为每次部署我们都会创建从 dev 到 master 的合并提交 首先我们的工作流程 master branch 始终干净并可用于部署 developm
  • 当应用程序路径中存在非 ASCII 字符时,Ruby on Rails 应用程序将不会开始使用 Passenger

    我在使用 Passenger 运行 Ruby on Rails 应用程序时遇到问题 我的应用程序位于 Users Glutexo Pr ce Bytek Bytek 目录中 您可以看到 中有一个非 ASCII 字符 即使我将其符号链接到另一