diff --git a/README.md b/README.md index 469998a..e1b7927 100644 --- a/README.md +++ b/README.md @@ -615,6 +615,18 @@ config.middleware.use(Rack::Tracker) do end ``` +### Heap + +[Heap](https://heap.io/). Heap has Projects (e.g. "Main") which have multiple +Environments (e.g. "Production" or "Development"). `env_id` is therefore the numerical ID +that represents the Environment. See Settings -> Projects -> Environments in your dashboard. + +``` +config.middleware.use(Rack::Tracker) do + handler :heap, env_id: 'HEAP_ID' +end +``` + ### Custom Handlers Tough we give you handlers for a few tracking services right out of the box, you might diff --git a/lib/rack/tracker.rb b/lib/rack/tracker.rb index 2d3dc91..ed0a07e 100644 --- a/lib/rack/tracker.rb +++ b/lib/rack/tracker.rb @@ -26,6 +26,7 @@ require "rack/tracker/bing/bing" require "rack/tracker/hubspot/hubspot" require "rack/tracker/drift/drift" +require "rack/tracker/heap/heap" module Rack class Tracker diff --git a/lib/rack/tracker/heap/heap.rb b/lib/rack/tracker/heap/heap.rb new file mode 100644 index 0000000..dac9efb --- /dev/null +++ b/lib/rack/tracker/heap/heap.rb @@ -0,0 +1,2 @@ +class Rack::Tracker::Heap < Rack::Tracker::Handler +end diff --git a/lib/rack/tracker/heap/template/heap.erb b/lib/rack/tracker/heap/template/heap.erb new file mode 100644 index 0000000..b3ac665 --- /dev/null +++ b/lib/rack/tracker/heap/template/heap.erb @@ -0,0 +1,4 @@ + diff --git a/lib/rack/tracker/version.rb b/lib/rack/tracker/version.rb index 371b0c0..fb24a29 100644 --- a/lib/rack/tracker/version.rb +++ b/lib/rack/tracker/version.rb @@ -1,5 +1,5 @@ module Rack class Tracker - VERSION = '1.11.2' + VERSION = '1.12.0' end end diff --git a/spec/handler/heap_spec.rb b/spec/handler/heap_spec.rb new file mode 100644 index 0000000..7e48df4 --- /dev/null +++ b/spec/handler/heap_spec.rb @@ -0,0 +1,10 @@ +RSpec.describe Rack::Tracker::Heap do + def env + { foo: 'bar' } + end + + it 'will be placed in the head' do + expect(described_class.position).to eq(:head) + expect(described_class.new(env).position).to eq(:head) + end +end diff --git a/spec/integration/heap_integration_spec.rb b/spec/integration/heap_integration_spec.rb new file mode 100644 index 0000000..ff866a1 --- /dev/null +++ b/spec/integration/heap_integration_spec.rb @@ -0,0 +1,17 @@ +require 'support/capybara_app_helper' + +RSpec.describe "Heap Integration" do + before do + setup_app(action: :heap) do |tracker| + tracker.handler :heap, { env_id: '12341234' } + end + + visit '/' + end + + subject { page } + + it 'embeds the script with site_id' do + expect(page).to have_content('heap.load("12341234");') + end +end diff --git a/spec/support/metal_controller.rb b/spec/support/metal_controller.rb index 644b6b7..f22447e 100644 --- a/spec/support/metal_controller.rb +++ b/spec/support/metal_controller.rb @@ -128,4 +128,8 @@ def bing def drift render "metal/index" end + + def heap + render "metal/index" + end end