2011-11-30 7 views
16

Tengo problemas con asset_path en la producción. Carriles 3.1.1asset_path en scss file rails

#config/environments/development.rb 
Scc::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # In the development environment your application's code is reloaded on 
    # every request. This slows down response time but is perfect for development 
    # since you don't have to restart the web server when you make code changes. 
    config.cache_classes = false 

    # Log error messages when you accidentally call methods on nil. 
    config.whiny_nils = true 

    # Show full error reports and disable caching 
    config.consider_all_requests_local  = true 
    config.action_controller.perform_caching = false 

    # Don't care if the mailer can't send 
    config.action_mailer.raise_delivery_errors = false 

    # Print deprecation notices to the Rails logger 
    config.active_support.deprecation = :log 
    config.action_mailer.default_url_options = { :host => 'localhost:3000' } 

    # Only use best-standards-support built into browsers 
    config.action_dispatch.best_standards_support = :builtin 

    # Do not compress assets 
    config.assets.compress = false 

    # Expands the lines which load the assets 
    config.assets.debug = true 
end 

y

#config/environments/production.rb 
Scc::Application.configure do 
    # Settings specified here will take precedence over those in config/application.rb 

    # Code is not reloaded between requests 
    config.cache_classes = true 

    # Full error reports are disabled and caching is turned on 
    config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 

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

    # Compress JavaScripts and CSS 
    config.assets.compress = true 

    # Don't fallback to assets pipeline if a precompiled asset is missed 
    config.assets.compile = false 

    # Generate digests for assets URLs 
    config.assets.digest = true 

    # Defaults to Rails.root.join("public/assets") 
    # config.assets.manifest = YOUR_PATH 

    # Specifies the header that your server uses for sending files 
    # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for apache 
    # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for nginx 

    # Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies. 
    # config.force_ssl = true 

    # See everything in the log (default is :info) 
    # config.log_level = :debug 

    # Use a different logger for distributed setups 
    # config.logger = SyslogLogger.new 

    # Use a different cache store in production 
    # config.cache_store = :mem_cache_store 

    # Enable serving of images, stylesheets, and JavaScripts from an asset server 
    # config.action_controller.asset_host = "http://assets.example.com" 

    # Precompile additional assets (application.js, application.css, and all non-JS/CSS are already added) 
    # config.assets.precompile += %w(search.js) 

    # Disable delivery errors, bad email addresses will be ignored 
    # config.action_mailer.raise_delivery_errors = false 

    # Enable threaded mode 
    # config.threadsafe! 

    # Enable locale fallbacks for I18n (makes lookups for any locale fall back to 
    # the I18n.default_locale when a translation can not be found) 
    config.i18n.fallbacks = true 

    # Send deprecation notices to registered listeners 
    config.active_support.deprecation = :notify 
end 

tengo el siguiente código:

.right-bar-filler{ 
    background:url(asset_path('right_bar_filler.jpg', image)) repeat-y; 
    padding-top:0px; 
} 

En el desarrollo termina siendo:

.right-bar-filler { 
    background: url("/assets/right_bar_filler.jpg") repeat-y; 
    padding-top: 0px; 
} 

En la producción se da salida como:

.right-bar-filler { 
    background: url(asset_path("right_bar_filler.jpg", image)) repeat-y; 
    padding-top: 0px; 
} 

¿Qué es lo que falta?

Gracias por cualquier ayuda.

Respuesta

23

Esto no parece correcta:

.right-bar-filler{ 
    background:url(asset_path('right_bar_filler.jpg', image)) repeat-y; 
    padding-top:0px; 
} 

Si desea utilizar el ayudante asset_path, que necesita para funcionar dentro de las etiquetas erb (<%%>)

.right-bar-filler{ 
    background:url(<%= asset_path('right_bar_filler.jpg', image) %>) repeat-y; 
    padding-top:0px; 
} 

y hacer seguro que el nombre del archivo correctamente, es decir example_filename.css.erb


ACTUALIZACIÓN: Lo siento, no me di cuenta de que estaba usando SASS, no CSS. Mi respuesta anterior no es lo que necesitas.

Tal vez puedas probar:

.right-bar-filler{ 
    background:url(asset-path('right_bar_filler.jpg', image)) repeat-y; 
    padding-top:0px; 
} 

es decir, Creo que el camino ayudante activo utiliza guiones en SASS, no subraya

http://rubydoc.info/github/petebrowne/sprockets-sass/master/Sprockets/Sass/Functions

+0

Eso funcionó ¡Gracias! –

0

¿Ha rake assets: precompile? De forma predeterminada, Rails no compilará activos en producción. El flujo de trabajo recomendado es compilar activos como parte de su implementación.

+0

Si lo que está sucediendo en mi Capistrano desplegar guión. –

Cuestiones relacionadas