File: experiment_generator.rb

package info (click to toggle)
ruby-gitlab-experiment 0.9.1-2
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 260 kB
  • sloc: ruby: 1,202; makefile: 7
file content (32 lines) | stat: -rw-r--r-- 903 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
# frozen_string_literal: true

require 'rails/generators'

module Gitlab
  module Generators
    class ExperimentGenerator < Rails::Generators::NamedBase
      source_root File.expand_path('templates/', __dir__)
      check_class_collision suffix: 'Experiment'

      argument :variants, type: :array, default: %w[control candidate], banner: 'variant variant'

      class_option :skip_comments, type: :boolean, default: false, desc: 'Omit helpful comments from generated files'

      def create_experiment
        template 'experiment.rb', File.join('app/experiments', class_path, "#{file_name}_experiment.rb")
      end

      hook_for :test_framework

      private

      def file_name
        @_file_name ||= remove_possible_suffix(super)
      end

      def remove_possible_suffix(name)
        name.sub(/_?exp[ei]riment$/i, "") # be somewhat forgiving with spelling
      end
    end
  end
end