application.css不作为资产

编辑4,5和6

8个小时,欢迎任何更多的想法:)也许这个bug已经知道并解决了,但是我得到了我在编辑2和3中描述的行为,当你在app / assets / stylesheets中的.css.erb文件中有这个时:

li { background-image: url(); } 

问题部分似乎是asset_path方法调用,但.css.scss也打破了它:

 li { background-image: url(image-path("logo_80px_80px.png")); } 

我的GemFile是:

 source 'http://rubygems.org' gem 'rails', '3.1.3' gem 'pg', '0.11.0' gem 'gravatar_image_tag', '1.0.0.pre2' gem 'will_paginate' gem 'rake' gem 'jquery-rails' gem 'nested_form' gem 'acts-as-taggable-on' gem 'sass-rails' group :assets do gem 'coffee-rails', '~> 3.1.0' gem 'uglifier', '>= 1.0.3' end group :development do gem 'rspec-rails', '2.5.0' gem 'annotate', '2.4.0' gem 'faker', '0.3.1' end group :test do gem 'rspec', '2.5.0' gem 'webrat', '0.7.1' gem 'factory_girl_rails', '1.0' end group :production do gem 'therubyracer-heroku' end 

我的Gemfile.lock是:

 GEM remote: http://rubygems.org/ specs: actionmailer (3.1.3) actionpack (= 3.1.3) mail (~> 2.3.0) actionpack (3.1.3) activemodel (= 3.1.3) activesupport (= 3.1.3) builder (~> 3.0.0) erubis (~> 2.7.0) i18n (~> 0.6) rack (~> 1.3.5) rack-cache (~> 1.1) rack-mount (~> 0.8.2) rack-test (~> 0.6.1) sprockets (~> 2.0.3) activemodel (3.1.3) activesupport (= 3.1.3) builder (~> 3.0.0) i18n (~> 0.6) activerecord (3.1.3) activemodel (= 3.1.3) activesupport (= 3.1.3) arel (~> 2.2.1) tzinfo (~> 0.3.29) activeresource (3.1.3) activemodel (= 3.1.3) activesupport (= 3.1.3) activesupport (3.1.3) multi_json (~> 1.0) acts-as-taggable-on (2.2.1) rails (~> 3.1) annotate (2.4.0) arel (2.2.1) builder (3.0.0) coffee-rails (3.1.1) coffee-script (>= 2.2.0) railties (~> 3.1.0) coffee-script (2.2.0) coffee-script-source execjs coffee-script-source (1.1.3) diff-lcs (1.1.3) erubis (2.7.0) execjs (1.2.12) multi_json (~> 1.0) factory_girl (1.3.3) factory_girl_rails (1.0) factory_girl (~> 1.3) rails (>= 3.0.0.beta4) faker (0.3.1) gravatar_image_tag (1.0.0.pre2) hike (1.2.1) i18n (0.6.0) jquery-rails (1.0.19) railties (~> 3.0) thor (~> 0.14) json (1.6.3) mail (2.3.0) i18n (>= 0.4.0) mime-types (~> 1.16) treetop (~> 1.4.8) mime-types (1.17.2) multi_json (1.0.4) nested_form (0.1.1) nokogiri (1.5.0-x86-mingw32) pg (0.11.0-x86-mingw32) polyglot (0.3.3) rack (1.3.5) rack-cache (1.1) rack (>= 0.4) rack-mount (0.8.3) rack (>= 1.0.0) rack-ssl (1.3.2) rack rack-test (0.6.1) rack (>= 1.0) rails (3.1.3) actionmailer (= 3.1.3) actionpack (= 3.1.3) activerecord (= 3.1.3) activeresource (= 3.1.3) activesupport (= 3.1.3) bundler (~> 1.0) railties (= 3.1.3) railties (3.1.3) actionpack (= 3.1.3) activesupport (= 3.1.3) rack-ssl (~> 1.3.2) rake (>= 0.8.7) rdoc (~> 3.4) thor (~> 0.14.6) rake (0.9.2.2) rdoc (3.12) json (~> 1.4) rspec (2.5.0) rspec-core (~> 2.5.0) rspec-expectations (~> 2.5.0) rspec-mocks (~> 2.5.0) rspec-core (2.5.2) rspec-expectations (2.5.0) diff-lcs (~> 1.1.2) rspec-mocks (2.5.0) rspec-rails (2.5.0) actionpack (~> 3.0) activesupport (~> 3.0) railties (~> 3.0) rspec (~> 2.5.0) sass (3.1.12) sass-rails (3.1.5) actionpack (~> 3.1.0) railties (~> 3.1.0) sass (~> 3.1.10) tilt (~> 1.3.2) sprockets (2.0.3) hike (~> 1.2) rack (~> 1.0) tilt (~> 1.1, != 1.3.0) therubyracer-heroku (0.8.1.pre3) thor (0.14.6) tilt (1.3.3) treetop (1.4.10) polyglot polyglot (>= 0.3.1) tzinfo (0.3.31) uglifier (1.2.0) execjs (>= 0.3.0) multi_json (>= 1.0.2) webrat (0.7.1) nokogiri (>= 1.2.0) rack (>= 1.0) rack-test (>= 0.5.3) will_paginate (3.0.2) PLATFORMS x86-mingw32 DEPENDENCIES acts-as-taggable-on annotate (= 2.4.0) coffee-rails (~> 3.1.0) factory_girl_rails (= 1.0) faker (= 0.3.1) gravatar_image_tag (= 1.0.0.pre2) jquery-rails nested_form pg (= 0.11.0) rails (= 3.1.3) rake rspec (= 2.5.0) rspec-rails (= 2.5.0) sass-rails therubyracer-heroku uglifier (>= 1.0.3) webrat (= 0.7.1) will_paginate 

application.rb内容:

 require File.expand_path('../boot', __FILE__) require 'rails/all' if defined?(Bundler) Bundler.require(*Rails.groups(:assets => %w(development test))) end module AjpApp class Application < Rails::Application config.encoding = "utf-8" config.filter_parameters += [:password] config.assets.enabled = true config.assets.version = '1.0' end end 

config / environments / production.rb内容:

 AjpApp::Application.configure do config.cache_classes = true config.consider_all_requests_local = false config.action_controller.perform_caching = true config.serve_static_assets = false config.assets.compress = true config.assets.compile = true config.assets.digest = true config.i18n.fallbacks = true config.active_support.deprecation = :notify end 

— —存档

原始邮政

我有一个Rails 3.1应用程序,它在生产模式下提供application.css文件。 在遇到一些不相关的问题后,我发现了使用以下方法预编译资产 :

 bundle exec rake assets:precompile RAILS_ENV=production 

我的application.css文件,预编译生成:’application-79d6fafe46c10758d8f5a921f1e55ecd.css’但现在尽管存在于public / assets文件夹中但仍未提供服务。 application.js文件正常运行(如application-9a36deba94d6308ab9bebe4e30a93959.js)。 另外我注意到这个问题首先出现在我创建.css.erb文件后,正如预编译文章所建议的那样。

对我尝试做什么的任何想法? 我将尝试撤消.css.erb文件,再次运行预编译,看看我是否提供了我的application.css文件。

编辑1

问题不是来自将.css文件更改为.css.erb 。 并且erb工作得很好。 使用asset_path函数时似乎出现问题,例如:

 .button_one { background-image: url(); } 

这可以提供正确的字符串,例如: assets/activities/text_editor_toolbar.png" ,它显示在编译的application-(hash).css文件中,该文件在开发中提供但不是生产模式。这太奇怪了。:|: @

编辑2好的,这只是变得更好,但更奇怪。 似乎如果我在生产模式下运行一次,它就会失败。 在开发中再次运行它,然后再次在生产中运行它将花费很长时间并启动“基于Microsoft控制台的脚本主机”,就像它在最终呈现页面和服务之前预编译资产一样 ,从输出看起来像它正在做的那样application-(hash).css成功:

 C:\documents\ror\ajp_app>rails s -e production => Booting WEBrick => Rails 3.1.3 application starting in production on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2011-12-19 23:59:12] INFO WEBrick 1.3.1 [2011-12-19 23:59:12] INFO ruby 1.9.2 (2011-07-09) [i386-mingw32] [2011-12-19 23:59:12] INFO WEBrick::HTTPServer#start: pid=4052 port=3000 cache: [GET /] miss Started GET "/" for 127.0.0.1 at 2011-12-19 23:59:26 +0000 Processing by PagesController#home as HTML Rendered pages/home.html.erb within layouts/application (85.0ms) Rendered layouts/_header.html.erb (2.0ms) Rendered layouts/_footer.html.erb (1.0ms) Completed 200 OK in 393ms (Views: 382.0ms | ActiveRecord: 10.0ms) cache: [GET /assets/application-a05ca896e645eacb50266c7866d18a0f.css] miss Started GET "/assets/application-a05ca896e645eacb50266c7866d18a0f.css" for 127.0.0.1 at 2011-12-19 23:59:27 +0000 Nonexistent asset application-a05ca896e645eacb50266c7866d18a0f.css @ a05ca896e645eacb50266c7866d18a0f Served asset /application-a05ca896e645eacb50266c7866d18a0f.css - 404 Not Found (44ms) ActionController::RoutingError (No route matches [GET] "/assets/application-a05ca896e645eacb50266c7866d18a0f.css"): Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms) [2011-12-19 23:59:39] INFO going to shutdown ... [2011-12-19 23:59:39] INFO WEBrick::HTTPServer#start done. Exiting C:\documents\ajp_app>rails s => Booting WEBrick => Rails 3.1.3 application starting in development on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2011-12-20 00:00:14] INFO WEBrick 1.3.1 [2011-12-20 00:00:14] INFO ruby 1.9.2 (2011-07-09) [i386-mingw32] [2011-12-20 00:00:14] INFO WEBrick::HTTPServer#start: pid=2752 port=3000 Started GET "/" for 127.0.0.1 at 2011-12-20 00:00:20 +0000 Processing by PagesController#home as HTML ←[1m←[36m (0.0ms)←[0m ←[1mSHOW search_path←[0m ←[1m←[35mUser Load (1.0ms)←[0m SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1 Rendered pages/home.html.erb within layouts/application (171.0ms) Compiled application.css (4ms) (pid 2752) Compiled colours.css (9ms) (pid 2752) Compiled custom.css (1ms) (pid 2752) Compiled activity.css (26ms) (pid 2752) Compiled jquery/jquery-ui-1.8.13.custom.css (1ms) (pid 2752) Compiled ellib/elcommon.css (30ms) (pid 2752) Compiled ellib/eldialogform.css (0ms) (pid 2752) Compiled elrte/elrte.css (0ms) (pid 2752) Compiled activities/text_editor.css (2ms) (pid 2752) Compiled errors.activities.css (0ms) (pid 2752) Compiled errors_and_notices.css (0ms) (pid 2752) Compiled general.css (0ms) (pid 2752) Compiled application.js (15ms) (pid 2752) Compiled jquery.js (13ms) (pid 2752) Compiled jquery_ujs.js (0ms) (pid 2752) Compiled jquery-ui.js (19ms) (pid 2752) Compiled AJP_main.js (1ms) (pid 2752) Compiled ajp.utilities.js (2ms) (pid 2752) Rendered layouts/_header.html.erb (4.0ms) Rendered layouts/_footer.html.erb (2.0ms) Completed 200 OK in 1091ms (Views: 1076.0ms | ActiveRecord: 15.0ms) Started GET "/assets/custom.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /custom.css - 304 Not Modified (6ms) Started GET "/assets/jquery/jquery-ui-1.8.13.custom.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /jquery/jquery-ui-1.8.13.custom.css - 304 Not Modified (7ms) Started GET "/assets/ellib/eldialogform.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /ellib/eldialogform.css - 304 Not Modified (5ms) Started GET "/assets/elrte/elrte.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /elrte/elrte.css - 304 Not Modified (5ms) Started GET "/assets/activities/text_editor.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /activities/text_editor.css - 304 Not Modified (9ms) Started GET "/assets/activity.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /activity.css - 200 OK (10ms) Started GET "/assets/errors.activities.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /errors.activities.css - 304 Not Modified (3ms) Started GET "/assets/errors_and_notices.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /errors_and_notices.css - 304 Not Modified (3ms) Started GET "/assets/general.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /general.css - 304 Not Modified (3ms) Started GET "/assets/jquery.js?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /jquery.js - 304 Not Modified (12ms) Started GET "/assets/jquery_ujs.js?body=1" for 127.0.0.1 at 2011-12-20 00:00:28 +0000 Served asset /jquery_ujs.js - 304 Not Modified (8ms) Started GET "/assets/jquery-ui.js?body=1" for 127.0.0.1 at 2011-12-20 00:00:29 +0000 Served asset /jquery-ui.js - 304 Not Modified (42ms) Started GET "/assets/AJP_main.js?body=1" for 127.0.0.1 at 2011-12-20 00:00:29 +0000 Served asset /AJP_main.js - 304 Not Modified (3ms) Started GET "/assets/ajp.utilities.js?body=1" for 127.0.0.1 at 2011-12-20 00:00:29 +0000 Served asset /ajp.utilities.js - 304 Not Modified (10ms) Started GET "/assets/ellib/elcommon.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:29 +0000 Served asset /ellib/elcommon.css - 304 Not Modified (5ms) Started GET "/assets/colours.css?body=1" for 127.0.0.1 at 2011-12-20 00:00:29 +0000 Served asset /colours.css - 304 Not Modified (12ms) Started GET "/assets/activities/hello.png" for 127.0.0.1 at 2011-12-20 00:00:30 +0000 Served asset /activities/hello.png - 404 Not Found (13ms) ActionController::RoutingError (No route matches [GET] "/assets/activities/hello.png"): Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms) [2011-12-20 00:00:37] INFO going to shutdown ... [2011-12-20 00:00:37] INFO WEBrick::HTTPServer#start done. Exiting C:\documents\ajp_app>rails s -e production => Booting WEBrick => Rails 3.1.3 application starting in production on http://0.0.0.0:3000 => Call with -d to detach => Ctrl-C to shutdown server [2011-12-20 00:01:17] INFO WEBrick 1.3.1 [2011-12-20 00:01:17] INFO ruby 1.9.2 (2011-07-09) [i386-mingw32] [2011-12-20 00:01:17] INFO WEBrick::HTTPServer#start: pid=5912 port=3000 cache: [GET /] miss Started GET "/" for 127.0.0.1 at 2011-12-20 00:01:20 +0000 Processing by PagesController#home as HTML Rendered pages/home.html.erb within layouts/application (91.0ms) Rendered layouts/_header.html.erb (3.0ms) Rendered layouts/_footer.html.erb (1.0ms) Completed 200 OK in 400ms (Views: 387.0ms | ActiveRecord: 12.0ms) cache: [GET /assets/application-a05ca896e645eacb50266c7866d18a0f.css] miss, store Started GET "/assets/application-a05ca896e645eacb50266c7866d18a0f.css" for 127.0.0.1 at 2011-12-20 00:01:21 +0000 Compiled application-a05ca896e645eacb50266c7866d18a0f.css (4ms) (pid 5912) Compiled colours.css (9ms) (pid 5912) Compiled custom.css (0ms) (pid 5912) Compiled activity.css (21ms) (pid 5912) Compiled jquery/jquery-ui-1.8.13.custom.css (1ms) (pid 5912) Compiled ellib/elcommon.css (0ms) (pid 5912) Compiled ellib/eldialogform.css (1ms) (pid 5912) Compiled elrte/elrte.css (1ms) (pid 5912) Compiled activities/text_editor.css (0ms) (pid 5912) Compiled errors.activities.css (1ms) (pid 5912) Compiled errors_and_notices.css (0ms) (pid 5912) Compiled general.css (0ms) (pid 5912) Served asset /application-a05ca896e645eacb50266c7866d18a0f.css - 200 OK (871ms) cache: [GET /assets/application-9a36deba94d6308ab9bebe4e30a93959.js] miss Started GET "/assets/application-9a36deba94d6308ab9bebe4e30a93959.js" for 127.0.0.1 at 2011-12-20 00:01:22 +0000 Compiled application-9a36deba94d6308ab9bebe4e30a93959.js (9ms) (pid 5912) Compiled jquery.js (13ms) (pid 5912) Compiled jquery_ujs.js (1ms) (pid 5912) Compiled jquery-ui.js (19ms) (pid 5912) Compiled AJP_main.js (0ms) (pid 5912) Compiled ajp.utilities.js (32ms) (pid 5912) Served asset /application-9a36deba94d6308ab9bebe4e30a93959.js - 304 Not Modified (110802ms) cache: [GET /assets/logo_80px_80px-27d7b084daa398621574b10963529e84.png] miss Started GET "/assets/logo_80px_80px-27d7b084daa398621574b10963529e84.png" for 127.0.0.1 at 2011-12-20 00:03:13 +0000 Served asset /logo_80px_80px-27d7b084daa398621574b10963529e84.png - 304 Not Modified (3ms) cache: [GET /assets/hello.png] miss Started GET "/assets/hello.png" for 127.0.0.1 at 2011-12-20 00:03:13 +0000 Served asset /hello.png - 404 Not Found (3ms) ActionController::RoutingError (No route matches [GET] "/assets/hello.png"): Rendered C:/Ruby192/lib/ruby/gems/1.9.1/gems/actionpack-3.1.3/lib/action_dispatch/middleware/templates/rescues/routing_error.erb within rescues/layout (1.0ms) 

。 。 。 :-D&: – o?

编辑3您不需要先在生产模式下运行一次(即它实际上是在开发中运行的行为,它会触发生产模式以(?)重新预编译资产)。 在使用rake预编译资产之后,它只需要在开发模式下运行,请求页面(这必要的),然后在生产中运行并再次请求主页足以触发看起来像第二个预编译的内容。

这已经幸免于我的机器完全重启(赢7-64bit)。 所以我认为这是一个一致的错误。

StackOverflow是继续讨论的最佳位置,还是最好继续使用Sprocket git-hub页面 ?

我有完全相同的问题,并通过在我的production.rb文件中将此选项更改为true(默认情况下为false)来解决它。

  # Disable Rails's static asset server (Apache or nginx will already do this) config.serve_static_assets = true 

根据我的理解,如果你在Apache或nginx下运行,将此选项设置为false是有意义的,这不是我的情况。

前几天我遇到了这个问题,并通过编辑production.rb文件解决了这个问题

 config.assets.compress = true config.assets.compile = true config.assets.digest = true config.assets.initialize_on_precompile = false 

我最终得到的资产设置。 我在使用capistrano进行部署时预编译了我的资产。

在编辑资产设置之前,我遇到了完全相同的问题。 正在请求.css并将其编译到我的public / assets文件夹中,但服务器无法找到这些文件。

为了简单起见,我喜欢使用.css.scss exstension并使用:

 li { background-image: image-url("logo_80px_80px.png"); } 

完整的参考资料可以在第2.2.2节的Rails指南中找到。