Sha256: c6aa346268231e2147097f27014a8a951112b272b534276c8a37fc251b5b3d80

Contents?: true

Size: 1.1 KB

Versions: 5

Compression:

Stored size: 1.1 KB

Contents

require 'active_record'

module I18n
  module Backend
    class Weeler

      module UsageLogger

        def log_key_usage(locale, key)
          existing = i18n_cache.read([:usage_stats, [locale, key]])
          value = existing.present? ? (existing.to_i + 1) : 1
          i18n_cache.write [:usage_stats, [locale, key]], value
        end

        def dump_key_usage
          already_dumped = i18n_cache.read([:dump_usage_stats, Process.pid]).present?
          unless already_dumped
            Weeler::Lock.acquire('usage_stats_dump') do
              i18n_cache.instance_variable_get(:@data).keys.each do |key|
                if key.start_with?('usage_stats')
                  translation_stat = TranslationStat.find_or_create_by(key: key.gsub('usage_stats/en/', ''))
                  translation_stat.usage_count += i18n_cache.read(key).to_i
                  translation_stat.save!
                end
              end
              i18n_cache.write [:dump_usage_stats, Process.pid], Process.pid
            end
          end
        end

        Weeler.send(:include, UsageLogger)
      end
    end
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
weeler-2.0.0 lib/i18n/backend/weeler/usage_logger.rb
weeler-1.6.0 lib/i18n/backend/weeler/usage_logger.rb
weeler-1.5.4 lib/i18n/backend/weeler/usage_logger.rb
weeler-1.5.2 lib/i18n/backend/weeler/usage_logger.rb
weeler-1.5.1 lib/i18n/backend/weeler/usage_logger.rb