0

如題,我把我的Rails應用程序在AWS彈性魔豆運行。Rails的沒有彈性魔豆裝入資產

我的EB配置:64位Linux的亞馬遜V2.4.0 2017.03紅寶石運行2.2(彪馬)

EB部署工作正常。

INFO: Environment update is starting. 
INFO: Deploying new version to the instance(s). 
INFO: Environment health has transitioned from Ok to Info. Application update in progress on 1 instance. 0 out of 1 instance completed 
(running for 38 seconds). 
INFO: New application version was deployed to running EC2 instances. 
INFO: Environment update completed successfully. 

但是,當我運行結束網絡,it showed like this

看來,Rails的沒有加載資產。谷歌搜索類似主題後,我發現爲什麼,但我不能修復它。

我的問題是一樣的Rails app not loading assets on elastic beanstalk aws

雖然部署,EB將根據public/assets在你的清單執行rake assets:precompile然後生成文件。 所有資產文件的名稱將被添加MD5,指紋識別,如:

application-33792387f876db5e0593b1aff357fb300ab2fad24f42d463f4010ac271abb6ae.js

而且還有一個.sprockets-manifest-md5hash.json這似乎不工作,以避免簡單的映射請求回鏈輪。

當我試圖訪問我的靜態文件,例如:/assets/picture.png,狀態代碼404未找到。

http://my_app/assets/picture.png (404 not found) http://my_app/assets/picture-MD5hash.png (200 complete)

但第一個應該工作,如果.sprockets-manifest-MD5hash.json作品。

這裏是我的/config/environments/production.rb

Rails.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 threaded web servers 
    # and those relying on a 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 serving static files from the `/public` folder by default since 
    # Apache or NGINX already handles this. 
    config.serve_static_files = ENV['RAILS_SERVE_STATIC_FILES'].present? 

    # Compress JavaScripts and CSS. 

    # config.assets.css_compressor = :sass 
    # config.assets.css_compressor = :yui 
    config.assets.js_compressor = :uglifier 

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

    # Asset digests allow you to set far-future HTTP expiration dates on all assets, 
    # yet still be able to expire them through the digest params. 
    config.assets.digest = true 

    # `config.assets.precompile` and `config.assets.version` have moved to config/initializers/assets.rb 

    # 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 

    # Use the lowest log level to ensure availability of diagnostic information 
    # when problems arise. 
    config.log_level = :debug 

    # 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) 

    # config.logger = Logger.new(config.paths["log"].first, 'daily') # 或 weekly,monthly 

    # 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' 

    # 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 cannot be found). 
    config.i18n.fallbacks = true 

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

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

    # Do not dump schema after migrations. 
    config.active_record.dump_schema_after_migration = false 
end 

任何想法如何解決這一問題?

回答

0

如下步驟:

  1. 轉到config/environments/production.rb

    config.assets.compile = true

  2. 運行命令:RAILS_ENV=production rake assets:precompile

  3. 然後推與menifest所有已編譯的文件。

+0

不適合我。我也嘗試設置assets.digest =假,仍然沒有工作。 – Howardcch

+0

並沒有爲我工作的。 –