【发布时间】:2014-03-29 22:27:05
【问题描述】:
我有一个项目,我正在升级 ruby-1.8.7-p72/rails 2.3.2/mongrel 应用程序。我采取的第一步是升级到 ruby-1.9.3-p484 和 rails 2.3.18 和 unicorn。
我现在可以通过 unicorn 让应用程序在开发服务器上运行(通过 capistrano - rvm-capistrano 和 capistrano-unicorn 部署)。但是,它无法提供任何资产(图片、样式表等)
我在独角兽日志中看到如下错误:
ActionController::RoutingError (No route matches "/images/pp.jpg" with {:method=>:get}):
<internal:prelude>:10:in `synchronize'
unicorn (4.8.2) lib/unicorn/http_server.rb:572:in `process_client'
unicorn (4.8.2) lib/unicorn/http_server.rb:666:in `worker_loop'
unicorn (4.8.2) lib/unicorn/http_server.rb:521:in `spawn_missing_workers'
unicorn (4.8.2) lib/unicorn/http_server.rb:140:in `start'
unicorn (4.8.2) bin/unicorn_rails:209:in `<top (required)>'
/Users/ruby/.rvm/gems/ruby-1.9.3-p484/bin/unicorn_rails:19:in `load'
/Users/ruby/.rvm/gems/ruby-1.9.3-p484/bin/unicorn_rails:19:in `<main>'
/Users/ruby/.rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15:in `eval'
/Users/ruby/.rvm/gems/ruby-1.9.3-p484/bin/ruby_executable_hooks:15:in `<main>'
无论是直接与独角兽端口通信还是通过 apache(mod_rewrite - 与独角兽端口通信),我都会看到同样的错误
我需要更改资产的位置吗?目前他们在 /public 下。它们在 ruby-1.8.7-p72/rails 2.3.2/mongrel 下工作正常,但在 ruby-1.9.3-p484/rails 2.3.18/unicorn 下不能正常工作。或者是否有一个配置项可以放入我的 cap 文件中来设置资产的位置?我在 unicorn 文档中没有找到任何内容。
还有其他人经历过这个并知道答案吗?我会继续努力,但任何提示将不胜感激。
【问题讨论】:
-
我认为这是因为我的实例没有在开发模式下启动,因此它试图通过 apache 提供资产。作为解决这个问题的一部分,我现在意识到我还必须扩展我的 unicorn 配置文件,所以现在就开始处理这个......
-
现在我正在开发模式下启动并读取正确的配置文件,但我仍然遇到问题。因为我还在 rails2 我不能使用 config.serve_static_assets = true。 Webbrick 可以很好地服务资产,但我仍然没有找到让独角兽为它们服务的方法。
标签: ruby-on-rails unicorn mongrel