2012-03-12 38 views
35

爲了在我的heroku生產環境中調試javascript,我需要禁用資產壓縮(或至少壓縮javascript)。我嘗試了config.assets.compress = false以及config.assets.debug = true,並且壓縮資產仍在使用。然後我刪除了壓縮資產,此時根本沒有任何資產被呈現。我加了config.assets.enabled = false,這沒有幫助。我嘗試將未壓縮的資源複製到各種目錄中,包括應用程序根目錄,公共資源和公共資源(後兩個使用文件夾「images」,「javascripts」和「stylesheets」),並將資源直接放入文件夾中這三個子文件夾)我最終能夠通過更改html來直接引用所有的javascript文件,但CSS和圖像仍然不起作用。任何想法,我做錯了什麼?在Rails生產中禁用資產縮減

+0

你是絕對修改'配置/環境/ production.rb'? – 2012-03-13 16:24:11

+0

您是否使用Rails標籤助手來訪問資產(javascript_include_tag'script.js')?你能關注一個單獨的文件,給我們一個例子,說明它是如何實現的以及發生了什麼? – mltsy 2012-10-30 17:23:45

回答

47

我讀the docs後此變通辦法想出了:

創建一個模塊,無助於壓縮JS/CSS這裏:lib/modules/no_compression.rb

class NoCompression 
    def compress(string) 
    # do nothing 
    string 
    end 
end 

配置你的資產(不)與被壓縮的無操作壓縮機

config.assets.compress = true 
config.assets.js_compressor = NoCompression.new 
config.assets.css_compressor = NoCompression.new 
+0

非常聰明!我永遠不會想到這一點。謝謝! – 2013-03-26 22:08:23

+0

部署到分段服務器時使用的好東西。每次在heroku上部署時,總共可以節省260秒100秒。 – hakunin 2013-04-17 10:04:11

+0

這是否仍然將散列添加到資產文件名?我不得不在服務器上調試一些代碼,但爲了找到錯誤,我需要使用正確哈希的資產名稱。 – Ziggy 2013-12-15 12:32:15

0

看起來像這可能是一個在Rails中的錯誤從即將推出的rails 3.2.9的更新日誌,這是你正在運行?

尊重config.digest = false爲asset_path

此前,asset_path內部只有尊重:消化選項,而忽視了全局配置設置。這意味着config.digest = false不能與config.compile = false一起使用,這會糾正行爲。

http://weblog.rubyonrails.org/2012/10/29/ann-rails-3-2-9-rc1-has-been-released/

你認爲這可能是有關?

+0

我不認爲這兩者是相關的,因爲我認爲這種變化與是否將資產名稱添加到摘要中有關,而我的問題與JavaScript壓縮有關。我猜可能存在與config.asset.compression相同的問題,並且他們還沒有找到它。無論如何,謝謝你的支持。 – 2012-11-06 00:23:08

6

另外值得注意的是...除了ncherro解決方案,您將需要做的以下內容:

  1. 確保將您的新模塊放置在默認情況下會加載的位置。在我的情況下是lib/extras。
  2. 運行rake assets:clean清理您的現有資產。
  3. 運行rake assets:precompile使用新壓縮機編譯您的資產。
  4. 重新啓動您的應用程序...我使用touch tmp/restart.txt

快樂調試;)

11

我還需要調試JS我,所以我試圖ncherro的解決方案。問題是它仍然會丟棄

rake中止! 未初始化的常量NoCompression

所以我只是把NoCompression類的production.rb文件

# Compress JavaScripts and CSS 
    class NoCompression 
     def compress(string) 
      # do nothing 
      string 
     end 
    end 

    config.assets.compress = true 
    config.assets.js_compressor = NoCompression.new 
    config.assets.css_compressor = NoCompression.new 
20

在軌道4只註釋掉行

# config.assets.js_compressor = :uglifier 

config/environments/production.rb爲我工作。看起來默認是不壓縮。

6

註釋掉uglifier並添加config.assets.debug = true。這對我有效。

  • 壓縮JavaScript和CSS:

    config.assets.js_compressor = :uglifier

  • 調試模式禁用級聯和資產的預處理。但是,此選項可能會導致在視圖呈現顯著延遲了大量複雜的資產:

    config.assets.debug = true

2

隨着在Heroku上的Rails 4,你需要做兩件事情。首先作爲@geekQ提到,註釋掉js_compressor線config/environments/production.rb

# config.assets.js_compressor = :uglifier 

其次,你需要考慮Heroku's asset pipeline cache for Rails 4.與作爲高速緩存的版本將不會被重新編譯相同的MD5的任何文件。以前的(可能是壓縮的)版本將被提供。您編輯的任何文件都將有一個新的MD5並被重新編譯。

您也可以使用清除整個資產緩存到Heroku工具欄。安裝它,然後使用命令

heroku repo:purge_cache 

在清除緩存後部署新版本,並重新編譯所有資產。

+0

刪除'config.assets.js_compressor =:uglifier'就足以解決它 – Dorian 2017-12-20 19:01:51

1

我不得不更新Rails.application.config.assets.versionconfig/initializers/assets.rbproduction.rb更改生效。

1

查找和註釋掉environments/production.rb這些行:

config.assets.js_compressor = ... 
config.assets.css_compressor = ...