2011-10-24 84 views
5

我部署CSS和圖像後部署項目到服務器 - 它的工作,但JS不工作 - 404。在HTML和公共/資產 - 不匹配。錯誤的指紋Rails的3.1資產管道生產中的JS文件

In HTML: application-6851a5d9167871936c32da723dca0f23.js 
In public/assets: application-95ecf5bab4b7984abe8c1c23b72a7679.js 
+2

你能(通過編輯直接)添加一些信息,你的問題:什麼是HTML的手段?你的意思是你的源代碼中由Rails生成的URL?我懷疑它在開發中起作用。你做了什麼來獲得資產? '耙資產:預編譯'?你有沒有改變配置中的任何東西?這是一個新的rails應用程序還是遷移的應用程序? – mliebelt

+0

是的,我的意思是在我的源代碼中由Rails生成的URL。是的,它適用於開發,但不適用於生產。我通過rake資產獲得資產:預編譯。那個新的rails應用程序 –

+0

我使用我的應用程序進行了檢查,在HTML代碼和文件路徑中散列值相同。你是否檢查過每個文件包含指紋的'manifest.yml'?你在生產中使用哪個服務器? – mliebelt

回答

0

你運行'rake assets:clean assets:precompile'嗎?另外,如果您使用的是GIT,那麼您也需要'git rm'舊版本的資產。如果您通過推送工作區(例如Heroku)更新生產環境,則需要爲其他版本控制系統執行類似操作。

在您的開發環境中,資產直接從您的源代碼庫中獲取 - 因此如果您更改它們,則無需再次預編譯(在開發過程中節省您的時間)。但是,由於這個原因,你可以很容易地找到資產。

0

重新啓動應用程序爲我解決了它。

E.g.在應用程序的根目錄:

touch tmp/restart.txt 

或Capistrano的3的deploy.rb

namespace :deploy do 
    desc 'Restart application' 
    task :restart do 
    on roles(:app) do 
     within release_path do 
     execute :touch, 'tmp/restart.txt' 
     end 
    end 
    end 

    after 'deploy:publishing', 'deploy:restart' 
end