为什么Sprockets没有找到我编译的资产?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么Sprockets没有找到我编译的资产?相关的知识,希望对你有一定的参考价值。

我们已将Rails 1.9.3应用程序部署到生产Windows 2008 R2s服务器。 [客户端坚持使用IIS :-(]。我们正在使用Helicon Zoo,在IIS管理器中设置站点,将应用程序复制到默认目录,然后运行:

  • 捆绑安装
  • 捆绑exec rake资产:预编译
  • rake db:setup RAILS_ENV =“production”

我们能够本地和远程连接,但有两个问题。

1)CSS样式表不可用,页面的格式(不足为奇)是废话。日志显示以下内容:

Started GET "/assets/application-af54c6f2f95c6c2f7d965706cab068f3.css" for 10.10.100.185 at 2013-09-16 17:02:27 -0400

 ActionController::RoutingError (No route matches [GET] "/assets/application-af54c6f2f95c6c2f7d965706cab068f3.css"):
  actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  ...

但是,public / assets目录中有一个名为“application-af54c6f2f95c6c2f7d965706cab068f3.css”的文件。是什么赋予了?

2)在开发中工作的路由和WEBrick在生产中断。这是一个例子:

查看代码:<%= link_to'Logout',logout_path,方法:: delete%>

路线代码:

controller :sessions do
  get    'login'  => :new
  post   'login'  => :create
  delete 'logout' => :destroy
  post   'logout' => :create
end

日志:

Started GET "/logout" for 10.10.100.185 at 2013-09-16 17:04:20 -0400

ActionController::RoutingError (No route matches [GET] "/logout"):
  actionpack (3.2.13) lib/action_dispatch/middleware/debug_exceptions.rb:21:in `call'
  actionpack (3.2.13) lib/action_dispatch/middleware/show_exceptions.rb:56:in `call'
  ...

为什么[Get]当控制器显示“method :: delete”时?为什么它在开发中工作,而不是生产?

答案

两者都在推动你解决问题。

  • 首先要确定你没有assets控制器。
  • 然后一定要很好地了解路线。有good article about
  • 检查环境配置文件之间的差异
  • 考虑阅读或审查配置rails guides

我知道这只是一个检查线,但这有助于关注正确的观点。

以上是关于为什么Sprockets没有找到我编译的资产?的主要内容,如果未能解决你的问题,请参考以下文章

为啥预编译资产不再起作用?

禁用 Asset Pipeline/Sprockets Rails 4.1

ruby on rails升级资产预编译失败

Rails 预编译供应商/资产

我可以在资产编译后删除 Heroku 上的应用程序/资产以减少 slug 大小吗

ruby 不要在开发中缓存Rails / Sprockets资产