我在Heroku上部署了一個新版本的Rails 5應用程序,運行在雪松-14堆棧上。它在部署時沒有預編譯,所以我手動執行了heroku run rake assets:precompile
。不過,我可以看到它包含舊資產,同時需要css
和js
文件。Heroku爲Rails 5應用程序提供舊資產
我的文件在app/assets
,所以目錄不在資產編譯路徑中是不可能的。
我對application.rb
和production.rb
配置:
config.assets.compile = true
# I checked the environment variable, it responds to 'enabled',
# which would return true for the option.
config.public_file_server.enabled = ENV['RAILS_SERVE_STATIC_FILES'].present?
# Which I changed to expire old assets.
config.assets.version='1.1'
我嘗試了這些,但他們沒有工作:
$ heroku restart
$ heroku run rake assets:precompile
$ heroku run rake assets:clobber
這些奇怪的事情是,他們不影響heroku服務器中的資產,我用$ heroku run ls public/assets
進行了檢查。即使$ rake assets:precompile
後,即使它這樣說:
WRITING /app/public/assets/application-{VERY_LONG_HASH}.js
WRITING /app/public/assets/application-{VERY_LONG_HASH}.js.gz
WRITING /app/public/assets/application-{VERY_LONG_HASH}.css
WRITING /app/public/assets/application-{VERY_LONG_HASH}.css.gz
,當我與$ heroku run ls public/assets
偷看,我仍然看到舊資產呆在那裏。
編輯:我通過刪除public/assets
所有本地資產,$ rake assets:clean && rake assets:precompile
重新編譯他們,包括我git
庫這些資產來解決它。這裏有一個問題:
Heroku不應該負責編譯我的資產嗎?我想我每次部署我的應用程序時都不應該編譯我的資產。謝謝。
雖然您解決了這個問題,但我認爲問題在於您在應用程序的'heroku'實例內部執行所有操作,例如'assets:clobber'和'assets:precompile',而不是在您的本地實例中執行此操作並推送到heroku。關於你的問題,自從我開始使用heroku(即1年)以來,我也很想知道。 – Sajan