【问题标题】:Error while mounting sinatra application in rails在导轨中安装 sinatra 应用程序时出错
【发布时间】:2012-02-22 07:01:36
【问题描述】:

我有一个 Rails 应用程序,它又在其中使用 sinatra 应用程序。我将此行添加到路线

mount TestApp::Application => "/test_app"

现在在访问它提供的/test_app 路由时

TypeError (no marshal_dump is defined for class Mutex)

如果针对 Ruby 1.9.2 和 rails 3.2.1 运行。 Sinatra 应用使用 mongo gem。

现在当我针对 ruby​​ 1.8.7 和 rails 3.2.1 运行这个应用程序时,它会出现以下错误

TypeError (can't dump TCPSocket)

非常感谢任何帮助。

【问题讨论】:

  • 这两个应用程序都是您自己编写的吗?他们是做什么的?
  • 是的,我做到了。这两个应用程序都是正常的应用程序。我们正在重用已经存在的 sinatra 应用程序。它独立运行良好。
  • 可能是机架会话的问题。我在 sinatra 应用程序中使用了 rack-session use Rack::Session::Pool, :expire_after => 2592000
  • 你想把互斥体和套接字放进去吗?
  • 不,我没有使用任何互斥锁和套接字。我尝试删除 rack-session 但没有运气

标签: mongodb sinatra ruby-1.9.2 ruby-on-rails-3.2 ruby-1.8


【解决方案1】:

假设您正确地要求您的 TestApp::Application,我认为您的路由定义应该是:

match "/test_app", :to => TestApp::Application

请参阅Rails Routing from the Outside in 了解更多信息。

【讨论】:

  • 对不起!但这不会服务器来自 sinatra 目录的静态内容。仅供参考mount TestApp::Application => "/test_app" 是解决静态内容问题的唯一方法。
  • 似乎有点苛刻......你没有在你的问题中提到静态内容。上述建议有何不妥之处?我的印象是 mount 使用 match 作为其路由? http://living5to9.com/2011/11/rails-routes-match-and-mount
猜你喜欢
  • 1970-01-01
  • 2012-01-17
  • 2023-03-30
  • 2016-11-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多