application.css 未作为资产提供
编辑 4、5 和 6
8 小时后,欢迎任何更多想法:) 也许这个错误已经被知道并解决了,但是当你有这个时,我得到了我在编辑 2 和 3 中描述的行为在 app/assets/stylesheets 的 .css.erb 文件中:
li {
background-image: url(<%= asset_path "logo_80px_80px.png" %>);
}
问题部分似乎是 asset_path 方法调用,但 .css.scss 也用以下内容打破了它:
li {
background-image: url(image-path("logo_80px_80px.png"));
}
My GemFile is:
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
My 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
---Archived---
ORIGINAL POST
我有一个 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(<%= asset_path "activities/text_editor_toolbar.png" %>);
}
这可以给出正确的字符串,例如:assets/activities/text_editor_toolbar.png"
,它显示在编译的文件中application-(hash).css
文件在开发模式下提供,但在生产模式下不提供,这太奇怪了:| :@
编辑 2 。 好吧,这变得更好了,但更奇怪了。似乎如果我在生产模式下运行一次,它就会失败。在开发中再次运行它,然后在生产中再次运行它,它将花费很长时间并启动 ' Microsoft Console Based Script Host'就像它预编译资产一样,从输出来看,它似乎正在执行此操作,然后才最终渲染页面并成功提供应用程序-(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
预编译资源后,只需在开发模式下运行,请求一个页面(这是必需的),然后在生产中运行并再次请求主页足以让它触发第二次预编译。
现在,我的机器(win 7-64位)完全重新启动后仍然存在。所以我认为这是一个持续存在的错误。
StackOverflow 是继续此讨论的最佳地点还是最好继续访问 Sprocket git-hub 页面,或者什么?
EDIT 4, 5 and 6
8 hours in, any more ideas are welcome :) Maybe this bug is already known and solved, but I get the behaviour I described in edit 2&3, when you have this in a .css.erb file in app/assets/stylesheets :
li {
background-image: url(<%= asset_path "logo_80px_80px.png" %>);
}
The problem part seems to be the asset_path
method call, but .css.scss also breaks it with:
li {
background-image: url(image-path("logo_80px_80px.png"));
}
My GemFile is:
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
My Gemfile.lock is:
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 contents:
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 contents:
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
---Archived---
ORIGINAL POST
I have a Rails 3.1 application that was serving the application.css file when in production mode. After having some unrelated problems I found out about precompiling the assets using:
bundle exec rake assets:precompile RAILS_ENV=production
My application.css file, pre-compiled to produce: 'application-79d6fafe46c10758d8f5a921f1e55ecd.css' but is now not being served despite being present in the public/assets folder. The application.js file is being served fine (as application-9a36deba94d6308ab9bebe4e30a93959.js). Also I note that this problem first appeared after I created a .css.erb file, as suggested by the article on precompilation.
Any thoughts on what I try to do? I'm going to try undoing the .css.erb file, run precompilation again and see if I get my application.css file served.
EDIT 1
Problem does not come from changing .css
file to .css.erb
. And the erb works fine. Problem seems to come when the asset_path
function is used e.g.:
.button_one {
background-image: url(<%= asset_path "activities/text_editor_toolbar.png" %>);
}
This works to give the correct string e.g.: assets/activities/text_editor_toolbar.png"
, which shows up in the compiled application-(hash).css
file which is served in development but not production mode. This is so weird. :| :@
Edit 2
Okay this just got better, but weirder. Seems if I run it once in production mode, it fails. Run it again in development, then again in production and it'll spend ages and launch the 'Microsoft Console Based Script Host' just like it's precompiling the assets, which from the output it seems like it's doing, before finally rendering the page and serving the application-(hash).css successfully:
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
?
Edit 3
You don't need to run it once in production mode first (i.e. it's actually the act of running in development, that does something to trigger the production mode to (?) re-precompile the assets). After using rake
to precompile the assets, it just needs to be run in development mode, request a page (which is necessary), then run in production and requesting home page again is enough for it to trigger what seems like the second precompile.
This has now survived a complete reboot of my machine (win 7-64bit). So I think it's a consistent bug.
Is StackOverflow the best place to continue this discussion or is it best to go on to the Sprocket git-hub page, or something?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
我遇到了完全相同的问题,并通过在 Production.rb 文件中将此选项更改为 true(默认情况下为 false)来解决它。
据我了解,如果您在 Apache 或 nginx 下运行,则将此选项设置为 false 是有意义的,但我的情况并非如此。
I had the exact same issue, and solved it by changing this option to true (it is at false by default) in my production.rb file.
From what I understand, setting this option to false makes sense if you are running under Apache or nginx, which was not my case.
前几天我遇到了这个问题,并通过编辑 Production.rb 文件解决了它,
这是我最终得到的资产设置。我预编译我的资产,同时使用 capistrano 进行部署。
在编辑资产设置之前,我遇到了完全相同的问题。正在请求 .css 并将其编译到我的 public/assets 文件夹中,但服务器找不到这些文件。
I had this issue the other day and solved it by editing the production.rb file
Are the asset settings I ended up with. I precompile my assets, while deploying with capistrano.
Before I edited the asset settings, I had exactly the same issue. The .css was being requested and was compiled into my public/assets folder but the server couldnt find the files.
为了简单起见,我喜欢使用
.css.scss
扩展名并使用:完整参考可以在 Rails 指南 第 2.2.2 节下。
To keep things simple I like to use the
.css.scss
exstension and use:Full reference can be found on Rails Guides under Section 2.2.2.