Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 资产管道已断开:未动态编译css和js文件_Ruby On Rails_Ruby_Asset Pipeline_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 资产管道已断开:未动态编译css和js文件

Ruby on rails 资产管道已断开:未动态编译css和js文件,ruby-on-rails,ruby,asset-pipeline,ruby-on-rails-3.2,Ruby On Rails,Ruby,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 NoMetho

我启动了一个新的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'
更新

<!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>
更新3:

我不知道是什么原因,有人知道吗?
格雷格

我对-v3.2.5也有类似的问题

经过几个小时的调试,我找到了解决办法。这并不伟大,但它让我移动,直到我能解决它,或其他人有更好的运气

我很好奇这个变通方法是否也适用于你Gregory

在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")

config.assets.paths我也遇到了类似的问题,我通过在开发环境中禁用缓存解决了这个问题。

我认为缓存不能很好地处理动态编译的资产

当我使用memcached存储启用缓存(在开发模式下)时,出现了这个错误,但是memcached进程没有运行(Rails 3.2.8,Win7)


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

在将memcache激活为缓存存储后,我遇到了类似的问题(
config.cache\u store=:dalli\u store
)。我可以通过显式停用Rack::Cache中间件(
config.action\u dispatch.Rack\u Cache=nil
)或通过设置

config.action_dispatch.rack_cache = {
  :metastore    => Dalli::Client.new,
  :entitystore  => 'file:tmp/cache/rack/body',
  :allow_reload => false
}

请参阅。

升级到rails 3.2.6,因为3.2.5在许多方面都已损坏…即使使用rails 3.2.6,我仍然存在此问题:(输出看起来就像您在浏览器中访问页面时看到的一样。您是在开发环境中运行还是在生产环境中运行?当您运行rake assets:precompile时会发生什么?我在开发环境中,当我运行rake assets:precompile时,文件被正确编译。您是否使用.css.erb和/或.js.erb文件?或者如果您没有使用memcache存储,请确保使用com.com。)在
development.rb
文件中删除
config.cache\u store=:mem\u cache\u store
行。
config.action_dispatch.rack_cache = {
  :metastore    => Dalli::Client.new,
  :entitystore  => 'file:tmp/cache/rack/body',
  :allow_reload => false
}