ruby-on-rails-3 - 带有部分修复的activeadmin heroku样式表配置问题

标签 ruby-on-rails-3 heroku activeadmin

在本地预编译 Assets ,然后将代码推送到Heroku后,我收到以下错误消息:

2012-03-28T17:06:01+00:00 app[web.1]: Started GET "/admin/login" for 67.163.67.203 at 2012-03-28 17:06:01 +0000

2012-03-28T17:06:01+00:00 app[web.1]: 

2012-03-28T17:06:01+00:00 app[web.1]: ActionView::Template::Error (File to import not found or unreadable: active_admin/mixins.

2012-03-28T17:06:01+00:00 app[web.1]: Load paths:
2012-03-28T17:06:01+00:00 app[web.1]:   /app
2012-03-28T17:06:01+00:00 app[web.1]:   /app/vendor/bundle/ruby/1.9.1/gems/activeadmin-0.4.3/app/assets/stylesheets
2012-03-28T17:06:01+00:00 app[web.1]:   (in /app/vendor/assets/stylesheets/active_admin.css.scss)):
2012-03-28T17:06:01+00:00 app[web.1]:     7: 
2012-03-28T17:06:01+00:00 app[web.1]:     6:   <title><%= [@page_title, active_admin_application.site_title].compact.join(" | ") %></title>
2012-03-28T17:06:01+00:00 app[web.1]:     8:   <% ActiveAdmin.application.stylesheets.each do |style| %>
2012-03-28T17:06:01+00:00 app[web.1]:     9:     <%= stylesheet_link_tag style.path, style.options %>
2012-03-28T17:06:01+00:00 app[web.1]:     10:   <% end %>
2012-03-28T17:06:01+00:00 app[web.1]:     11:   <% ActiveAdmin.application.javascripts.each do |path| %>
2012-03-28T17:06:01+00:00 app[web.1]:     12:     <%= javascript_include_tag path %>
2012-03-28T17:06:01+00:00 app[web.1]:   vendor/assets/stylesheets/active_admin.css.scss:2

...

我尝试了许多不同的选项,包括在这里找到的以下提示-http://mrdanadams.com/2011/exclude-active-admin-js-css-rails/和GitHub页面上的其他提示。

这些选项均无效。最终,我收到一些建议,从git删除我的public/assets目录,将代码推送到Heroku,并让Heroku预编译 Assets 。这种方法部分起作用。当我尝试转到网站的/admin页面时,我不再收到错误消息。但是,缺少active_admin CSS文件。它怀疑由于Heroku进行了预编译,因此即使未对active_admin.css文件进行预编译,也不会引发错误。如何预编译active_admin.css?

顺便说一句,我正在运行Rails 3.2。

编辑:

看来我的“修复”不完整。如果我有require_tree。或require_directory。然后在我的application.css中工作,但是它弄乱了我的主要应用CSS,因为它们都被编译到了application.css中。如果我没有这些条目之一,那么它将中断。关于如何解决这个问题有什么想法吗?

最佳答案

我终于能够解决此问题。万一有人遇到这个问题,我想我应该记录一下解决该问题所采取的步骤。

我以生产模式(RAILS_ENV=production rails s)在本地运行了我的应用程序,并且能够在本地计算机上复制在Heroku上收到的错误。

我将我的active_admin.css.scss和active_admin.js复制到/vendor/assets目录。由于y app一直告诉我它缺少active_admin/mixins,因此我也将 Assets 中的整个active_admin目录复制到了vendor/assets目录。我不确定这是否必要。

从Heroku的角度来看,有人告诉我(但不能确认)在预编译期间未读取production.rb,因此需要在application.rb中定义所有设置。因此,我确保在application.rb中具有以下设置-

#Added to fix devise/active admin issue ?
config.assets.initialize_on_precompile = false

# Precompile additional assets. Defaults to [application.js, application.css, non-JS/CSS]
config.assets.precompile += ['active_admin.css.scss', 'active_admin.js'] 

我在网上发现了上述大多数技巧(在stackoverflow,heroku,github等上)。我没有看到的部分是需要从以下位置更改application.rb中的Bundler.require:
Bundler.require(*Rails.groups(:assets => %w(development test)))

至:
Bundler.require(:default, :assets, Rails.env)

一旦进行了这些更改,便可以将代码推送到Heroku上,并让它为我预编译 Assets 。我希望这可以帮助某人节省一些时间来解决此问题。

关于ruby-on-rails-3 - 带有部分修复的activeadmin heroku样式表配置问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9933514/

相关文章:

ruby-on-rails - 删除 ActiveAdmin 生成的注释路由

ruby-on-rails - 使用Active Admin嵌套的has_many资源表单不会进行更新

ruby-on-rails-3 - 嵌套属性未以简单形式显示

ruby-on-rails - Rails dup 和 clone 方法有什么区别?

ruby-on-rails - 需要 Rails 的 HTTPS/SSL 速成类

java - Heroku 查询,在 Heroku 上运行 Java 应用程序

ruby-on-rails - Rails 3 http_basic_authenticate_with仅在生产环境中?

ruby-on-rails - Rails 如何根据日期范围创建月份数组

postgresql - 如何从 postgres 关闭 Heroku SQL 日志

ruby-on-rails-3 - 根据字段将 Active Admin 索引拆分为两个表/面板