2013-06-06 59 views
2

我在這裏有點堅果。Rails的HAML資源precompile與initialize_on_precompile錯誤

我有2臺服務器(heroku,相同的配置)在2個環境(分段,生產)。

分段按需編譯我的資產/模板,並緩存它沒有問題。 生產用作未編譯爲html(即HAML標記)文件

的問題是:在2對環境的配置是相同的(除了郵件服務器)

寶石,環境配置和YML是相同的。

任何想法?

更新:

引入haml資產,其中兩臺服務器而生的 「預編譯」。由於爲生產而編譯的資產,分段沒有使文件丟失並重新編譯。

現在我堅持將haml添加到initialize_on_precompile爲false的資產編譯管道中。

staging.rb/production.rb

config.cache_classes = true 

config.consider_all_requests_local  = false 
config.action_controller.perform_caching = true 

config.serve_static_assets = true 

config.static_cache_control = "public, max-age=2592000" 

config.assets.compress = true 
config.assets.compile = true 

config.assets.digest = true 

config.assets.precompile += %w(jquery.js modernizr+respond.js polyfills.js) 
config.assets.precompile += %w(gp.js ad.js richmarker.js infobox.js) 

config.assets.css_compressor = :yui 
config.assets.js_compressor = :uglifier 
config.assets.compress=true 

config.threadsafe! unless $rails_rake_task 

config.i18n.fallbacks = true 

config.logger = Logger.new(STDOUT) 
config.logger.level = Logger.const_get(ENV['LOG_LEVEL'] ? ENV['LOG_LEVEL'].upcase : 'INFO') 

config.active_support.deprecation = :notify 

config.action_dispatch.rack_cache = { 
    :metastore => Dalli::Client.new, 
    :entitystore => 'file:tmp/cache/rack/body', 
    :allow_reload => false 
} 

Haml::Template.options[:ugly] = true 
+0

對此的任何更新? – Nikola

+0

這是一個棘手的問題。預編譯器從未完成編譯haml資源。並且分段服務於他們在運行時編譯。 –

回答

1

溶液到HAML添加到負載。將以下內容添加到application.rb

Sprockets.register_engine '.haml', Tilt::HamlTemplate