5

新しい 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>

アップデート2:

アプリケーション.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 .
 */

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

何が原因なのかわからないのですが、どなたかご存知ないでしょうか?グレッグ

4

4 に答える 4

7

memcachedストレージで(開発モードで) キャッシュを有効にしたときにこのエラーが発生しましたが、 memcachedプロセスが実行されていませんでした (Rails 3.2.8、Win7)。

したがって、解決策は単にmemcachedを起動して Rails サーバーを再起動することでした。

于 2012-09-12T11:53:21.257 に答える
3

memcache をキャッシュ ストアとして有効にした後も、同様の問題が発生しました ( config.cache_store = :dalli_store)。Rack::Cache ミドルウェアを明示的に非アクティブ化する ( config.action_dispatch.rack_cache = nil) か、設定することで解決できます。

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

https://github.com/rails/rails/issues/8366を参照してください。

于 2012-12-06T14:05:34.753 に答える
2

同様の問題があり、開発環境でキャッシュを無効にすることで解決しました。アセットのオンザフライ コンパイルではキャッシュがうまく機能しないと思います

于 2012-09-12T08:26:22.573 に答える
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")

エンジンにアセットがある場合は、それらも明示的に追加する必要があります。-v 3.1.x では問題なく動作しました。この回避策で問題が修正されたという事実は、バグ (確かに他の人が今までに見つけたはずです) または 3.2.5 での構成変更のいずれかを示しているようです。

于 2012-06-18T17:20:43.893 に答える