2

私は今RailsAdminで遊んでいます。

RailsAdmin DSL 設定はイニシャライザに保存されます。それらをモデルに保持する方法はありますが、それは悪い考えだと思います (ビュー関連の情報をモデルに保存する)。

そのため、変更するたびに Rails サーバーを再起動する必要があり、非常に面倒です。

初期化子の自動リロードを有効にする方法はありますか?

4

2 に答える 2

0

このファイルを追加 config/initializers/rails_admin_reload.rb

# See also: https://github.com/sferik/rails_admin/wiki/How-to:-Reloading-RailsAdmin-Config-Automatically#alternative-method-for-the-railsadmin-versions-that-does-not-extend-applicationcontroller
Rails.application.config.to_prepare do
  RailsAdmin::ApplicationController.class_eval do
    before_action :reload_rails_admin, if: :reload_rails_admin? # Reloading RailsAdmin Config Automatically

    RAILS_ADMIN_FILE_PATH = "#{Rails.root}/config/initializers/rails_admin.rb"

    class << self
      def fetch_rails_admin_file_updated_time
        File::Stat.new(RAILS_ADMIN_FILE_PATH).mtime
      end
      attr_accessor :__file_timestamp
    end
    @__file_timestamp = fetch_rails_admin_file_updated_time

    def reload_rails_admin
      RailsAdmin::Config.reset

      load(RAILS_ADMIN_FILE_PATH)
    end

    def reload_rails_admin?
      return false unless Rails.env.development?
      begin
        file_updated_at = RailsAdmin::ApplicationController.fetch_rails_admin_file_updated_time
        has_changed = file_updated_at != self.class.__file_timestamp
        return has_changed
      ensure
        self.class.__file_timestamp = file_updated_at
      end
    end
  end
end

于 2020-06-18T12:47:59.603 に答える