heroku在资产上进行ActiveAdmin gem错误部署:预编译

问题描述 投票:0回答:1

我的应用程序在本地运行。在部署过程中,我遇到了几个问题:

首先,我包装了关系对象以便进行部署,否则部署没有给出“标签”表错误

if ActiveRecord::Base.connection.table_exists? 'tags'
  filter :tags_keyword, :as => :check_boxes, :collection => Tag.all.collect {|o| [o.keyword, o.keyword]}
end

然后,我运行迁移并为数据库添加种子。但是这次,我没有任何资产在工作,这使我意识到heroku在部署期间没有在编译资产。

我将.gitignore更新为监督清单文件,以便heroku可以预先编译资产。但是该操作给了我以下错误;

remote: -----> Preparing app for Rails asset pipeline
remote:        Running: rake assets:precompile
remote:        rake aborted!
remote:        NoMethodError: undefined method `<<' for true:TrueClass
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/activeadmin-1.0.0.pre1/lib/active_admin/engine.rb:5:in `block (2 levels) in <class:Engine>'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/activeadmin-1.0.0.pre1/lib/active_admin/engine.rb:4:in `each'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/activeadmin-1.0.0.pre1/lib/active_admin/engine.rb:4:in `block in <class:Engine>'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/initializable.rb:30:in `instance_exec'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/initializable.rb:30:in `run'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/initializable.rb:55:in `block in run_initializers'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/initializable.rb:54:in `run_initializers'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/application.rb:352:in `initialize!'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/config/environment.rb:5:in `<top (required)>'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `block in require'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:240:in `load_dependency'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/activesupport-4.2.1/lib/active_support/dependencies.rb:274:in `require'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/application.rb:328:in `require_environment!
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/railties-4.2.1/lib/rails/application.rb:457:in `block in run_tasks_blocks'
remote:        /tmp/build_392c42fc00109fc0ac97d8dd67521707/vendor/bundle/ruby/2.2.0/gems/sprockets-rails-2.3.2/lib/sprockets/rails/task.rb:64:in `block (2 levels) in define'
remote:        Tasks: TOP => environment
remote:        (See full trace by running task with --trace)
remote:  !
remote:  !     Precompiling assets failed.
remote:  !
remote: 
remote:  !     Push rejected, failed to compile Ruby app

这是AA gem文件夹下错误记录的engine.rb文件

module ActiveAdmin
  class Engine < ::Rails::Engine

    initializer "active_admin.precompile", group: :all do |app|
      ActiveAdmin.application.stylesheets.each do |path, _|
        app.config.assets.precompile << path
      end
      ActiveAdmin.application.javascripts.each do |path|
        app.config.assets.precompile << path
      end
    end

    initializer 'active_admin.routes' do
      require 'active_admin/helpers/routes/url_helpers'
    end
  end
end

我在ubuntu 15.04上运行,使用ruby -v'2.2.2p95',rails -v'4.2.1',并且在执行该操作时有些困难

ruby-on-rails-4 heroku rubygems activeadmin
1个回答
0
投票

我发现问题是我没有使用rails_12_factor gem,并且对折旧的Rails环境变量玩得太多。经过几次试验后,我设法回滚到默认设置,并且成功了!

© www.soinside.com 2019 - 2024. All rights reserved.