2017-08-21 2 views
0

Ich versuche, ActiveAdmin mit Rails 5 API-Modus zu arbeiten. Es gibt mehrere articles darüber, und sie sagen fast alle das Gleiche.ActiveAdmin mit Rails 5 API-Modus

Stellen Sie zunächst die Anwendungssteuerung von ActionController::Base erweitern statt ActionController::API

class ApplicationController < ActionController::Base 
    include DeviseTokenAuth::Concerns::SetUserByToken 
end 

Dann eine ApiController erstellen, die jeder andere Controller reicht von:

class ApiController < ActionController::API 

end 

hinzufügen Middel:

config.middleware.use Rack::MethodOverride 
config.middleware.use ActionDispatch::Flash 
config.middleware.use ActionDispatch::Cookies 
config.middleware.use ActionDispatch::Session::CookieStore 

Dann fügen Sie Edelsteine ​​hinzu (Ich verwende devise_token_auth statt devise)

gem 'devise', '> 4.x' 
gem 'activeadmin', github: 'activeadmin' 
gem 'inherited_resources', git: 'https://github.com/activeadmin/inherited_resources' 

Und bin/rails g active_admin:install laufen. Dies ist, wo alles schief geht:

 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 

Antwort

0

Warum verwenden Sie Rails API, wenn Sie wirklich volle Rails benötigen? Die Rails-API wurde entwickelt, um überflüssige Mitarbeiter wie Ansichten, Cookies, Sitzungen usw. überflüssig zu machen. Das gesamte Personal ist für ActiveAdmin erforderlich. Von der Verwendung der Rails-API in einer solchen Konfiguration profitieren Sie nicht.

für mich So gibt es zwei Möglichkeiten:

  1. Verwenden Rails API nicht.
  2. Erstellen Sie zwei separate Anwendungen (API und Admin) mit zwei verschiedenen Gemfiles und gemeinsamen Modellen. Aufgrund der Bequemlichkeit können Sie beide Apps im selben Repository speichern.
+0

ActiveAdmin ist eine temporäre Lösung, die ich in naher Zukunft loswerden möchte – blop