```ruby
class Fluentd
  module SettingArchive
    module Archivable
      attr_accessor :file_path

      def file_id
        @file_id ||= with_file { name.gsub(/#{self.class::FILE_EXTENSION}\Z/,'') }
      end

      def name
        @name ||= with_file { File.basename(file_path) }
      end

      def content
        @content ||= with_file { File.open(file_path, "r") { |f| f.read } }
      end

      def ctime
        with_file { File.ctime(file_path) }
      end

      private

      def file_path_of(dir, id)
        file_path = Pathname.new(dir).join("#{id}#{self.class::FILE_EXTENSION}")
        raise "No such a file #{file_path}" unless File.exist?(file_path)
        file_path
      end

      def with_file
        return nil unless file_path && File.exist?(file_path)
        yield
      end
    end
  end
end
```

Fix to define file_path_of as class method.
user
```ruby
class Fluentd
  module SettingArchive
    module Archivable
      extend ActiveSupport::Concern
      attr_accessor :file_path

      module ClassMethods
        private

        def file_path_of(dir, id)
          file_path = Pathname.new(dir).join("#{id}#{self::FILE_EXTENSION}")
          raise "No such a file #{file_path}" unless File.exist?(file_path)
          file_path
        end
      end

      def file_id
        @file_id ||= with_file { name.gsub(/#{self.class::FILE_EXTENSION}\Z/,'') }
      end

      def name
        @name ||= with_file { File.basename(file_path) }
      end

      def content
        @content ||= with_file { File.open(file_path, "r") { |f| f.read } }
      end

      def ctime
        with_file { File.ctime(file_path) }
      end

      private

      def with_file
        return nil unless file_path && File.exist?(file_path)
        yield
      end
    end
  end
end
```
assistant