编辑4、5和6
8小时后,欢迎任何更多的想法:)也许这个错误已经被知道并解决了,但是当你在 app/assets/stylesheets 的 .css.erb 文件中有这个时,我得到了我在编辑 2&3 中描述的行为:
li {
background-image: url(<%= asset_path "logo_80px_80px.png" %>);
}
问题部分似乎是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 文件。遇到一些不相关的问题后 https://stackoverflow.com/questions/8554459/more-informative-sass-error-messages我发现关于预编译资产 http://openhood.com/rails/sass/assets/sprockets/2011/05/23/static-assets-on-rails-3.1/ using:
bundle exec rake assets:precompile RAILS_ENV=production
我的 application.css 文件已预编译为生成:“application-79d6fafe46c10758d8f5a921f1e55ecd.css”,但尽管存在于 public/assets 文件夹中,但现在尚未提供服务。 application.js 文件运行良好(如 application-9a36deba94d6308ab9bebe4e30a93959.js)。我还注意到,这个问题在我创建 .css.erb 文件后首先出现,正如文章所建议的预编译 http://openhood.com/rails/sass/assets/sprockets/2011/05/23/static-assets-on-rails-3.1/.
对我尝试做的事情有什么想法吗?我将尝试撤消 .css.erb 文件,再次运行预编译,看看是否可以提供 application.css 文件。
EDIT 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
文件在开发模式下提供,但不在生产模式下提供。这太奇怪了。 :| :@
Edit 2好吧,这变得更好了,但更奇怪了。似乎如果我在生产模式下运行一次,它就会失败。在开发中再次运行它,然后在生产中再次运行它它将花费很长时间并启动“基于 Microsoft 控制台的脚本主机”,就像预编译资产一样 https://stackoverflow.com/questions/8568786/poor-time-performance-of-rake-assetsprecompile,从输出来看,在最终渲染页面并成功提供 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
?
Edit 3您不需要首先在生产模式下运行它一次(即,它实际上是在开发中运行的行为,它会触发生产模式以(?)重新预编译资产)。使用后rake
要预编译资产,只需在开发模式下运行,请求一个页面(其中is必要),然后在生产环境中运行并再次请求主页就足以触发第二次预编译。
现在,我的机器(win 7-64位)完全重新启动后仍然存在。所以我认为这是一个持续存在的错误。
StackOverflow 是继续此讨论的最佳场所还是继续讨论链轮 git-hub 页面 https://github.com/sstephenson/sprockets, 或者其他的东西?