2011-11-30 4 views
16

Si verificano problemi con asset_path nella produzione. Rotaie 3.1.1asset_path in file di file scss

#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 

e

#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 

avere il codice seguente:

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

Nello sviluppo finisce per essere:

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

Nella produzione essa stampa come:

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

Cosa mi manca del tutto?

Grazie per qualsiasi aiuto.

risposta

23

Questo non sembra corretta:

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

Se si desidera utilizzare il asset_path aiuto, ha bisogno di eseguire all'interno dei tag erb (<%%>)

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

e fare certo è il nome del file in modo corretto, cioè example_filename.css.erb


UPDATE: Mi dispiace, non ho notato che stavi usando SASS, non CSS. La mia risposta sopra non è ciò di cui hai bisogno.

Prova a modificare:

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

Vale a dire Credo che il percorso aiutante risorsa utilizza trattini in SASS, non sottolinea

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

+0

Ha funzionato Grazie! –

0

Hai rastrellato le risorse: precompilato? Per impostazione predefinita, Rails non compilerà le risorse in produzione. Il flusso di lavoro consigliato è compilare le risorse come parte della distribuzione.

+0

Sì ciò che sta accadendo nel mio Capistrano distribuire script. –