しばらく何も操作せずにアプリを起動すると、次のエラーがスローされます。
Sass::SyntaxError (File to import not found or unreadable: active_admin/mixins.
ページを更新すると、エラーなしで完全に読み込まれます。
これは Heroku の問題ですか、それとも実際のアプリ エラーですか? 誰でも解決策を知っていますか?
しばらく何も操作せずにアプリを起動すると、次のエラーがスローされます。
Sass::SyntaxError (File to import not found or unreadable: active_admin/mixins.
ページを更新すると、エラーなしで完全に読み込まれます。
これは Heroku の問題ですか、それとも実際のアプリ エラーですか? 誰でも解決策を知っていますか?
グループセットからgem'sass-rails'、 "〜>3.1.0"を削除する必要があります。
アセット パイプラインがコンパイル中に処理している Sass 構文エラーがあると思います。非アクティブの後にのみ発生する理由は、アプリが Heroku によってアイドル状態になり、リクエストを処理するために再起動する必要があるため、アセット パイプラインが再び「起動」するためです。
私は無駄にいくつかのことを試しました。ローカルと Heroku でプリコンパイルしてみました。
Heroku サイトにアクセスすると...
ActionView::Template::Error (File to import not found or unreadable: active_admin/mixins.
2012-08-01T22:00:22+00:00 app[web.2]: Load paths:
2012-08-01T22:00:22+00:00 app[web.2]: /app
2012-08-01T22:00:22+00:00 app[web.2]: /app/vendor/bundle/ruby/1.9.1/gems/activeadmin-0.4.4/app/assets/stylesheets
2012-08-01T22:00:22+00:00 app[web.2]: (in /app/app/assets/stylesheets/active_admin.css.scss)):
2012-08-01T22:00:22+00:00 app[web.2]: 6: <title><%= [@page_title, active_admin_application.site_title].compact.join(" | ") %></title>
2012-08-01T22:00:22+00:00 app[web.2]: 7:
2012-08-01T22:00:22+00:00 app[web.2]: 8: <% ActiveAdmin.application.stylesheets.each do |style| %>
2012-08-01T22:00:22+00:00 app[web.2]: 9: <%= stylesheet_link_tag style.path, style.options %>
2012-08-01T22:00:22+00:00 app[web.2]: 10: <% end %>
2012-08-01T22:00:22+00:00 app[web.2]: 11: <% ActiveAdmin.application.javascripts.each do |path| %>
2012-08-01T22:00:22+00:00 app[web.2]: 12: <%= javascript_include_tag path %>
2012-08-01T22:00:22+00:00 app[web.2]: app/assets/stylesheets/active_admin.css.scss:2
sass_heroku.rb を config/initializers に追加すると、うまくいくはずです
heroku = !!ENV['HEROKU_TYPE']
css_dir = heroku ? 'tmp' : 'public'
location = Rails.root + 'app/styles'
unless Sass::Plugin.template_location_array.any? { |pair| pair.first.to_s == location.to_s }
Sass::Plugin.add_template_location(location, Rails.root + css_dir + 'stylesheets')
end
if heroku
Sass::Plugin.template_location_array.each do |template_location, css_location|
css_location.sub!(%r{/public/stylesheets$}, "/#{css_dir}/stylesheets")
end
Rails.configuration.middleware.insert_after 'Sass::Plugin::Rack', 'Rack::Static', :urls => ['/stylesheets'], :root => "#{Rails.root}/tmp"
end
私はステファン・ポールの解決策を試しましたが、理解できるほど賢くはありませんでしたが、役に立ちませんでした。
私にとって問題を解決したのは、事前にコンパイルすることでした。
明確にするために、Herokuでactiveadminを使用しようとしたときにのみこのエラーが発生しました-開発では正常に機能しました。
そして解決策は、実行rake assets:precompile
して public/assets ディレクトリをherokuにgit commitすることでした。これにより、アセット自体がプリコンパイルされないため、エラーはスキップされます。