2013-11-21 44 views
-4

長話短說,因爲我浪費了足夠的時間在這個愚蠢的框架上。 我想要使用純粹的CSS,沒有SCSS,沒有css.erb,沒有mumbo-jumpo,增加了更多的開銷解析,即使它是2ms多。導軌4資產Bug,不加載圖片

我production.rb文件(我用的WEBrick):

Properties::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 

    # Eager load code on boot. This eager loads most of Rails and 
    # your application in memory, allowing both thread web servers 
    # and those relying on copy on write to perform better. 
    # Rake tasks automatically ignore this option for performance. 
    config.eager_load = true 

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

    # Enable Rack::Cache to put a simple HTTP cache in front of your application 
    # Add `rack-cache` to your Gemfile before enabling this. 
    # For large-scale production use, consider using a caching reverse proxy like nginx, varnish or squid. 
    # config.action_dispatch.rack_cache = true 

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

    # Compress JavaScripts and CSS. 
    config.assets.js_compressor = :uglifier 
    # config.assets.css_compressor = :sass 

    # Do not fallback to assets pipeline if a precompiled asset is missed. 
    config.assets.compile = false 

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

    # Version of your assets, change this if you want to expire all your assets. 
    config.assets.version = '1.0' 

    # 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 

    # Set to :debug to see everything in the log. 
    config.log_level = :info 

    # Prepend all log lines with the following tags. 
    # config.log_tags = [ :subdomain, :uuid ] 

    # Use a different logger for distributed setups. 
    # config.logger = ActiveSupport::TaggedLogging.new(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 in app/assets folder are already added. 
    # config.assets.precompile += %w(search.js) 

    # Ignore bad email addresses and do not raise email delivery errors. 
    # Set this to true and configure the email server for immediate delivery to raise delivery errors. 
    # config.action_mailer.raise_delivery_errors = false 

    # 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 

    # Disable automatic flushing of the log to improve performance. 
    # config.autoflush_log = false 

    # Use default logging formatter so that PID and timestamp are not suppressed. 
    config.log_formatter = ::Logger::Formatter.new 
end 

現在我已經在資產/樣式稱爲general.css一個簡單的CSS文件,它包含這個簡單的一行:

html{ 
    background-image:url('homepage_bg_1.jpg'); 
} 

現在我曾嘗試:

background-image:url('assets/homepage_bg_1.jpg'); 
background-image:url('public/assets/homepage_bg_1.jpg'); 
background-image:url('public/homepage_bg_1.jpg'); 
background-image:url('assets/images/homepage_bg_1.jpg'); 

沒有什麼工作!它的瀏覽器仍然在尋找一個正常的'homepage_bg_1.jpg'圖片,但是在我的公共資產文件夾中,我有'homepage_bg_1-de4a0800c51d578f152fe5ca821136a6.jpg'。

我正在使用RAILS_ENV=production bundle exec rake assets:precompile來預編譯我的資產。

現在我會假設Rails不夠愚蠢,並且會查找該文件。但它沒有。有人可以告訴我這個框架有什麼問題嗎?我應該在Github上打開一個問題嗎?該框架是否試圖讓我們不使用CSS?

+1

試試這個'background:image-url(「path/to/you/image」)' –

+0

如果你預編譯你的資產並靜態地提供它們,你在運行時就不會有任何開銷。你可能想看看這裏:http://guides.rubyonrails.org/asset_pipeline.html#what-is-fingerprinting-and-why-should-i-care-questionmark –

+0

沒有!解析'背景'的值時出錯。聲明下降了。 –

回答

5

如果您不想讓Rails觸摸任何資產,您可以將它們放在公共目錄中。

這樣你就不會有任何指紋或不需要的預處理。他們將按「原樣」提供服務。您不必混淆Rails設置或進行任何預編譯。

如果您有一天選擇再次使用資產管道,您可以使用這兩種方法。

0

您是否嘗試過使用CSS中的圖像助手來引用圖像的摘要版本?

喜歡的東西...

html { 
    background-image: image-url('homepage_bg_1.jpg'); 
} 

這將會把一個參考圖像與你追加到名稱自動摘要字符串。

+0

」解析'background-image'的值時出錯。聲明已被刪除。「這是我得到的 –

3

如果要在樣式表和JavaScript文件中使用指紋識別資產,則需要對這些資產進行預處理,以便使用資產管道幫助程序方法。而不是咆哮和瘋狂嘗試並閱讀不斷提高的信息guides

您已正確識別出您的資產是用指紋編譯的,這是爲了資產到期並且是管道的一個組成部分。爲了將正確的文件名插入到其他資產中,您需要使用提供的幫助程序。對於ERB使用asset_path和Sass,根據您的要求,您有image-url/image-path/asset-url/asset-path/etc。

+0

我已經低估了你的答案,因爲它沒有幫助,並且報告了你的評論。請儘量保持禮貌,不要使用冒犯性的話語,並且下次給自己留點好東西。 –

+5

你在這整個問題上的態度一直不好,所以請隨時downvote /標記此評論:)。上帝幫助任何必須與你一起工作的人。 –

+0

我在工作時對身邊的人沒有任何問題。感謝您的關注,但請保留您的意見給自己,尤其是那些不基於任何事實的意見。 –