spree_mixpanel 2.1.8

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.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: fd4a0289d4e8aea4964282fb8d7e6ecea884abf0
4
+ data.tar.gz: 716077b12521d92afb45b445780b78285ebf1b55
5
+ SHA512:
6
+ metadata.gz: d7f6fb50e9c089bf9a6dd207f1eaea2d596ceacd31163e62ce2dfd7d76b1d868de0c2368703f7101d3196240b646ae56e022fe47c6766d6377af789220514fb4
7
+ data.tar.gz: 6d5a5dfbc256877d79128ab058ee1e39ae095655bfc3683b514e143437393276802387e67dfd292fe745ab6be112bedb1dc82b97a3a7eb11a1f978f16e6deb5e
data/.gitignore ADDED
@@ -0,0 +1,15 @@
1
+ \#*
2
+ *~
3
+ .#*
4
+ .DS_Store
5
+ .idea
6
+ .project
7
+ .sass-cache
8
+ coverage
9
+ Gemfile.lock
10
+ tmp
11
+ nbproject
12
+ pkg
13
+ *.swp
14
+ spec/dummy
15
+ dump.rdb
data/.rspec ADDED
@@ -0,0 +1 @@
1
+ --color
data/Gemfile ADDED
@@ -0,0 +1,6 @@
1
+ source 'https://rubygems.org'
2
+
3
+ # Provides basic authentication functionality for testing parts of your engine
4
+ gem 'spree_auth_devise', github: 'spree/spree_auth_devise', :branch => '2-1-stable'
5
+
6
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,26 @@
1
+ Copyright (c) 2014 [name of plugin creator]
2
+ All rights reserved.
3
+
4
+ Redistribution and use in source and binary forms, with or without modification,
5
+ are permitted provided that the following conditions are met:
6
+
7
+ * Redistributions of source code must retain the above copyright notice,
8
+ this list of conditions and the following disclaimer.
9
+ * Redistributions in binary form must reproduce the above copyright notice,
10
+ this list of conditions and the following disclaimer in the documentation
11
+ and/or other materials provided with the distribution.
12
+ * Neither the name Spree nor the names of its contributors may be used to
13
+ endorse or promote products derived from this software without specific
14
+ prior written permission.
15
+
16
+ THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
17
+ "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
18
+ LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
19
+ A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
20
+ CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
21
+ EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
22
+ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
23
+ PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
+ LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
+ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26
+ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
data/README.md ADDED
@@ -0,0 +1,99 @@
1
+ SpreeMixpanel
2
+ =============
3
+
4
+ Spree integration with Mixpanel
5
+
6
+ Installation
7
+ ------------
8
+
9
+ Add spree_mixpanel to your Gemfile:
10
+
11
+ ```ruby
12
+ gem 'spree_mixpanel', git: 'git@github.com:marcosteixeira/spree_mixpanel.git', branch: '2-1-stable'
13
+ ```
14
+
15
+ Bundle your dependencies and run the installation generator:
16
+
17
+ ```shell
18
+ bundle
19
+ bundle exec rails g spree_mixpanel:install
20
+ ```
21
+
22
+ Run your redis server
23
+ ```shell
24
+ redis-server
25
+ ```
26
+
27
+ Execute Sidekiq
28
+ ```shell
29
+ bundle exec sidekiq
30
+ ```
31
+
32
+ Usage
33
+ ------------
34
+
35
+ Add your Mixpanel credentials to `config/initializers/mixpanel.rb`:
36
+
37
+ ```ruby
38
+ Spree::Mixpanel::Config.configure do |config|
39
+ config.connection_token = "YOUR TOKEN"
40
+ end
41
+ ```
42
+
43
+ ### Storing user profiles
44
+
45
+ ```ruby
46
+ @user.mixpanel_track_user
47
+ ```
48
+
49
+ By default, we send `first_name`, `last_name`, and `email` from user. You can override user `mixpanel_personal_fields` and return personalized fields.
50
+
51
+ ```ruby
52
+ User.class_eval do
53
+ def mixpanel_personal_fields
54
+ {
55
+ 'My Field' => 'FIELD',
56
+ 'Total sales' => self.total_sales
57
+ }
58
+ end
59
+ end
60
+ ```
61
+
62
+ ### Sending orders to mixpanel
63
+
64
+ ```ruby
65
+ @order.mixpanel_track_order
66
+ ```
67
+
68
+ By default, we send `number`, `total`, `state`, `email` and `payment_state` from order. You can override order `mixpanel_personal_fields` and return personalized fields.
69
+
70
+ ```ruby
71
+ Order.class_eval do
72
+ def mixpanel_personal_fields
73
+ {
74
+ 'My Field' => 'FIELD',
75
+ 'Personal amout' => self.personal_amount
76
+ }
77
+ end
78
+ end
79
+ ```
80
+
81
+ Testing
82
+ -------
83
+
84
+ Be sure to bundle your dependencies and then create a dummy test app for the specs to run against.
85
+
86
+ ```shell
87
+ bundle
88
+ bundle exec rake test_app
89
+ bundle exec rspec spec
90
+ ```
91
+
92
+ When testing your applications integration with this extension you may use it's factories.
93
+ Simply add this require statement to your spec_helper:
94
+
95
+ ```ruby
96
+ require 'spree_mixpanel/factories'
97
+ ```
98
+
99
+ Copyright (c) 2014, released under the New BSD License
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
3
+
4
+ require 'rspec/core/rake_task'
5
+ require 'spree/testing_support/extension_rake'
6
+
7
+ RSpec::Core::RakeTask.new
8
+
9
+ task :default => [:spec]
10
+
11
+ desc 'Generates a dummy app for testing'
12
+ task :test_app do
13
+ ENV['LIB_NAME'] = 'spree_mixpanel'
14
+ Rake::Task['extension:test_app'].invoke
15
+ end
@@ -0,0 +1 @@
1
+ //= require admin/spree_backend
@@ -0,0 +1 @@
1
+ //= require store/spree_frontend
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require admin/spree_backend
3
+ */
@@ -0,0 +1,3 @@
1
+ /*
2
+ *= require store/spree_frontend
3
+ */
@@ -0,0 +1,5 @@
1
+ module Spree
2
+ class MixpanelConfiguration < Preferences::Configuration
3
+ preference :connection_token, :string
4
+ end
5
+ end
@@ -0,0 +1,27 @@
1
+ module Spree
2
+
3
+ Order.class_eval do
4
+
5
+ def mixpanel_track_order
6
+ MixpanelOrdersWorker.perform_async(self.id)
7
+ end
8
+
9
+ def mixpanel_fields
10
+ {
11
+ 'Number' => number,
12
+ 'Total' => total,
13
+ 'State' => state,
14
+ 'User email' => email,
15
+ 'Payment state' => payment_state
16
+ }
17
+ end
18
+
19
+ def mixpanel_personal_fields
20
+ {}
21
+ end
22
+
23
+ def mixpanel_event_message
24
+ new_record? ? "Order created" : "Order updated"
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,21 @@
1
+ module Spree
2
+
3
+ User.class_eval do
4
+
5
+ def mixpanel_track_user
6
+ MixpanelUsersWorker.perform_async(email, mixpanel_fields.merge(mixpanel_personal_fields))
7
+ end
8
+
9
+ def mixpanel_personal_fields
10
+ {}
11
+ end
12
+
13
+ def mixpanel_fields
14
+ {
15
+ '$first_name' => first_name,
16
+ '$last_name' => last_name,
17
+ '$email' => email
18
+ }
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,8 @@
1
+ class MixpanelOrdersWorker
2
+ include Sidekiq::Worker
3
+
4
+ def perform(order_id)
5
+ order = Spree::Order.find(order_id)
6
+ MixpanelTracker.track_order(order)
7
+ end
8
+ end
@@ -0,0 +1,7 @@
1
+ class MixpanelUsersWorker
2
+ include Sidekiq::Worker
3
+
4
+ def perform(user_email, opts={})
5
+ MixpanelTracker.track_user(user_email, opts)
6
+ end
7
+ end
data/bin/rails ADDED
@@ -0,0 +1,7 @@
1
+ # This command will automatically be run when you run "rails" with Rails 3 gems installed from the root of your application.
2
+
3
+ ENGINE_ROOT = File.expand_path('../..', __FILE__)
4
+ ENGINE_PATH = File.expand_path('../../lib/spree_mixpanel/engine', __FILE__)
5
+
6
+ require 'rails/all'
7
+ require 'rails/engine/commands'
@@ -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"
data/config/routes.rb ADDED
@@ -0,0 +1,3 @@
1
+ Spree::Core::Engine.routes.draw do
2
+ # Add your extension routes here
3
+ end
@@ -0,0 +1,37 @@
1
+ module SpreeMixpanel
2
+ module Generators
3
+ class InstallGenerator < Rails::Generators::Base
4
+
5
+ source_root File.expand_path("../templates", __FILE__)
6
+
7
+ def copy_initializer
8
+ copy_file "mixpanel.rb", "config/initializers/mixpanel.rb"
9
+ end
10
+
11
+ class_option :auto_run_migrations, :type => :boolean, :default => false
12
+
13
+ def add_javascripts
14
+ append_file 'app/assets/javascripts/store/all.js', "//= require store/spree_mixpanel\n"
15
+ append_file 'app/assets/javascripts/admin/all.js', "//= require admin/spree_mixpanel\n"
16
+ end
17
+
18
+ def add_stylesheets
19
+ inject_into_file 'app/assets/stylesheets/store/all.css', " *= require store/spree_mixpanel\n", :before => /\*\//, :verbose => true
20
+ inject_into_file 'app/assets/stylesheets/admin/all.css', " *= require admin/spree_mixpanel\n", :before => /\*\//, :verbose => true
21
+ end
22
+
23
+ def add_migrations
24
+ run 'bundle exec rake railties:install:migrations FROM=spree_mixpanel'
25
+ end
26
+
27
+ def run_migrations
28
+ run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask 'Would you like to run the migrations now? [Y/n]')
29
+ if run_migrations
30
+ run 'bundle exec rake db:migrate'
31
+ else
32
+ puts 'Skipping rake db:migrate, don\'t forget to run it!'
33
+ end
34
+ end
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,3 @@
1
+ Spree::Mixpanel::Config.configure do |config|
2
+ config.connection_token = 'YOUR TOKEN'
3
+ end
@@ -0,0 +1,5 @@
1
+ require 'spree_core'
2
+ require 'spree_mixpanel/engine'
3
+ require 'spree_mixpanel/mixpanel'
4
+ require 'spree_mixpanel/tracker/mixpanel_tracker'
5
+ require 'sidekiq'
@@ -0,0 +1,26 @@
1
+ module SpreeMixpanel
2
+ class Engine < Rails::Engine
3
+ require 'spree/core'
4
+ isolate_namespace Spree
5
+ engine_name 'spree_mixpanel'
6
+
7
+ config.autoload_paths += %W(#{config.root}/lib)
8
+
9
+ # use rspec for tests
10
+ config.generators do |g|
11
+ g.test_framework :rspec
12
+ end
13
+
14
+ initializer "spree.mixpanel.environment", :before => :load_config_initializers do |app|
15
+ Spree::Mixpanel::Config = Spree::MixpanelConfiguration.new
16
+ end
17
+
18
+ def self.activate
19
+ Dir.glob(File.join(File.dirname(__FILE__), '../../app/**/*_decorator*.rb')) do |c|
20
+ Rails.configuration.cache_classes ? require(c) : load(c)
21
+ end
22
+ end
23
+
24
+ config.to_prepare &method(:activate).to_proc
25
+ end
26
+ end
@@ -0,0 +1,6 @@
1
+ FactoryGirl.define do
2
+ # Define your Spree extensions Factories within this file to enable applications, and other extensions to use and override them.
3
+ #
4
+ # Example adding this to your spec_helper will load these Factories for use:
5
+ # require 'spree_mixpanel/factories'
6
+ end
@@ -0,0 +1,5 @@
1
+ module Spree
2
+ module Mixpanel
3
+
4
+ end
5
+ end
@@ -0,0 +1,28 @@
1
+ require 'mixpanel-ruby'
2
+
3
+ module MixpanelTracker
4
+
5
+ def self.track_user(email, opts)
6
+ tracker.people.set(email, opts)
7
+ end
8
+
9
+ def self.track_order(order)
10
+ tracker.track(order.email, order.mixpanel_event_message, order.mixpanel_fields.merge(order.mixpanel_personal_fields))
11
+ end
12
+
13
+ private
14
+ def self.tracker
15
+ validate_connection_token
16
+ @tracker ||= Mixpanel::Tracker.new(connection_token)
17
+ end
18
+
19
+ def self.connection_token
20
+ Spree::Mixpanel::Config[:connection_token]
21
+ end
22
+
23
+ def self.validate_connection_token
24
+ raise MixpanelApiError, "Mixpanel connection token is required" if !connection_token.present?
25
+ end
26
+
27
+ class MixpanelApiError < StandardError; end
28
+ end
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ module MixpanelTracker
4
+ describe MixpanelTracker do
5
+
6
+ let (:config) { Spree::Mixpanel::Config }
7
+
8
+ it "is invalid without a connection token" do
9
+ config[:connection_token] = nil
10
+ expect { MixpanelTracker.tracker }.to raise_error(MixpanelApiError)
11
+ end
12
+
13
+ it "is valid with a connection token" do
14
+ config[:connection_token] = "TOKEN"
15
+ expect { MixpanelTracker.tracker }.to_not raise_error
16
+ end
17
+
18
+ end
19
+ end
@@ -0,0 +1,65 @@
1
+ # Configure Rails Environment
2
+ ENV['RAILS_ENV'] = 'test'
3
+
4
+ require File.expand_path('../dummy/config/environment.rb', __FILE__)
5
+
6
+ require 'rspec/rails'
7
+ require 'database_cleaner'
8
+ require 'ffaker'
9
+
10
+ # Requires supporting ruby files with custom matchers and macros, etc,
11
+ # in spec/support/ and its subdirectories.
12
+ Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require f }
13
+
14
+ # Requires factories defined in spree_core
15
+ require 'spree/testing_support/factories'
16
+ require 'spree/testing_support/controller_requests'
17
+ require 'spree/testing_support/authorization_helpers'
18
+ require 'spree/testing_support/url_helpers'
19
+
20
+ # Requires factories defined in lib/spree_mixpanel/factories.rb
21
+ require 'spree_mixpanel/factories'
22
+
23
+ RSpec.configure do |config|
24
+ config.include FactoryGirl::Syntax::Methods
25
+
26
+ # == URL Helpers
27
+ #
28
+ # Allows access to Spree's routes in specs:
29
+ #
30
+ # visit spree.admin_path
31
+ # current_path.should eql(spree.products_path)
32
+ config.include Spree::TestingSupport::UrlHelpers
33
+
34
+ config.infer_spec_type_from_file_location!
35
+ # == Mock Framework
36
+ #
37
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
38
+ #
39
+ # config.mock_with :mocha
40
+ # config.mock_with :flexmock
41
+ # config.mock_with :rr
42
+ config.mock_with :rspec
43
+ config.color = true
44
+
45
+ # Remove this line if you're not using ActiveRecord or ActiveRecord fixtures
46
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
47
+
48
+ # Capybara javascript drivers require transactional fixtures set to false, and we use DatabaseCleaner
49
+ # to cleanup after each test instead. Without transactional fixtures set to false the records created
50
+ # to setup a test will be unavailable to the browser, which runs under a separate server instance.
51
+ config.use_transactional_fixtures = false
52
+
53
+ # Ensure Suite is set to use transactions for speed.
54
+ config.before :suite do
55
+ DatabaseCleaner.strategy = :transaction
56
+ DatabaseCleaner.clean_with :truncation
57
+ end
58
+
59
+ # After each spec clean the database.
60
+ config.after :each do
61
+ DatabaseCleaner.clean
62
+ end
63
+
64
+ config.fail_fast = ENV['FAIL_FAST'] || false
65
+ end
@@ -0,0 +1,27 @@
1
+ # encoding: UTF-8
2
+ Gem::Specification.new do |s|
3
+ s.platform = Gem::Platform::RUBY
4
+ s.name = 'spree_mixpanel'
5
+ s.version = '2.1.8'
6
+ s.summary = 'Spree/Mixpanel integration'
7
+ s.description = s.summary
8
+ s.required_ruby_version = '>= 1.9.3'
9
+
10
+ s.author = 'Marcos Teixeira'
11
+ s.email = 'm.viniteixeira@gmail.com'
12
+ s.homepage = 'https://github.com/marcosteixeira/spree_mixpanel'
13
+
14
+ s.files = `git ls-files`.split("\n")
15
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
16
+ s.require_path = 'lib'
17
+ s.requirements << 'none'
18
+
19
+ s.add_dependency 'spree_core'
20
+ s.add_dependency 'mixpanel-ruby', '~> 1.4.0'
21
+ s.add_dependency 'sidekiq', '~> 3.2.1'
22
+
23
+ s.add_development_dependency 'database_cleaner'
24
+ s.add_development_dependency 'factory_girl', '~> 4.2'
25
+ s.add_development_dependency 'rspec-rails', '~> 2.13'
26
+ s.add_development_dependency 'sqlite3'
27
+ end
metadata ADDED
@@ -0,0 +1,171 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: spree_mixpanel
3
+ version: !ruby/object:Gem::Version
4
+ version: 2.1.8
5
+ platform: ruby
6
+ authors:
7
+ - Marcos Teixeira
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2014-07-16 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: spree_core
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - '>='
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - '>='
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: mixpanel-ruby
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ~>
32
+ - !ruby/object:Gem::Version
33
+ version: 1.4.0
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ~>
39
+ - !ruby/object:Gem::Version
40
+ version: 1.4.0
41
+ - !ruby/object:Gem::Dependency
42
+ name: sidekiq
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ~>
46
+ - !ruby/object:Gem::Version
47
+ version: 3.2.1
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ~>
53
+ - !ruby/object:Gem::Version
54
+ version: 3.2.1
55
+ - !ruby/object:Gem::Dependency
56
+ name: database_cleaner
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - '>='
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: factory_girl
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ~>
74
+ - !ruby/object:Gem::Version
75
+ version: '4.2'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ~>
81
+ - !ruby/object:Gem::Version
82
+ version: '4.2'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rspec-rails
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ~>
88
+ - !ruby/object:Gem::Version
89
+ version: '2.13'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ~>
95
+ - !ruby/object:Gem::Version
96
+ version: '2.13'
97
+ - !ruby/object:Gem::Dependency
98
+ name: sqlite3
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - '>='
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - '>='
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: Spree/Mixpanel integration
112
+ email: m.viniteixeira@gmail.com
113
+ executables: []
114
+ extensions: []
115
+ extra_rdoc_files: []
116
+ files:
117
+ - .gitignore
118
+ - .rspec
119
+ - Gemfile
120
+ - LICENSE
121
+ - README.md
122
+ - Rakefile
123
+ - app/assets/javascripts/admin/spree_mixpanel.js
124
+ - app/assets/javascripts/store/spree_mixpanel.js
125
+ - app/assets/stylesheets/admin/spree_mixpanel.css
126
+ - app/assets/stylesheets/store/spree_mixpanel.css
127
+ - app/models/spree/mixpanel_configuration.rb
128
+ - app/models/spree/order_decorator.rb
129
+ - app/models/spree/user_decorator.rb
130
+ - app/workers/mixpanel_orders_worker.rb
131
+ - app/workers/mixpanel_users_worker.rb
132
+ - bin/rails
133
+ - config/locales/en.yml
134
+ - config/routes.rb
135
+ - lib/generators/spree_mixpanel/install/install_generator.rb
136
+ - lib/generators/spree_mixpanel/install/templates/mixpanel.rb
137
+ - lib/spree_mixpanel.rb
138
+ - lib/spree_mixpanel/engine.rb
139
+ - lib/spree_mixpanel/factories.rb
140
+ - lib/spree_mixpanel/mixpanel.rb
141
+ - lib/spree_mixpanel/tracker/mixpanel_tracker.rb
142
+ - spec/lib/spree_mixpanel/tracker/mixpanel_tracker_spec.rb
143
+ - spec/spec_helper.rb
144
+ - spree_mixpanel.gemspec
145
+ homepage: https://github.com/marcosteixeira/spree_mixpanel
146
+ licenses: []
147
+ metadata: {}
148
+ post_install_message:
149
+ rdoc_options: []
150
+ require_paths:
151
+ - lib
152
+ required_ruby_version: !ruby/object:Gem::Requirement
153
+ requirements:
154
+ - - '>='
155
+ - !ruby/object:Gem::Version
156
+ version: 1.9.3
157
+ required_rubygems_version: !ruby/object:Gem::Requirement
158
+ requirements:
159
+ - - '>='
160
+ - !ruby/object:Gem::Version
161
+ version: '0'
162
+ requirements:
163
+ - none
164
+ rubyforge_project:
165
+ rubygems_version: 2.3.0
166
+ signing_key:
167
+ specification_version: 4
168
+ summary: Spree/Mixpanel integration
169
+ test_files:
170
+ - spec/lib/spree_mixpanel/tracker/mixpanel_tracker_spec.rb
171
+ - spec/spec_helper.rb