solidus_trackers 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. checksums.yaml +7 -0
  2. data/README.md +40 -0
  3. data/Rakefile +30 -0
  4. data/app/assets/javascripts/spree/backend/solidus_trackers.js +2 -0
  5. data/app/assets/javascripts/spree/frontend/solidus_trackers.js +2 -0
  6. data/app/assets/stylesheets/spree/backend/solidus_trackers.css +4 -0
  7. data/app/assets/stylesheets/spree/frontend/solidus_trackers.css +4 -0
  8. data/app/controllers/spree/admin/trackers_controller.rb +2 -0
  9. data/app/models/spree/permission_sets/tracker_display.rb +9 -0
  10. data/app/models/spree/permission_sets/tracker_management.rb +9 -0
  11. data/app/models/spree/tracker.rb +19 -0
  12. data/app/overrides/decorate_admin_configurations_index.rb +7 -0
  13. data/app/overrides/decorate_spree_application.rb +7 -0
  14. data/app/views/spree/admin/trackers/_form.html.erb +32 -0
  15. data/app/views/spree/admin/trackers/edit.html.erb +19 -0
  16. data/app/views/spree/admin/trackers/index.html.erb +56 -0
  17. data/app/views/spree/admin/trackers/new.html.erb +18 -0
  18. data/app/views/spree/shared/_google_analytics.html.erb +36 -0
  19. data/app/views/spree/shared/_tracker_sidebar_entry.html.erb +3 -0
  20. data/config/locales/en.yml +5 -0
  21. data/config/routes.rb +5 -0
  22. data/db/migrate/20160906231452_create_trackers.rb +13 -0
  23. data/db/migrate/20160920231000_add_store_to_tracker.rb +17 -0
  24. data/lib/generators/solidus_trackers/install/install_generator.rb +30 -0
  25. data/lib/solidus_trackers.rb +2 -0
  26. data/lib/solidus_trackers/engine.rb +20 -0
  27. data/lib/solidus_trackers/factories.rb +6 -0
  28. data/lib/solidus_trackers/version.rb +3 -0
  29. metadata +244 -0
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5b7a0f480c282d319eb7dc00f41e4e84ac53cae7
4
+ data.tar.gz: d53c602fd20d8d44e5cd9db25d022a5bfc3ef751
5
+ SHA512:
6
+ metadata.gz: d2ccf4f6e55ca4d55007556ce88b4ba50d224f8ea9e6247d39f172534131b3400b9e11d18652149e20c3d6bce44c4c1a15a4ac2da7d7a53fc0b06b43b4f75871
7
+ data.tar.gz: 6f10cdee4452ae915956ab7bb2d47d7d0cda954cd5bff8811c4483a6192f165da8770e214db5cef5a1f11aac293f9c3e2b09b1a1c8b6acba0020c7739c75c717
@@ -0,0 +1,40 @@
1
+ Solidus Trackers
2
+ ==============
3
+
4
+ [![Build Status](https://travis-ci.org/solidusio-contrib/solidus_trackers.svg?branch=master)](https://travis-ci.org/solidusio-contrib/solidus_trackers)
5
+
6
+ Tracker implementation for Solidus.
7
+ - Allows creation of trackers from the admin configuration panel
8
+
9
+ Installation
10
+ ------------
11
+
12
+ Add solidus_trackers to your Gemfile:
13
+
14
+ ```ruby
15
+ gem 'solidus_trackers'
16
+ ```
17
+
18
+ Bundle your dependencies and run the installation generator:
19
+
20
+ ```shell
21
+ bundle
22
+ bundle exec rails g solidus_trackers:install
23
+ ```
24
+
25
+ Testing
26
+ -------
27
+
28
+ First bundle your dependencies, then run `rake`. `rake` will default to building the dummy app if it does not exist, then it will run specs, and [Rubocop](https://github.com/bbatsov/rubocop) static code analysis. The dummy app can be regenerated by using `rake test_app`.
29
+
30
+ ```shell
31
+ bundle
32
+ bundle exec rake
33
+ ```
34
+
35
+ When testing your applications integration with this extension you may use it's factories.
36
+ Simply add this require statement to your spec_helper:
37
+
38
+ ```ruby
39
+ require 'solidus_trackers/factories'
40
+ ```
@@ -0,0 +1,30 @@
1
+ require 'bundler'
2
+
3
+ Bundler::GemHelper.install_tasks
4
+
5
+ begin
6
+ require 'spree/testing_support/extension_rake'
7
+ require 'rubocop/rake_task'
8
+ require 'rspec/core/rake_task'
9
+
10
+ RSpec::Core::RakeTask.new(:spec)
11
+
12
+ RuboCop::RakeTask.new
13
+
14
+ task default: %i(first_run rubocop spec)
15
+ rescue LoadError
16
+ # no rspec available
17
+ end
18
+
19
+ task :first_run do
20
+ if Dir['spec/dummy'].empty?
21
+ Rake::Task[:test_app].invoke
22
+ Dir.chdir('../../')
23
+ end
24
+ end
25
+
26
+ desc 'Generates a dummy app for testing'
27
+ task :test_app do
28
+ ENV['LIB_NAME'] = 'solidus_trackers'
29
+ Rake::Task['extension:test_app'].invoke
30
+ end
@@ -0,0 +1,2 @@
1
+ // Placeholder manifest file.
2
+ // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/backend/all.js'
@@ -0,0 +1,2 @@
1
+ // Placeholder manifest file.
2
+ // the installer will append this file to the app vendored assets here: vendor/assets/javascripts/spree/frontend/all.js'
@@ -0,0 +1,4 @@
1
+ /*
2
+ Placeholder manifest file.
3
+ the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/backend/all.css'
4
+ */
@@ -0,0 +1,4 @@
1
+ /*
2
+ Placeholder manifest file.
3
+ the installer will append this file to the app vendored assets here: 'vendor/assets/stylesheets/spree/frontend/all.css'
4
+ */
@@ -0,0 +1,2 @@
1
+ class Spree::Admin::TrackersController < Spree::Admin::ResourceController
2
+ end
@@ -0,0 +1,9 @@
1
+ module Spree
2
+ module PermissionSets
3
+ class TrackerDisplay < PermissionSets::Base
4
+ def activate!
5
+ can [:display, :admin], Spree::Tracker
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,9 @@
1
+ module Spree
2
+ module PermissionSets
3
+ class TrackerManagement < PermissionSets::Base
4
+ def activate!
5
+ can :manage, Spree::Tracker
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,19 @@
1
+ class Spree::Tracker < ActiveRecord::Base
2
+ belongs_to :store
3
+
4
+ def self.current(store)
5
+ if store.is_a?(Spree::Store)
6
+ Spree::Tracker.where(active: true, store_id: store).first
7
+ else
8
+ # TODO: Remove in 2.0
9
+ ActiveSupport::Deprecation.warn <<-EOS.squish, caller
10
+ Calling Spree::Tracker.current with a string is DEPRECATED. Instead
11
+ pass it an instance of Spree::Store.
12
+ EOS
13
+ Spree::Tracker.where(active: true).joins(:store).where(
14
+ "spree_stores.code = ? OR spree_stores.url LIKE ?",
15
+ store, "%#{store}%"
16
+ ).first
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,7 @@
1
+ Deface::Override.new(
2
+ virtual_path: "spree/admin/shared/_configuration_menu",
3
+ name: "tracker_admin_configurations_menu",
4
+ insert_bottom: "[data-hook='admin_configurations_sidebar_menu']",
5
+ disabled: false,
6
+ partial: "spree/shared/tracker_sidebar_entry"
7
+ )
@@ -0,0 +1,7 @@
1
+ Deface::Override.new(
2
+ virtual_path: "spree/layouts/spree_application",
3
+ name: "google_analytics_partial",
4
+ insert_bottom: "[data-hook='body']",
5
+ disabled: false,
6
+ partial: "spree/shared/google_analytics"
7
+ )
@@ -0,0 +1,32 @@
1
+ <div class="container">
2
+ <div data-hook="admin_tracker_form_fields" class="row">
3
+ <div class="col-md-3">
4
+ <div data-hook="analytics_id" class="field">
5
+ <%= f.label :analytics_id %>
6
+ <%= f.text_field :analytics_id, :class => 'fullwidth' %>
7
+ </div>
8
+ </div>
9
+ <div class="col-md-3">
10
+ <div data-hook="active" class="field">
11
+ <%= f.label :active %>
12
+ <ul>
13
+ <li>
14
+ <%= radio_button(:tracker, :active, true) %>
15
+ <%= label_tag :tracker_active_true, Spree.t(:say_yes) %>
16
+ </li>
17
+ <li>
18
+ <%= radio_button(:tracker, :active, false) %>
19
+ <%= label_tag :tracker_active_false, Spree.t(:say_no) %>
20
+ </li>
21
+ </ul>
22
+ </div>
23
+ </div>
24
+ <div class="col-md-3">
25
+ <div data-hook="store_select" class="field">
26
+ <%= f.label :store %>
27
+ <div class="clear"></div>
28
+ <%= collection_select(:tracker, :store_id, Spree::Store.all, :id, :name, {}) %>
29
+ </div>
30
+ </div>
31
+ </div>
32
+ </div>
@@ -0,0 +1,19 @@
1
+ <%= render 'spree/admin/shared/general_tabs' %>
2
+
3
+ <% admin_breadcrumb(Spree.t(:settings)) %>
4
+ <% admin_breadcrumb(Spree.t(:general_settings)) %>
5
+ <% admin_breadcrumb(link_to plural_resource_name(Spree::Tracker), spree.admin_trackers_path) %>
6
+ <% admin_breadcrumb(@tracker.analytics_id) %>
7
+
8
+
9
+ <% content_for :page_actions do %>
10
+ <% end %>
11
+
12
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @tracker } %>
13
+
14
+ <%= form_for [:admin, @tracker] do |f| %>
15
+ <fieldset class="no-border-top">
16
+ <%= render :partial => 'form', :locals => { :f => f } %>
17
+ <%= render :partial => 'spree/admin/shared/edit_resource_links' %>
18
+ </fieldset>
19
+ <% end %>
@@ -0,0 +1,56 @@
1
+ <%= render 'spree/admin/shared/general_tabs' %>
2
+
3
+ <% admin_breadcrumb(Spree.t(:settings)) %>
4
+ <% admin_breadcrumb(Spree.t(:general_settings)) %>
5
+ <% admin_breadcrumb(plural_resource_name(Spree::Tracker)) %>
6
+
7
+ <% content_for :page_actions do %>
8
+ <% if can?(:create, Spree::Tracker) %>
9
+ <li>
10
+ <%= button_link_to Spree.t(:new_tracker), new_object_url, :id => 'admin_new_tracker_link' %>
11
+ </li>
12
+ <% end %>
13
+ <% end %>
14
+
15
+ <% if @trackers.any? %>
16
+ <table class="index">
17
+ <colgroup>
18
+ <col style="width: 30%">
19
+ <col style="width: 40%">
20
+ <col style="width: 15%">
21
+ <col style="width: 15%">
22
+ </colgroup>
23
+ <thead>
24
+ <tr data-hook="admin_trackers_index_headers">
25
+ <th><%= Spree::Tracker.human_attribute_name(:analytics_id) %></th>
26
+ <th><%= Spree::Tracker.human_attribute_name(:active) %></th>
27
+ <th><%= Spree.t(:store) %></th>
28
+ <th class="actions"></th>
29
+ </tr>
30
+ </thead>
31
+ <tbody>
32
+ <% @trackers.each do |tracker|%>
33
+ <tr id="<%= spree_dom_id tracker %>" data-hook="admin_trackers_index_rows" class="<%= cycle('odd', 'even')%>">
34
+ <td class="align-center"><%= tracker.analytics_id %></td>
35
+ <td class="align-center"><%= tracker.active ? Spree.t(:say_yes) : Spree.t(:say_no) %></td>
36
+ <td><%= tracker.store.name %></td>
37
+ <td class="actions">
38
+ <% if can?(:update, tracker) %>
39
+ <%= link_to_edit tracker, :no_text => true %>
40
+ <% end %>
41
+
42
+ <% if can?(:destroy, tracker) %>
43
+ <%= link_to_delete tracker, :no_text => true %>
44
+ <% end %>
45
+ </td>
46
+ </tr>
47
+ <% end %>
48
+ </tbody>
49
+ </table>
50
+ <% else %>
51
+ <div class="no-objects-found">
52
+ <%= render 'spree/admin/shared/no_objects_found',
53
+ resource: Spree::Tracker,
54
+ new_resource_url: new_object_url %>
55
+ </div>
56
+ <% end %>
@@ -0,0 +1,18 @@
1
+ <%= render 'spree/admin/shared/general_tabs' %>
2
+
3
+ <% admin_breadcrumb(Spree.t(:settings)) %>
4
+ <% admin_breadcrumb(Spree.t(:general_settings)) %>
5
+ <% admin_breadcrumb(link_to plural_resource_name(Spree::Tracker), spree.admin_trackers_path) %>
6
+ <% admin_breadcrumb(Spree.t(:new_tracker)) %>
7
+
8
+ <% content_for :page_actions do %>
9
+ <% end %>
10
+
11
+ <%= render :partial => 'spree/shared/error_messages', :locals => { :target => @tracker } %>
12
+
13
+ <%= form_for [:admin, @tracker] do |f| %>
14
+ <fieldset class="no-border-top">
15
+ <%= render :partial => 'form', :locals => { :f => f } %>
16
+ <%= render :partial => 'spree/admin/shared/new_resource_links' %>
17
+ </fieldset>
18
+ <% end %>
@@ -0,0 +1,36 @@
1
+ <% if tracker = Spree::Tracker.current %>
2
+ <script>
3
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
4
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
5
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
6
+ })(window,document,'script','//www.google-analytics.com/analytics.js','ga');
7
+
8
+ ga('create', '<%= tracker.analytics_id %>', 'auto');
9
+ ga('require', 'displayfeatures');
10
+ ga('send', 'pageview');
11
+
12
+ <% if @order && order_just_completed?(@order) %>
13
+ <%# more info: https://developers.google.com/analytics/devguides/collection/analyticsjs/ecommerce %>
14
+ ga('require', 'ecommerce', 'ecommerce.js');
15
+ ga('ecommerce:addTransaction', {
16
+ 'id': '<%= j @order.number %>', // Transaction ID. Required.
17
+ 'affiliation': '<%= current_store.name %>', // Affiliation or store name.
18
+ 'revenue': '<%= @order.total %>', // Grand Total.
19
+ 'shipping': '<%= @order.ship_total %>', // Shipping.
20
+ 'tax': '<%= @order.tax_total %>', // Tax.
21
+ 'currency': '<%= @order.currency %>' // local currency code.
22
+ });
23
+ <% @order.line_items.each do |line_item| %>
24
+ ga('ecommerce:addItem', {
25
+ 'id': '<%= j @order.number %>', // Transaction ID. Required.
26
+ 'name': '<%= j line_item.variant.product.name %>', // Product name. Required.
27
+ 'sku': '<%= j (line_item.variant.sku || line_item.variant_id) %>', // SKU/code.
28
+ 'category': '', // Category or variation.
29
+ 'price': '<%= line_item.price %>', // Unit price.
30
+ 'quantity': '<%= line_item.quantity %>' // Quantity.
31
+ });
32
+ <% end %>
33
+ ga('ecommerce:send');
34
+ <% end %>
35
+ </script>
36
+ <% end %>
@@ -0,0 +1,3 @@
1
+ <% if can?(:display, Spree::Tracker) %>
2
+ <%= settings_tab_item plural_resource_name(Spree::Tracker), admin_trackers_path %>
3
+ <% end %>
@@ -0,0 +1,5 @@
1
+ # Sample localization file for English. Add more files in this directory for other locales.
2
+ # See https://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
3
+
4
+ en:
5
+ hello: Hello world
@@ -0,0 +1,5 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ namespace :admin do
3
+ resources :trackers
4
+ end
5
+ end
@@ -0,0 +1,13 @@
1
+ class CreateTrackers < ActiveRecord::Migration[5.0]
2
+ def up
3
+ unless data_source_exists?("spree_trackers")
4
+ create_table :spree_trackers do |t|
5
+ t.string :environment
6
+ t.string :analytics_id
7
+ t.boolean :active, default: true
8
+
9
+ t.timestamps
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,17 @@
1
+ class AddStoreToTracker < ActiveRecord::Migration
2
+ def self.up
3
+ if data_source_exists?('spree_trackers')
4
+ change_table :spree_trackers do |t|
5
+ t.references :store
6
+ end
7
+ end
8
+ end
9
+
10
+ def self.down
11
+ if data_source_exists?('spree_trackers')
12
+ change_table :spree_trackers do |t|
13
+ t.remove :store_id
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,30 @@
1
+ module SolidusTrackers
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+ class_option :auto_run_migrations, type: :boolean, default: false
5
+
6
+ def add_javascripts
7
+ append_file 'vendor/assets/javascripts/spree/frontend/all.js', "//= require spree/frontend/solidus_trackers\n"
8
+ append_file 'vendor/assets/javascripts/spree/backend/all.js', "//= require spree/backend/solidus_trackers\n"
9
+ end
10
+
11
+ def add_stylesheets
12
+ inject_into_file 'vendor/assets/stylesheets/spree/frontend/all.css', " *= require spree/frontend/solidus_trackers\n", before: /\*\//, verbose: true
13
+ inject_into_file 'vendor/assets/stylesheets/spree/backend/all.css', " *= require spree/backend/solidus_trackers\n", before: /\*\//, verbose: true
14
+ end
15
+
16
+ def add_migrations
17
+ run 'bundle exec rake railties:install:migrations FROM=solidus_trackers'
18
+ end
19
+
20
+ def run_migrations
21
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
22
+ if run_migrations
23
+ run 'bundle exec rake db:migrate'
24
+ else
25
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
26
+ end
27
+ end
28
+ end
29
+ end
30
+ end
@@ -0,0 +1,2 @@
1
+ require 'solidus_core'
2
+ require 'solidus_trackers/engine'
@@ -0,0 +1,20 @@
1
+ module SolidusTracker
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'solidus_trackers'
6
+
7
+ # use rspec for tests
8
+ config.generators do |g|
9
+ g.test_framework :rspec
10
+ end
11
+
12
+ def self.activate
13
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
14
+ Rails.configuration.cache_classes ? require(c) : load(c)
15
+ end
16
+ end
17
+
18
+ config.to_prepare(&method(:activate).to_proc)
19
+ end
20
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ factory :tracker, class: Spree::Tracker do
3
+ analytics_id 'A100'
4
+ active true
5
+ end
6
+ end
@@ -0,0 +1,3 @@
1
+ module SolidusTracker
2
+ VERSION = '1.0.0'
3
+ end
metadata ADDED
@@ -0,0 +1,244 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: solidus_trackers
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Mike Conlin
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2016-09-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: solidus_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 2.1.0.alpha
20
+ - - "<"
21
+ - !ruby/object:Gem::Version
22
+ version: '3'
23
+ type: :runtime
24
+ prerelease: false
25
+ version_requirements: !ruby/object:Gem::Requirement
26
+ requirements:
27
+ - - ">="
28
+ - !ruby/object:Gem::Version
29
+ version: 2.1.0.alpha
30
+ - - "<"
31
+ - !ruby/object:Gem::Version
32
+ version: '3'
33
+ - !ruby/object:Gem::Dependency
34
+ name: capybara
35
+ requirement: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ type: :development
41
+ prerelease: false
42
+ version_requirements: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - ">="
45
+ - !ruby/object:Gem::Version
46
+ version: '0'
47
+ - !ruby/object:Gem::Dependency
48
+ name: poltergeist
49
+ requirement: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
54
+ type: :development
55
+ prerelease: false
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ - !ruby/object:Gem::Dependency
62
+ name: coffee-rails
63
+ requirement: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ type: :development
69
+ prerelease: false
70
+ version_requirements: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: '0'
75
+ - !ruby/object:Gem::Dependency
76
+ name: sass-rails
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - ">="
80
+ - !ruby/object:Gem::Version
81
+ version: '0'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - ">="
87
+ - !ruby/object:Gem::Version
88
+ version: '0'
89
+ - !ruby/object:Gem::Dependency
90
+ name: database_cleaner
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - ">="
94
+ - !ruby/object:Gem::Version
95
+ version: '0'
96
+ type: :development
97
+ prerelease: false
98
+ version_requirements: !ruby/object:Gem::Requirement
99
+ requirements:
100
+ - - ">="
101
+ - !ruby/object:Gem::Version
102
+ version: '0'
103
+ - !ruby/object:Gem::Dependency
104
+ name: factory_girl
105
+ requirement: !ruby/object:Gem::Requirement
106
+ requirements:
107
+ - - ">="
108
+ - !ruby/object:Gem::Version
109
+ version: '0'
110
+ type: :development
111
+ prerelease: false
112
+ version_requirements: !ruby/object:Gem::Requirement
113
+ requirements:
114
+ - - ">="
115
+ - !ruby/object:Gem::Version
116
+ version: '0'
117
+ - !ruby/object:Gem::Dependency
118
+ name: rspec-rails
119
+ requirement: !ruby/object:Gem::Requirement
120
+ requirements:
121
+ - - ">="
122
+ - !ruby/object:Gem::Version
123
+ version: '0'
124
+ type: :development
125
+ prerelease: false
126
+ version_requirements: !ruby/object:Gem::Requirement
127
+ requirements:
128
+ - - ">="
129
+ - !ruby/object:Gem::Version
130
+ version: '0'
131
+ - !ruby/object:Gem::Dependency
132
+ name: rubocop
133
+ requirement: !ruby/object:Gem::Requirement
134
+ requirements:
135
+ - - '='
136
+ - !ruby/object:Gem::Version
137
+ version: 0.43.0
138
+ type: :development
139
+ prerelease: false
140
+ version_requirements: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - '='
143
+ - !ruby/object:Gem::Version
144
+ version: 0.43.0
145
+ - !ruby/object:Gem::Dependency
146
+ name: rubocop-rspec
147
+ requirement: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - '='
150
+ - !ruby/object:Gem::Version
151
+ version: 1.4.0
152
+ type: :development
153
+ prerelease: false
154
+ version_requirements: !ruby/object:Gem::Requirement
155
+ requirements:
156
+ - - '='
157
+ - !ruby/object:Gem::Version
158
+ version: 1.4.0
159
+ - !ruby/object:Gem::Dependency
160
+ name: simplecov
161
+ requirement: !ruby/object:Gem::Requirement
162
+ requirements:
163
+ - - ">="
164
+ - !ruby/object:Gem::Version
165
+ version: '0'
166
+ type: :development
167
+ prerelease: false
168
+ version_requirements: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ - !ruby/object:Gem::Dependency
174
+ name: sqlite3
175
+ requirement: !ruby/object:Gem::Requirement
176
+ requirements:
177
+ - - ">="
178
+ - !ruby/object:Gem::Version
179
+ version: '0'
180
+ type: :development
181
+ prerelease: false
182
+ version_requirements: !ruby/object:Gem::Requirement
183
+ requirements:
184
+ - - ">="
185
+ - !ruby/object:Gem::Version
186
+ version: '0'
187
+ description: Breaking out trackers from solidus core
188
+ email: mike@stembolt.com
189
+ executables: []
190
+ extensions: []
191
+ extra_rdoc_files: []
192
+ files:
193
+ - README.md
194
+ - Rakefile
195
+ - app/assets/javascripts/spree/backend/solidus_trackers.js
196
+ - app/assets/javascripts/spree/frontend/solidus_trackers.js
197
+ - app/assets/stylesheets/spree/backend/solidus_trackers.css
198
+ - app/assets/stylesheets/spree/frontend/solidus_trackers.css
199
+ - app/controllers/spree/admin/trackers_controller.rb
200
+ - app/models/spree/permission_sets/tracker_display.rb
201
+ - app/models/spree/permission_sets/tracker_management.rb
202
+ - app/models/spree/tracker.rb
203
+ - app/overrides/decorate_admin_configurations_index.rb
204
+ - app/overrides/decorate_spree_application.rb
205
+ - app/views/spree/admin/trackers/_form.html.erb
206
+ - app/views/spree/admin/trackers/edit.html.erb
207
+ - app/views/spree/admin/trackers/index.html.erb
208
+ - app/views/spree/admin/trackers/new.html.erb
209
+ - app/views/spree/shared/_google_analytics.html.erb
210
+ - app/views/spree/shared/_tracker_sidebar_entry.html.erb
211
+ - config/locales/en.yml
212
+ - config/routes.rb
213
+ - db/migrate/20160906231452_create_trackers.rb
214
+ - db/migrate/20160920231000_add_store_to_tracker.rb
215
+ - lib/generators/solidus_trackers/install/install_generator.rb
216
+ - lib/solidus_trackers.rb
217
+ - lib/solidus_trackers/engine.rb
218
+ - lib/solidus_trackers/factories.rb
219
+ - lib/solidus_trackers/version.rb
220
+ homepage: https://github.com/swively
221
+ licenses:
222
+ - BSD-3-Clause
223
+ metadata: {}
224
+ post_install_message:
225
+ rdoc_options: []
226
+ require_paths:
227
+ - lib
228
+ required_ruby_version: !ruby/object:Gem::Requirement
229
+ requirements:
230
+ - - ">="
231
+ - !ruby/object:Gem::Version
232
+ version: '0'
233
+ required_rubygems_version: !ruby/object:Gem::Requirement
234
+ requirements:
235
+ - - ">="
236
+ - !ruby/object:Gem::Version
237
+ version: '0'
238
+ requirements: []
239
+ rubyforge_project:
240
+ rubygems_version: 2.5.1
241
+ signing_key:
242
+ specification_version: 4
243
+ summary: Provides analytic trackers for solidus
244
+ test_files: []