class Gitlab::Experiment::Engine

Private Instance Methods

include_dsl() click to toggle source
# File lib/gitlab/experiment/engine.rb, line 22
def include_dsl
  Dsl.include_in(ActionController::Base, with_helper: true) if defined?(ActionController)
  Dsl.include_in(ActionMailer::Base, with_helper: true) if defined?(ActionMailer)
end
mount_engine(app, mount_at) click to toggle source
# File lib/gitlab/experiment/engine.rb, line 27
def mount_engine(app, mount_at)
  return if mount_at.blank?

  engine = routes do
    default_url_options app.routes.default_url_options.clone.without(:script_name)
    resources :experiments, path: '/', only: :show
  end

  app.config.middleware.use(Middleware, mount_at)
  app.routes.append do
    mount Engine, at: mount_at, as: :experiment_engine
    direct(:experiment_redirect) do |ex, options|
      url = options[:url]
      "#{engine.url_helpers.experiment_url(ex)}?#{url}"
    end
  end
end