Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 activeadmin heroku样式表配置问题,部分修复_Ruby On Rails 3_Heroku_Activeadmin - Fatal编程技术网

Ruby on rails 3 activeadmin heroku样式表配置问题,部分修复

Ruby on rails 3 activeadmin heroku样式表配置问题,部分修复,ruby-on-rails-3,heroku,activeadmin,Ruby On Rails 3,Heroku,Activeadmin,在本地预编译我的资产,然后将代码推送到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:

在本地预编译我的资产,然后将代码推送到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
2012-03-28T17:06:01+00:00应用程序[web.1]:在2012-03-28 17:06:01+0000开始获取67.163.67.203的“/admin/login”
2012-03-28817:06:01+00:00应用程序[web.1]:
2012-03-28T17:06:01+00:00应用程序[web.1]:ActionView::Template::Error(要导入的文件找不到或不可读:active_admin/mixins。
2012-03-28817:06:01+00:00应用程序[网站1]:加载路径:
2012-03-28:17:06:01+00:00应用程序[web.1]:/app
2012-03-28817:06:01+00:00应用程序[web.1]:/app/vendor/bundle/ruby/1.9.1/gems/activeadmin-0.4.3/app/assets/stylesheets
2012-03-28817:06:01+00:00应用程序[web.1]:(在/app/vendor/assets/stylesheets/active_admin.css.scss中):
2012-03-28817:06:01+00:00应用程序[网站1]:7:
2012-03-28817:06:01+00:00应用程序[网站1]:6:
2012-03-28817:06:01+00:00应用程序[网站1]:8:
2012-03-28817:06:01+00:00应用程序[网站1]:9:
2012-03-28817:06:01+00:00应用程序[网站1]:10:
2012-03-28817:06:01+00:00应用程序[网站1]:11:
2012-03-28817:06:01+00:00应用程序[网站1]:12:
2012-03-28817:06:01+00:00应用程序[网站1]:供应商/资产/样式表/活动管理css.scss:2

我尝试了许多不同的选择,包括我在这里找到的以下技巧,以及GitHub页面上的其他技巧

这些选项都不起作用。最后,我收到一些建议,从git中删除我的public/assets目录,将代码推送到Heroku,让Heroku预编译这些资产。这种方法部分奏效。当我尝试转到网站的/admin页面时,我不再收到错误消息。但是,缺少活动的_admin CSS文件。它怀疑,由于Heroku进行了预编译,所以即使未预编译活动的_admin.css文件,它也没有抛出错误。如何预编译active_admin.css

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

编辑:


看来我的“修复”还没有完成。如果我有一棵树。或需要_目录。在我的application.css中,它可以工作,但是它把我的主要应用程序css搞砸了,因为它们都被编译成application.css。如果我没有这些条目中的一个,那么它就会中断。有什么想法可以解决这个问题吗?

让Heroku为您编译资产是正确的。这使事情变得简单

要在预编译器清单中包含其他文件,请在应用程序配置中使用类似的内容(无论是
config/application.rb
还是
config/environments/production.rb
):


我终于解决了这个问题。如果其他人遇到这个问题,我想我会记录下我为解决这个问题所采取的步骤

我以生产模式在本地运行我的应用程序(
RAILS\u 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)))
致:


一旦我做了这些更改,我就可以将代码推送到Heroku上,让它为我预编译资产。我希望这能帮助某人节省一些时间来解决这个问题

也有同样的问题。通过将以下内容添加到production.rb以预编译其他资产来修复:

config.assets.precompile += %w( active_admin.css active_admin.js)

我发现我可以通过更新我的gemfile来解决这个问题——将“sass-rails”gem从:assets组移到production或general部分


显然,这是Heroku需要saas rails gem的问题,或者它破坏了某些东西,所以说:

ActiveAdmin github wiki专门解决了这个问题:

以下是在撰写本文时所说的:


  • 尝试将AA资产添加到
    application.rb
    中的预编译列表中(注意:您不能在
    production.rb
    中添加它们,Heroku在预编译期间不会读取
    production.rb

  • 尝试将
    active_admin.css.scss
    active_admin.js
    放在
    vendor/assets
    而不是
    app/assets
    中。这可以防止在使用sprockets指令
    require\u tree时意外包含AA资产。
    这是新rails应用程序的
    application.css
    中的默认sprockets指令,这也是许多人对其站点的所有部分都需要AA资产感到困惑的原因。将AA资产放在
    vendor/assets
    中可以防止此问题,但您也可以将其放在
    app/assets
    的子目录中,避免使用
    require\u tree
    指令(选择
    require\u目录

  • 确保在预编译时
    sass-rails
    可用。这需要确保在预编译期间需要资产组,或者使
    sass-rails
    在所有gem组中可用。通常,从较旧版本的Rails升级不会有正确的Bundler require语句,因此检查您是否没有在Rails 3.1+上启动项目非常重要。如果您可以在您的机器上运行
    bundle exec rake assets:precompile RAILS_ENV=production
    ,并且配置了一个假的生产数据库,那么您就可以了

  • 按照关于部署中的指示设置特定于heroku的配置
    Bundler.require(:default, :assets, Rails.env)
    
    config.assets.precompile += %w( active_admin.css active_admin.js)
    
    # config/application.rb
    config.assets.precompile += %w( active_admin.css active_admin.js active_admin/print.css )
    
    # config/application.rb - NOT production.rb
    config.assets.initialize_on_precompile = false
    
    config.assets.compile = true