Saya membuat aplikasi rel dasar dengan pengontrol halaman sederhana dengan fungsi indeks dan ketika saya memuat halaman yang saya dapatkan:
ActionView::Template::Error (application.css isn't precompiled):
2: <html>
3: <head>
4: <title>Demo</title>
5: <%= stylesheet_link_tag "application" %>
6: <%= javascript_include_tag "application" %>
7: <%= csrf_meta_tags %>
8: </head>
app/views/layouts/application.html.erb:5:in `_app_views_layouts_application_html_erb__43625033_88530400'
Gemfile
source 'http://rubygems.org'
gem 'rails', '3.1.0'
# Bundle edge Rails instead:
# gem 'rails', :git => 'git://github.com/rails/rails.git'
gem 'sqlite3'
gem 'execjs'
gem 'therubyracer'
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', " ~> 3.1.0"
gem 'coffee-rails', "~> 3.1.0"
gem 'uglifier'
end
gem 'jquery-rails'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug19', :require => 'ruby-debug'
group :test do
# Pretty printed test output
gem 'turn', :require => false
end
ruby-on-rails
asset-pipeline
Chris Muench
sumber
sumber
Jawaban:
Secara default Rails mengasumsikan bahwa Anda memiliki file Anda dikompilasi di lingkungan produksi, jika Anda ingin menggunakan kompilasi langsung (kompilasi aset Anda selama runtime) dalam produksi Anda harus mengatur config.assets.compile menjadi true .
Anda dapat menggunakan opsi ini untuk mundur ke Sprocket ketika Anda menggunakan aset yang telah dikompilasi tetapi ada file yang belum dikompilasi yang hilang.
Jika
config.assets.compile
opsi disetel ke false dan ada file prekompilasi yang hilang, Anda akan mendapatkan "AssetNoPrecompiledError" yang menunjukkan nama file yang hilang.sumber
application.rb
. Tambahkan ke / mengeditapplication.rb
:config.assets.precompile += %w( first.css second.js )
. Sekarang file-file ini akan dikompilasi juga. Jangan menambahkan semua file jika Anda menggunakannya hanya dalam sprocketrequire
, tetapi hanya jika Anda memasukkannya dengan<link>
/<script>
Anda akan mendapatkan kinerja yang lebih baik dalam produksi jika Anda menetapkan config.assets.compile ke false dalam production.rb dan prakompilasi aset Anda. Anda bisa mengkompilasi dengan tugas menyapu ini:
Jika Anda menggunakan Capistrano, versi 2.8.0 memiliki resep untuk menangani hal ini pada waktu penggunaan. Untuk info lebih lanjut, lihat bagian "Dalam Produksi" dari Panduan Pipa Aset: http://guides.rubyonrails.org/asset_pipeline.html
sumber
rake -T
ataubundle exec rake -T
temanmu.bundle exec rake ...
akan memastikan bahwa Anda memuat rake yang tepat dan dependensi terkait untuk aplikasi Anda. Jika Anda tidak menggunakan bundler, jalankan sajarake ...
.OK - saya punya masalah yang sama. Saya tidak ingin menggunakan "config.assets.compile = true" - Saya harus menambahkan semua file .css saya ke daftar di config / environment / production.rb:
Kemudian saya harus membuat (dan kemudian menghapus) tmp / restart.txt
Saya secara konsisten menggunakan helper stylesheet_link_tag, jadi saya menemukan semua file css tambahan yang perlu saya tambahkan:
sumber
Perbaikan cepat untuk pengguna capistrano adalah dengan menempatkan baris ini ke Capfile
sumber
Untuk semua orang yang membaca ini tetapi tidak memiliki masalah dengan
application.css
dan bukannya dengan kelas CSS kustom mereka misalnyaadmin.css
,base.css
dll.Solusi adalah menggunakan sebagaimana disebutkan
Dan dalam referensi stylesheet referensi saja
application.css
Karena pipeline aset akan mengkompilasi semua stylesheet Anda di application.css. Ini juga terjadi dalam pengembangan sehingga menggunakan referensi lain yang salah ketika menggunakan pipa aset.
sumber
Saya mengalami kesalahan yang sama persis di lingkungan pengembangan saya. Pada akhirnya yang perlu saya lakukan untuk memperbaikinya adalah menambahkan:
ke file config / environment / development.rb saya dan memperbaikinya. Konfigurasi terakhir saya dalam pengembangan terkait dengan aset terlihat seperti:
sumber
Saya juga memiliki masalah ini, di mana mencoba untuk menjalankan produksi tanpa mengkompilasi ulang masih akan membuang kesalahan yang tidak dikompilasi. Saya harus mengubah baris mana yang dikomentari application.rb:
sumber
config/application.rb
Inilah perbaikan cepat:
Jika Anda menggunakan capistrano, lakukan ini tambahkan ini ke deploy.rb Anda:
tutup penyebaran
sumber
Saya mengalami pesan kesalahan ini hari ini dan ingin memposting resolusi untuk kasus saya. Ternyata masalah saya adalah bahwa salah satu file css saya tidak memiliki kurung penutup dan ini menyebabkan file tersebut tidak dapat dikompilasi. Mungkin lebih sulit untuk memperhatikan ini jika Anda memiliki proses otomatis yang mengatur semuanya (termasuk precompile aset) untuk lingkungan produksi Anda.
sumber
Lagi pula gagal ...
Solusi saya adalah mengubah file layout dari
untuk
Dan itu berhasil! (Anda dapat meletakkan file atur ulang di dalam manifes.)
sumber
Hanya cara lain untuk memperbaiki ini pada Heroku: Pastikan Rakefile Anda berkomitmen dan didorong.
sumber
Pada server heroku (readonly filesystem), Jika Anda ingin kompilasi runtime css (tidak disarankan tetapi Anda dapat melakukannya), pastikan Anda telah melakukan pengaturan seperti di bawah ini -
sumber
jika Anda berpikir Anda mengikuti semuanya dengan baik tetapi masih sial, pastikan Anda / capistrano menjalankan touch tmp / restart.txt atau setara di akhir. Saya berada di daftar sial tapi sekarang :)
sumber
Anda mungkin memiliki
syntax error
css yang Anda gunakan.Jalankan perintah ini
Ini akan memberikan pengecualian, memperbaikinya dan Anda semua selesai.
Terima kasih
sumber