2012-01-09 40 views
9

Tôi đã thực hiện việc này trên ứng dụng Rails 3.1 của chị em bằng cách sử dụng sản xuất trên máy chủ web Leopard của tôi. Vì vậy, tôi đã không mong đợi được điều này bị mất triển khai ứng dụng này. Tôi đã nhận Hành khách để nhận ra ứng dụng, nhưng tôi nhận được lỗi '[GET /] miss' trong apache. Nhìn xung quanh tôi hình tôi có thể có được điều này để chạy trong webrick để xem nếu tôi có thể cô lập vấn đề.sản xuất đường ray 'css không được biên dịch trước'

bó tài sản cào exec: RAILS_ENV precompile = sản xuất

Nhưng khi tôi tải lên localhost: 3000 tôi nhận được "kế hoạch chi tiết/screen.css không biên dịch sẵn"

tôi bắt đầu so sánh sự khác biệt giữa các chị em ứng dụng và không thể tìm thấy chúng. Dưới đây là một số mã khóa họ chia sẻ:

<%= stylesheet_link_tag "application" %> 
    <%= javascript_include_tag "application" %> #in app/views/layouts/application.html.erb 

config/environments/production.rb 
config.consider_all_requests_local  = false 
    config.action_controller.perform_caching = true 
config.serve_static_assets = false 
config.assets.precompile += %w(search.js) 
    config.assets.precompile += %w(blueprint/screen.css blueprint/print.css) 
    config.assets.precompile += %w(*.css *.js) 

Điều này xảy ra trong 3.1.0 và 3.1.3 và tôi có thể xác nhận việc biên dịch trước xảy ra trên các thư mục kế hoạch chi tiết. Tôi đang xem gì ?, sam

+0

Tôi chạy vào "dấu" khi tôi có dấu phẩy tách các mục của tôi trong '% w()' và các dấu phẩy đó trở thành một phần của mảng thay vì tách chúng. Ví dụ. '% w (blueprint/screen.css, blueprint/print.css) # => ['kế hoạch chi tiết/screen.css,', 'kế hoạch chi tiết/print.css']' –

Trả lời

12

Bạn đã thử riêng biệt như thế này chưa?

config.assets.precompile += %w(blueprint/screen.css) 
config.assets.precompile += %w(blueprint/print.css) 

sau đó chạy:

bundle exec rake assets:precompile RAILS_ENV=production 

này nên cố định nó.

+0

Nó phải có. Của tôi là như thế này: config.assets.precompile + =% w (blueprint/screen.css kế hoạch chi tiết/print.css) – sam452

+1

Chỉ cần tò mò, tại sao sẽ thêm mảng biên dịch trước trong các dòng riêng biệt khắc phục vấn đề của mình? –

9

Bạn có thể đặt assets.compile thành true trong môi trường sản xuất để dự phòng thành đường dẫn nội dung khi tệp bị bỏ qua.

# config/environments/production.rb 
# ... 
# Fallback to assets pipeline if a precompiled asset is missed 
    config.assets.compile = true 
+7

Hãy cẩn thận, điều này có thể giết hiệu suất. – orourkedd

+0

Điều này chắc chắn sửa chữa các _symptom_ nhưng nó ẩn _problem_, mà _can_ được cố định và _should_ được cố định. –

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