资产管道已损坏:未在css和js文件上进行编译

Gre*_*ory 5 ruby ruby-on-rails asset-pipeline ruby-on-rails-3.2

我开始了一个新的Rails 3.2.5项目,资产管道不再工作了.CSS和Javascript文件不再编译.

这是尝试生成资产时日志的输出:

    Started GET "/assets/application.css?body=1" for 127.0.0.1 at 2012-06-16 23:59:11 -0700
Served asset /application.css - 200 OK (0ms)
[2012-06-16 23:59:11] ERROR NoMethodError: undefined method `each' for nil:NilClass
    /Users/greg/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rack-1.3.6/lib/rack/handler/webrick.rb:71:in `service'
    /Users/greg/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
    /Users/greg/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
    /Users/greg/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:

Started GET "/assets/application.js?body=1" for 127.0.0.1 at 2012-06-16 23:59:11 -0700
Served asset /application.js - 200 OK (0ms)
[2012-06-16 23:59:11] ERROR NoMethodError: undefined method `each' for nil:NilClass
    /Users/greg/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/rack-1.3.6/lib/rack/handler/webrick.rb:71:in `service'
    /Users/greg/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:111:in `service'
    /Users/greg/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/webrick/httpserver.rb:70:in `run'
    /Users/greg/.rbenv/versions/1.9.2-p290/lib/ruby/1.9.1/webrick/server.rb:183:in `block in start_thread'
183:in `block in start_thread'
Run Code Online (Sandbox Code Playgroud)

更新:

<!DOCTYPE html>
<html>
<head>
  <title>Shorai</title>
  <%= csrf_meta_tags %>
</head>
<body id=<%= params[:controller].sub('_controller', '') %>>

  <% if current_user %>
    <%= current_user.name %>
    <%= link_to "Log out", signout_path %>
  <% else %>
    <%= link_to "Sign in", "/auth/37signals" %>
  <% end %>

  <%= yield %>

  <%= stylesheet_link_tag    "application", :media => "all" %>
  <%= javascript_include_tag "application" %>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

UPDATE2:

application.scss

 *
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS and SCSS file within this directory, lib/assets/stylesheets, vendor/assets/stylesheets,
 * or vendor/assets/stylesheets of plugins, if any, can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the top of the
 * compiled file, but it's generally better to create a new file per style scope.
 *
 *= require_self
 *= require_tree .
 */
Run Code Online (Sandbox Code Playgroud)

update3: http ://f.imgtmp.com/Onpqv.png

我不知道造成这种情况的原因,谁都有想法?格雷格

bas*_*s-t 7

当我使用memcached存储启用缓存(在开发模式下)时,我收到此错误,但memcached进程未运行(Rails 3.2.8,Win7).

因此,解决方案是简单地启动memcached并重新启动Rails服务器.


Les*_*ill 1

我对 -v 3.2.5 也有类似的问题。

经过几个小时的调试后,我提出了一个解决方法。这不是很好,但它让我不断前进,直到我能解决它,或者其他人有更好的运气!

我很好奇这个解决方法是否也适合你,格雷戈里......

在 config/application.rb 中,我必须显式添加我的资产的加载路径...所以:

config.assets.paths << Rails.root.join("app", "assets", "stylesheets")
config.assets.paths << Rails.root.join("app", "assets", "javascripts")
config.assets.paths << Rails.root.join("vendor", "assets", "stylesheets")
config.assets.paths << Rails.root.join("vendor", "assets", "javascripts")
config.assets.paths << Rails.root.join("lib", "assets", "javascripts")
Run Code Online (Sandbox Code Playgroud)

如果引擎中有资产,也需要显式添加它们。它在 -v 3.1.x 中工作正常。事实上,这个解决方法解决了这个问题,这似乎表明要么是一个错误(肯定其他人现在已经发现了它),要么是 3.2.5 中的一些配置更改。