2013-02-04 34 views
11

Tôi đã đẩy một ứng dụng Rails để Heroku và tiếp tục chạy vào vấn đề sau đây:Rails Tài sản tiền biên dịch chỉ không làm việc

tôi sẽ lưu các thay đổi vào tập tin css.scss chính của tôi (trong tài sản/stylesheets) hoặc cho hình ảnh trong nội dung/hình ảnh, đẩy tới git, đẩy nó vào heroku và tải lại trang, chỉ để tìm ra rằng những nội dung này chưa được tải.

Đây cũng là một vấn đề nhỏ trên máy chủ địa phương, nhưng khi nhập:

rake assets:precompile 

và tải lại các máy chủ địa phương thường làm việc, trong khi làm

heroku run rake assets:precompile 

và sau đó lại đẩy không có gì. Tôi đã tìm kiếm thông tin và không tìm thấy bất cứ điều gì đặc biệt hữu ích.

Đáng chú ý, trong cấu hình của tôi/application.rb (một số trong những kết quả của nói câu cá xung quanh):

# Enable the asset pipeline 
config.assets.enabled = true 

if defined?(Bundler) 
    # If you precompile assets before deploying to production, use this line 
    Bundler.require(*Rails.groups(:assets => %w(development test))) 
    # If you want your assets lazily compiled in production, use this line 
    # Bundler.require(:default, :assets, Rails.env) 
end 

trong config/môi trường/production.rb:

# Disable Rails's static asset server (Apache or nginx will already do this) 
config.serve_static_assets = false 

# Compress JavaScripts and CSS 
config.assets.compress = true 

# Fallback to assets pipeline if a precompiled asset is missed 
config.assets.compile = true 

# Generate digests for assets URLs 
config.assets.digest = true 

Có thể có thêm sự quan tâm có thể xảy ra khi tôi chuyển đến heroku, điều này nói rằng, trong số những thứ khác, điều này:

Preparing app for Rails asset pipeline 
     Detected manifest.yml, assuming assets were compiled locally 
-----> Rails plugin injection 
     Injecting rails_log_stdout 
     Injecting rails3_serve_static_assets 

Installing dependencies using Bundler version 1.3.0.pre.5 
Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin --deployment 

tôi đã học với Rails 3 và không thực sự biết làm thế nào các đường ống dẫn tài sản khác với những gì đã có sẵn trong phiên bản trước đó, vì vậy xin lỗi nếu tôi là một thằng ngốc và đưa chồng chéo và/hoặc các cài đặt mâu thuẫn trong các tệp cấu hình của tôi.

Sẽ đánh giá cao bất kỳ trợ giúp nào. Đây là một cơn đau đầu.

Trả lời

13

Có vẻ như bạn có thể thêm nội dung được biên dịch cục bộ vào git và đẩy chúng và kết quả là Heroku không biên soạn nội dung của bạn khi đang đẩy. Kiểm tra để đảm bảo bạn không thêm thư mục công khai/tài sản vào git.

+1

Vì vậy, bạn có nghĩa là thêm/công khai/nội dung vào tệp .gitignore? Làm điều đó và "git rm" thư mục? Hoặc xóa các tập tin cụ thể bên trong nó? Lấy làm tiếc. Tôi không biết thư mục có liên quan gì với đường dẫn nội dung, vì vậy tôi không thực sự chắc chắn làm cách nào để hủy thêm thành phần xấu của nó. – Sasha

+3

Xóa thư mục đó khỏi git và sau đó thêm nó vào git bỏ qua. Thư mục này là nơi biên dịch tất cả các tài sản vào khi chạy tài sản rake: biên dịch trước. –

+0

đảm bảo cam kết xóa các tệp ở nơi công khai/tài sản/thành thạo! vì vậy bạn đẩy một thư mục public/assets/rỗng vào heroku. Bạn sẽ thấy heroku tự động gọi rake tài sản: biên dịch trước – Bruno

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