Home » gem » activeadminを導入して動かしてみる

activeadminを導入して動かしてみる

環境

  • ruby:2.4.1
  • rails:5.1.3
  • centos7

railsアプリはユーザー画面の他に必要なものがあります。
それは 管理画面 です。

railsでは管理用gemは activeadmin 以外にもgemはあるんですが今回はactiveadminを使っていきます。

まずはプロジェクトを作成していきます:

$ rails new active_admin_test
# 以下略

操作用データをscaffoldで作成していきます:

$ rails g scaffold post title:string text:text
Running via Spring preloader in process 5715
      invoke  active_record
      create    db/migrate/20170809051653_create_posts.rb
      create    app/models/post.rb
      invoke    test_unit
      create      test/models/post_test.rb
      create      test/fixtures/posts.yml
      invoke  resource_route
       route    resources :posts
      invoke  scaffold_controller
      create    app/controllers/posts_controller.rb
      invoke    erb
      create      app/views/posts
      create      app/views/posts/index.html.erb
      create      app/views/posts/edit.html.erb
      create      app/views/posts/show.html.erb
      create      app/views/posts/new.html.erb
      create      app/views/posts/_form.html.erb
      invoke    test_unit
      create      test/controllers/posts_controller_test.rb
      invoke    helper
      create      app/helpers/posts_helper.rb
      invoke      test_unit
      invoke    jbuilder
      create      app/views/posts/index.json.jbuilder
      create      app/views/posts/show.json.jbuilder
      create      app/views/posts/_post.json.jbuilder
      invoke  test_unit
      create    test/system/posts_test.rb
      invoke  assets
      invoke    coffee
      create      app/assets/javascripts/posts.coffee
      invoke    scss
      create      app/assets/stylesheets/posts.scss
      invoke  scss
      create    app/assets/stylesheets/scaffolds.scss

gemfileに必要なgemを記載します:

gem 'activeadmin', github: 'activeadmin'
gem 'devise' # 依存関係にあるので導入

bundleで更新しましょう。

では activeadmin をrailsにインストールしていきます:

$ rails generate active_admin:install
Running via Spring preloader in process 6012
      invoke  devise
    generate    devise:install
      create    config/initializers/devise.rb
      create    config/locales/devise.en.yml
  ===============================================================================

Some setup you must do manually if you haven't yet:

  1. Ensure you have defined default url options in your environments files. Here
     is an example of default_url_options appropriate for a development environment
     in config/environments/development.rb:

       config.action_mailer.default_url_options = { host: 'localhost', port: 3000 }

     In production, :host should be set to the actual host of your application.

  2. Ensure you have defined root_url to *something* in your config/routes.rb.
     For example:

       root to: "home#index"

  3. Ensure you have flash messages in app/views/layouts/application.html.erb.
     For example:

       

<%= notice %>

       

<%= alert %>


  4. You can copy Devise views (for customization) to your app by running:

       rails g devise:views

===============================================================================
      invoke    active_record
      create      db/migrate/20170809053546_devise_create_admin_users.rb
      create      app/models/admin_user.rb
      invoke      test_unit
      create        test/models/admin_user_test.rb
      create        test/fixtures/admin_users.yml
      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
      create  app/admin
      create  app/admin/dashboard.rb
      create  app/admin/admin_user.rb
      insert  config/routes.rb
    generate  active_admin:assets
Running via Spring preloader in process 6037
      create  app/assets/javascripts/active_admin.js
      create  app/assets/stylesheets/active_admin.scss
      create  db/migrate/20170809053550_create_active_admin_comments.rb

migrationファイルが作成されたのmigrateしましょう:

$ rails db:migrate
== 20170809051653 CreatePosts: migrating ======================================
-- create_table(:posts)
   -> 0.0014s
== 20170809051653 CreatePosts: migrated (0.0022s) =============================

== 20170809053546 DeviseCreateAdminUsers: migrating ===========================
-- create_table(:admin_users)
   -> 0.0015s
-- add_index(:admin_users, :email, {:unique=>true})
   -> 0.0008s
-- add_index(:admin_users, :reset_password_token, {:unique=>true})
   -> 0.0009s
== 20170809053546 DeviseCreateAdminUsers: migrated (0.0035s) ==================

== 20170809053550 CreateActiveAdminComments: migrating ========================
-- create_table(:active_admin_comments)
   -> 0.0025s
-- add_index(:active_admin_comments, [:namespace])
   -> 0.0024s
== 20170809053550 CreateActiveAdminComments: migrated (0.0052s) ===============

管理ユーザのデータとpostの初期データを、
db/seeds.rb に書き込んでいきましょう

 

#100回データを入れていく
100.times do |d|
    Post.create(
        title: "タイトル#{d}",
        text: "テキスト#{d}"
    )
end

# rails generate active_admin:install でインストールした際のファイルです
AdminUser.create!(email: 'admin@example.com', password: 'password', password_confirmation: 'password') if Rails.env.development?

コマンドで初期データを入れていく

$ rails db:seed

postを管理ユーザーの管理下に置く

rails g active_admin:resource Post

このコマンドを打つことによって、
管理画面でpostモデルを CRUD が出来るようになります。
では管理画面での操作に移りましょう。

rails s でサーバを起動して、
http://localhost:3000/admin にアクセスして
ログイン画面で

email:admin@example.com

password:password

を入力すればログイン出来ます

ダッシュボードのPostsタブをクリックしてみましょう。

new・show・edit・destroy

が出来るようになってます。

 

日本語化の設定はこのサイトが参考になると思います。

http://wanna-be-geek.seesaa.net/article/310350977.html

 

, , ,

コメントを残す

%d人のブロガーが「いいね」をつけました。