2016-09-21 15 views
5

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 cssjs.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.rbproduction.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.

+0

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

Trả lời

0

Trước tiên, bạn cần cam kết thay đổi của mình. Sau đó thực hiện git push heroku yourbranch:master

+0

Tôi đã tích hợp github với triển khai tự động được bật. Như tôi đã nói, tôi khá chắc chắn rằng ứng dụng đã được triển khai. – YigitOzkavci

+0

kiểm tra trạng thái mã của chúng tôi theo trạng thái git, nếu nó hiển thị bất kỳ tệp nào, sau đó bạn cần thêm & cam kết chúng –

+0

Điều tôi muốn biết là chúng ta có cần bao gồm các tài sản biên dịch trước của chúng tôi không? Đó không phải là vi phạm lý do đằng sau việc biên soạn tài sản sao? Và như tôi đã nói, tôi chắc chắn rằng vấn đề không phải là với các cam kết hoặc đẩy. – YigitOzkavci

1

Chạy trên địa phương

RAILS_ENV=production bundle exec rake assets:precompile 

Tiếp git add .

Tiếp got commit -m"assets precompile"

Tiếp git push origin yourBranchName

Triển khai trên Heroku và bạn đã làm xong

+1

Đây là giải pháp bị hỏng .... Bạn không muốn thêm tài sản đã biên dịch vào kho lưu trữ git của mình. – Daniel

Các vấn đề liên quan