第一次加载时Rails 3.1 / Active Admin / Heroku错误 - Sass :: SyntaxError

时间:2011-10-10 13:01:32

标签: heroku ruby-on-rails-3.1 activeadmin

在暂时没有任何活动的情况下点击应用程序时,会抛出以下错误:

Sass::SyntaxError (File to import not found or unreadable: active_admin/mixins.

如果我刷新页面,它会完美加载而不会出现任何错误。

这是Heroku问题还是真正的应用错误?有人知道任何解决方案吗?

5 个答案:

答案 0 :(得分:4)

您需要从群组中删除gem'sass-rails',“〜> 3.1.0”。

答案 1 :(得分:1)

我猜你在编译期间遇到了资产管道正在处理的Sass语法错误。它仅在不活动后发生的原因是该应用程序被Heroku闲置并需要重新启动以提供请求,因此资产管道再次“唤醒”。

答案 2 :(得分:1)

将sass_heroku.rb添加到配置/初始化程序,它应该可以解决这个问题

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

答案 3 :(得分:1)

我尝试过几件事无济于事。我尝试在本地和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

答案 4 :(得分:0)

我尝试过Stephane Paul的解决方案,尽管我不够聪明,无法理解 - 但没有帮助。

为我解决问题的是提前预编译。

为了澄清,我在Heroku上尝试使用activeadmin时只看到了这个错误 - 在开发中工作得很好。

解决方案是运行rake assets:precompile并确保git将public / assets目录提交到heroku,然后不会预先设置资产本身,因此会跳过错误。