Ruby 使用Rails5API模式的ActiveAdmin

Ruby 使用Rails5API模式的ActiveAdmin,ruby,api,devise,ruby-on-rails-5,activeadmin,Ruby,Api,Devise,Ruby On Rails 5,Activeadmin,我正在尝试让activeadmin使用Rails5API模式。关于这一点,有好几种说法,它们几乎都说了同样的话 首先,使应用程序控制器从ActionController::Base扩展,而不是从ActionController::API class ApplicationController < ActionController::Base include DeviseTokenAuth::Concerns::SetUserByToken end 然后添加gem(我使用designe

我正在尝试让activeadmin使用Rails5API模式。关于这一点,有好几种说法,它们几乎都说了同样的话

首先,使应用程序控制器从
ActionController::Base
扩展,而不是从
ActionController::API

class ApplicationController < ActionController::Base
  include DeviseTokenAuth::Concerns::SetUserByToken
end
然后添加gem(我使用designe\u token\u auth而不是designe)

然后运行
bin/rails g active\u admin:install
。这就是问题所在:

      invoke    active_record
      create      db/migrate/20170821114552_devise_create_admin_users.rb
      create      app/models/admin_user.rb
      invoke      rspec
      create        spec/models/admin_user_spec.rb
      invoke        factory_girl
      create          spec/factories/admin_users.rb
      insert      app/models/admin_user.rb
       route    devise_for :admin_users
        gsub    app/models/admin_user.rb
        gsub    config/routes.rb
      append    db/seeds.rb
      create  config/initializers/active_admin.rb
       exist  app/admin
      create  app/admin/dashboard.rb
      create  app/admin/admin_user.rb
      insert  config/routes.rb
    generate  active_admin:assets
/home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `assets' for #<Rails::Application::Configuration:0x00000003fc9740>
Did you mean?  asset_host (NoMethodError)
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active_admin/engine.rb:5:in `block (2 levels) in <class:Engine>'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active_admin/engine.rb:4:in `each'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active_admin/engine.rb:4:in `block in <class:Engine>'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:30:in `instance_exec'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:30:in `run'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:59:in `block in run_initializers'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:228:in `block in tsort_each'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:431:in `each_strongly_connected_component_from'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:349:in `block in each_strongly_connected_component'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:in `each'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:in `call'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:in `each_strongly_connected_component'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:226:in `tsort_each'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:205:in `tsort_each'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:58:in `run_initializers'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/application.rb:353:in `initialize!'
        from /home/blop/Development/railsapp/config/environment.rb:5:in `<top (required)>'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in `require'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in `block in require'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:258:in `load_dependency'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in `require'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:102:in `preload'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:153:in `serve'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
        from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
        from -e:1:in `<main>'
      create  db/migrate/20170821114605_create_active_admin_comments.rb
调用活动记录
create db/migrate/20170821114552_designe_create_admin_users.rb
创建app/models/admin_user.rb
调用rspec
创建spec/models/admin\u user\u spec.rb
小女孩
创建spec/factories/admin_users.rb
插入app/models/admin_user.rb
路由设计用户:管理员用户
gsub app/models/admin_user.rb
gsub config/routes.rb
追加db/seeds.rb
创建config/initializers/active_admin.rb
存在应用程序/管理员
创建app/admin/dashboard.rb
创建app/admin/admin\u user.rb
插入config/routes.rb
生成活动\u管理员:资产
/home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/railtie/configuration.rb:95:in'method_missing':未定义的#
你是说?资产托管(NoMethodError)
from/home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active\u admin/engine.rb:5:in `块(2层)in'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active\u admin/engine.rb:4:在'each'中
from/home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active\u admin/engine.rb:4:in'block in'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:30:in'instance_exec'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:30:in'run'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:59:“运行中的块初始化器”
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:228:in'block in tsort_each'
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:350:在每个强连接的组件中的“块(2个级别)”中
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:431:在“每个强连接的组件”中
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:349:in“每个强连接的组件中的块”
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:in'each'
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:in'call'
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:“每个强连接的组件”
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:226:in'tsort_each'
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:205:in'tsort_each'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:58:in'run_initializers'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/application.rb:353:in'initialize!'
from/home/blop/Development/railsapp/config/environment.rb:5:in`'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active\u support/dependencies.rb:292:in'require'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active\u-support/dependencies.rb:292:in'block in require'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active\u support/dependencies.rb:258:in'load\u dependency'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active\u support/dependencies.rb:292:in'require'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:102:in'preload'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:153:in'serve'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:141:in'block in run'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in'loop'
from/home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in'run'
来自/home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in`'
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/site\u ruby/2.4.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from/home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/site\u ruby/2.4.0/rubygems/core\u ext/kernel\u require.rb:55:in'require'
from-e:1:in`'
create db/migrate/20170821114605_create_active_admin_comments.rb

如果您确实需要完整的Rails,为什么要使用Rails API?Rails API的设计是为了摆脱不必要的工作人员,如视图、cookie、会话等。所有这些工作人员都是ActiveAdmin必需的。在这样的配置中使用RailsAPI并没有任何好处

因此,对我来说,有两种选择:

  • 不要使用Rails API
  • 使用两个不同的文件和共享模型创建两个独立的应用程序(API和Admin)。为了方便起见,您可以将两个应用程序存储在同一个存储库中

  • 如果您真的需要完整的Rails,为什么要使用Rails API?Rails API的设计是为了摆脱不必要的工作人员,如视图、cookie、会话等。所有这些工作人员都是ActiveAdmin必需的。在这样的配置中使用RailsAPI并没有任何好处

    因此,对我来说,有两种选择:

  • 不要使用Rails API
  • 使用两个不同的文件和共享模型创建两个独立的应用程序(API和Admin)。为了方便起见,您可以将两个应用程序存储在同一个存储库中

  • ActiveAdmin是我想在不久的将来摆脱的临时解决方案ActiveAdmin是我想在不久的将来摆脱的临时解决方案
    config.middleware.use Rack::MethodOverride
    config.middleware.use ActionDispatch::Flash
    config.middleware.use ActionDispatch::Cookies
    config.middleware.use ActionDispatch::Session::CookieStore
    
    gem 'devise', '> 4.x'
    gem 'activeadmin', github: 'activeadmin'
    gem 'inherited_resources', git: 'https://github.com/activeadmin/inherited_resources'
    
          invoke    active_record
          create      db/migrate/20170821114552_devise_create_admin_users.rb
          create      app/models/admin_user.rb
          invoke      rspec
          create        spec/models/admin_user_spec.rb
          invoke        factory_girl
          create          spec/factories/admin_users.rb
          insert      app/models/admin_user.rb
           route    devise_for :admin_users
            gsub    app/models/admin_user.rb
            gsub    config/routes.rb
          append    db/seeds.rb
          create  config/initializers/active_admin.rb
           exist  app/admin
          create  app/admin/dashboard.rb
          create  app/admin/admin_user.rb
          insert  config/routes.rb
        generate  active_admin:assets
    /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/railtie/configuration.rb:95:in `method_missing': undefined method `assets' for #<Rails::Application::Configuration:0x00000003fc9740>
    Did you mean?  asset_host (NoMethodError)
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active_admin/engine.rb:5:in `block (2 levels) in <class:Engine>'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active_admin/engine.rb:4:in `each'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/activeadmin-1.1.0/lib/active_admin/engine.rb:4:in `block in <class:Engine>'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:30:in `instance_exec'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:30:in `run'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:59:in `block in run_initializers'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:228:in `block in tsort_each'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:350:in `block (2 levels) in each_strongly_connected_component'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:431:in `each_strongly_connected_component_from'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:349:in `block in each_strongly_connected_component'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:in `each'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:in `call'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:347:in `each_strongly_connected_component'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:226:in `tsort_each'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/2.4.0/tsort.rb:205:in `tsort_each'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/initializable.rb:58:in `run_initializers'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/railties-5.1.3/lib/rails/application.rb:353:in `initialize!'
            from /home/blop/Development/railsapp/config/environment.rb:5:in `<top (required)>'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in `require'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in `block in require'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:258:in `load_dependency'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/activesupport-5.1.3/lib/active_support/dependencies.rb:292:in `require'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:102:in `preload'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:153:in `serve'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:141:in `block in run'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `loop'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application.rb:135:in `run'
            from /home/blop/.rvm/gems/ruby-2.4.0/gems/spring-2.0.2/lib/spring/application/boot.rb:19:in `<top (required)>'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
            from /home/blop/.rvm/rubies/ruby-2.4.0/lib/ruby/site_ruby/2.4.0/rubygems/core_ext/kernel_require.rb:55:in `require'
            from -e:1:in `<main>'
          create  db/migrate/20170821114605_create_active_admin_comments.rb