Reuse of ActiveAdmin components












0














I have plenty of models and plenty of them need same setup (action buttons, member actions, panels etc). How could I reuse code on many places and keep the code DRY rather than copy/pasting same blocks of code all around.



E.g. I need this code on every resource:



member_action :purge_cache, method: :post do
CacheManager.new(resource).purge_all
end









share|improve this question


















  • 1




    Create module in ActiveAdmin::Resource, check how they are doing it: github.com/activeadmin/activeadmin/blob/master/lib/active_admin/…
    – MrAleister
    Nov 20 '18 at 20:54












  • big thanks @MrAleister - I would accept this as an answer actually :D
    – knagode
    Nov 20 '18 at 21:00
















0














I have plenty of models and plenty of them need same setup (action buttons, member actions, panels etc). How could I reuse code on many places and keep the code DRY rather than copy/pasting same blocks of code all around.



E.g. I need this code on every resource:



member_action :purge_cache, method: :post do
CacheManager.new(resource).purge_all
end









share|improve this question


















  • 1




    Create module in ActiveAdmin::Resource, check how they are doing it: github.com/activeadmin/activeadmin/blob/master/lib/active_admin/…
    – MrAleister
    Nov 20 '18 at 20:54












  • big thanks @MrAleister - I would accept this as an answer actually :D
    – knagode
    Nov 20 '18 at 21:00














0












0








0







I have plenty of models and plenty of them need same setup (action buttons, member actions, panels etc). How could I reuse code on many places and keep the code DRY rather than copy/pasting same blocks of code all around.



E.g. I need this code on every resource:



member_action :purge_cache, method: :post do
CacheManager.new(resource).purge_all
end









share|improve this question













I have plenty of models and plenty of them need same setup (action buttons, member actions, panels etc). How could I reuse code on many places and keep the code DRY rather than copy/pasting same blocks of code all around.



E.g. I need this code on every resource:



member_action :purge_cache, method: :post do
CacheManager.new(resource).purge_all
end






ruby-on-rails activeadmin






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 20 '18 at 20:46









knagode

3,01233250




3,01233250








  • 1




    Create module in ActiveAdmin::Resource, check how they are doing it: github.com/activeadmin/activeadmin/blob/master/lib/active_admin/…
    – MrAleister
    Nov 20 '18 at 20:54












  • big thanks @MrAleister - I would accept this as an answer actually :D
    – knagode
    Nov 20 '18 at 21:00














  • 1




    Create module in ActiveAdmin::Resource, check how they are doing it: github.com/activeadmin/activeadmin/blob/master/lib/active_admin/…
    – MrAleister
    Nov 20 '18 at 20:54












  • big thanks @MrAleister - I would accept this as an answer actually :D
    – knagode
    Nov 20 '18 at 21:00








1




1




Create module in ActiveAdmin::Resource, check how they are doing it: github.com/activeadmin/activeadmin/blob/master/lib/active_admin/…
– MrAleister
Nov 20 '18 at 20:54






Create module in ActiveAdmin::Resource, check how they are doing it: github.com/activeadmin/activeadmin/blob/master/lib/active_admin/…
– MrAleister
Nov 20 '18 at 20:54














big thanks @MrAleister - I would accept this as an answer actually :D
– knagode
Nov 20 '18 at 21:00




big thanks @MrAleister - I would accept this as an answer actually :D
– knagode
Nov 20 '18 at 21:00












2 Answers
2






active

oldest

votes


















1














Create module in ActiveAdmin::Resource, check how they are doing it






share|improve this answer





























    0














    I found another way to do it:



    Create /app/admin/concerns/shared_stuff.rb:



    module SharedStuff
    def self.extended(base)
    base.instance_eval do
    member_action :purge_cache, method: :post do
    CacheManager.new(resource).purge_all
    end
    end
    end
    end


    WHerever you want same actions, you can just use:



    ActiveAdmin.register Website do
    extend SharedStuff

    ...


    You can add panels, filters, batch operations etc using this way easily ...



    Credits goes to: http://tmichel.github.io/2015/02/22/sharing-code-between-activeadmin-resources/






    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53401245%2freuse-of-activeadmin-components%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      1














      Create module in ActiveAdmin::Resource, check how they are doing it






      share|improve this answer


























        1














        Create module in ActiveAdmin::Resource, check how they are doing it






        share|improve this answer
























          1












          1








          1






          Create module in ActiveAdmin::Resource, check how they are doing it






          share|improve this answer












          Create module in ActiveAdmin::Resource, check how they are doing it







          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 20 '18 at 21:01









          MrAleister

          439210




          439210

























              0














              I found another way to do it:



              Create /app/admin/concerns/shared_stuff.rb:



              module SharedStuff
              def self.extended(base)
              base.instance_eval do
              member_action :purge_cache, method: :post do
              CacheManager.new(resource).purge_all
              end
              end
              end
              end


              WHerever you want same actions, you can just use:



              ActiveAdmin.register Website do
              extend SharedStuff

              ...


              You can add panels, filters, batch operations etc using this way easily ...



              Credits goes to: http://tmichel.github.io/2015/02/22/sharing-code-between-activeadmin-resources/






              share|improve this answer


























                0














                I found another way to do it:



                Create /app/admin/concerns/shared_stuff.rb:



                module SharedStuff
                def self.extended(base)
                base.instance_eval do
                member_action :purge_cache, method: :post do
                CacheManager.new(resource).purge_all
                end
                end
                end
                end


                WHerever you want same actions, you can just use:



                ActiveAdmin.register Website do
                extend SharedStuff

                ...


                You can add panels, filters, batch operations etc using this way easily ...



                Credits goes to: http://tmichel.github.io/2015/02/22/sharing-code-between-activeadmin-resources/






                share|improve this answer
























                  0












                  0








                  0






                  I found another way to do it:



                  Create /app/admin/concerns/shared_stuff.rb:



                  module SharedStuff
                  def self.extended(base)
                  base.instance_eval do
                  member_action :purge_cache, method: :post do
                  CacheManager.new(resource).purge_all
                  end
                  end
                  end
                  end


                  WHerever you want same actions, you can just use:



                  ActiveAdmin.register Website do
                  extend SharedStuff

                  ...


                  You can add panels, filters, batch operations etc using this way easily ...



                  Credits goes to: http://tmichel.github.io/2015/02/22/sharing-code-between-activeadmin-resources/






                  share|improve this answer












                  I found another way to do it:



                  Create /app/admin/concerns/shared_stuff.rb:



                  module SharedStuff
                  def self.extended(base)
                  base.instance_eval do
                  member_action :purge_cache, method: :post do
                  CacheManager.new(resource).purge_all
                  end
                  end
                  end
                  end


                  WHerever you want same actions, you can just use:



                  ActiveAdmin.register Website do
                  extend SharedStuff

                  ...


                  You can add panels, filters, batch operations etc using this way easily ...



                  Credits goes to: http://tmichel.github.io/2015/02/22/sharing-code-between-activeadmin-resources/







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 21 '18 at 12:32









                  knagode

                  3,01233250




                  3,01233250






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53401245%2freuse-of-activeadmin-components%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Costa Masnaga

                      Fotorealismo

                      Sidney Franklin