2011-12-19 15 views
10

EDITAR 4, 5 y 6no application.css que se sirve como un activo

8 horas en, como tampoco las ideas son bienvenidas :) Tal vez este error ya es conocido y resuelto, pero me sale el comportamiento que describen en la edición 2 & 3, cuando se tiene esto en un archivo .css.erb en app/activos/hojas de estilo:

li { 
    background-image: url(<%= asset_path "logo_80px_80px.png" %>); 
} 

la parte problema parece ser la llamada al método asset_path, pero también rompe .css.scss con:

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

Mi Gemfile es:

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 

Mi Gemfile.lock es:

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 

contenido application.rb:/entornos contenido

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/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 

--- --- Archivado

Post original

que tienen una aplicación Rails 3.1 que estaba sirviendo el archivo application.css en el modo de producción. After having some unrelated problems me enteré de precompiling the assets usando:

bundle exec rake assets:precompile RAILS_ENV=production 

Mi archivo application.css, pre-compilados para producir: 'aplicación 79d6fafe46c10758d8f5a921f1e55ecd.css' pero ahora no se sirve a pesar de estar presente en la carpeta pública/activos. El archivo application.js se sirve correctamente (como application-9a36deba94d6308ab9bebe4e30a93959.js). También observo que este problema apareció por primera vez después de crear un archivo .css.erb, como lo sugiere el artículo en precompilation.

¿Alguna idea de lo que intento hacer? Voy a intentar deshacer el archivo .css.erb, ejecutar la precompilación de nuevo y ver si obtengo mi archivo application.css.

EDIT 1

problema no viene de cambiar .css archivo a .css.erb. Y el erb funciona bien. El problema parece venir cuando se utiliza la función de asset_path ej .:

.button_one { 
    background-image: url(<%= asset_path "activities/text_editor_toolbar.png" %>); 
} 

Esto funciona para dar la cadena correcta ej .: assets/activities/text_editor_toolbar.png", que se muestra en el archivo compilado application-(hash).css que se sirve en el desarrollo, pero no en el modo de producción. Esto es tan extraño. : | : @

Editar 2 Bien, esto ha mejorado, pero es más raro. Parece que si lo ejecuto una vez en modo de producción, falla.Ejecutarlo de nuevo en el desarrollo, y de nuevo en la producción y it'll spend ages and launch the 'Microsoft Console Based Script Host' just like it's precompiling the assets, que desde la salida parece que está haciendo, antes de finalmente hacer que la página y servir a la aplicación- (hash) Css éxito:

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 ?

Datos 3 No es necesario ejecutar una vez en el modo de producción de primera (es decir, que es en realidad el acto de ejecutar en el desarrollo, que hace algo para activar el modo de producción a (?) Re-precompilación los activos) Después de usar rake para precompilar los activos, solo necesita ejecutarse en modo de desarrollo, solicitar una página (que es es necesario), luego ejecutar en producción y solicitar de nuevo la página de inicio es suficiente para que active lo que parece la segunda precompilación .

Esto ahora ha sobrevivido a un reinicio completo de mi máquina (ganar 7-64 bits). Entonces creo que es un error consistente.

¿StackOverflow es el mejor lugar para continuar esta discusión o es mejor continuar con el Sprocket git-hub page, o algo así?

+0

¿Se compila para css válido? ¿Has probado usar image-url? –

+0

Sí, es válido css. funciona bien en desarrollo. Simplemente no se sirve en producción. Da el error: 'ActionController :: RoutingError (Ninguna ruta coincide con [GET]" /assets/application-b2949754ecb8dda278c219b2cf589c83.css ")' a pesar de que el archivo está allí .... volviéndose un poco loco. – AJP

+0

¿Podría también pegar 'config/application.rb' y' config/environments/production.rb'? –

Respuesta

3

tuve este problema el otro día y lo resolvió mediante la edición del archivo production.rb

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

son los ajustes de activos que terminó con. Precompilo mis activos, mientras estoy desplegando con capistrano.

Antes de editar la configuración de los activos, tenía exactamente el mismo problema. El archivo .css se estaba solicitando y se compiló en mi carpeta public/assets, pero el servidor no pudo encontrar los archivos.

+1

Hola, Benjamin. Muchas gracias por su ayuda.La sugerencia no pareció funcionar en mi caso desafortunadamente, todavía obtenía 'ActionController :: RoutingError (No ruta coincide con [GET]" /assets/application-3af646520ce8a8ac4b46dae627c89a0a.css ")' cuando se ejecuta en modo de producción. Sin embargo, sirve los archivos .js y .png. Que extraño. – AJP

0

Para simplificar las cosas que me gusta usar la .css.scss exstension y uso:

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

referencia completa se puede encontrar en Rails Guides en la Sección 2.2.2.

13

Tuve exactamente el mismo problema, y ​​lo resolví cambiando esta opción a verdadera (es falsa por defecto) en mi archivo production.rb.

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

Por lo que entiendo, se ajusta esta opción en false tiene sentido si está ejecutando Apache o Nginx, que no era mi caso.

+1

Si está utilizando Heroku, también querrá que este conjunto sea falso. –

Cuestiones relacionadas