Tôi đã triển khai một phiên bản mới của ứng dụng Rails 5 trên Heroku, chạy trên ngăn xếp tuyết tùng-14. Nó không biên dịch trước khi triển khai, vì vậy tôi đã tự làm heroku run rake assets:precompile
theo cách thủ công. Tuy nhiên, tôi có thể thấy nó bao gồm các nội dung cũ trong khi yêu cầu các tệp css
và js
.Heroku đang phục vụ các tài sản cũ cho ứng dụng Rails 5
Tệp của tôi nằm trong số app/assets
do đó, không thể thư mục đó không có trong đường dẫn biên dịch nội dung.
cấu hình tôi trên và 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'
tôi đã cố gắng này, nhưng họ đã không làm việc:
$ heroku restart
$ heroku run rake assets:precompile
$ heroku run rake assets:clobber
Điều kỳ lạ với những điều này là chúng không ảnh hưởng đến nội dung trong máy chủ heroku mà tôi đã kiểm tra với $ heroku run ls public/assets
. Ngay cả sau khi $ rake assets:precompile
, mặc dù nó nói này:
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
khi tôi nhìn trộm với $ heroku run ls public/assets
, tôi vẫn nhìn thấy tài sản cũ ở đó.
EDIT: Tôi giải quyết nó bằng cách xóa tất cả các tài sản địa phương trong public/assets
, biên dịch lại cho họ và $ rake assets:clean && rake assets:precompile
kể cả những tài sản này trong kho git
tôi. Đây là một mối quan tâm:
Heroku có nên chịu trách nhiệm biên soạn tài sản của tôi khi đang bay không? Tôi nghĩ rằng tôi không nên biên soạn tài sản của mình mỗi khi tôi triển khai ứng dụng của mình. Cảm ơn.
Mặc dù bạn đã giải quyết nó, tôi nghĩ vấn đề là bạn đang thực hiện tất cả các thao tác như 'asset: clobber' và' asset: precompile' bên trong một instance 'heroku' thay vì làm điều đó trong instance cục bộ của bạn và đẩy vào heroku. Và về câu hỏi của bạn, tôi tự hỏi điều đó vì tôi đã bắt đầu sử dụng heroku (tức là 1 năm). – Sajan