solidus_mailchimp_sync 1.0.0.beta01
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 +7 -0
- data/LICENSE +26 -0
- data/README.md +103 -0
- data/Rakefile +31 -0
- data/app/assets/javascripts/spree/backend/solidus_mailchimp_sync.js +2 -0
- data/app/assets/javascripts/spree/frontend/solidus_mailchimp_sync.js +2 -0
- data/app/assets/stylesheets/spree/backend/solidus_mailchimp_sync.css +4 -0
- data/app/assets/stylesheets/spree/frontend/solidus_mailchimp_sync.css +4 -0
- data/app/jobs/solidus_mailchimp_sync/sync_job.rb +15 -0
- data/app/models/solidus_mailchimp_sync/error.rb +32 -0
- data/app/models/solidus_mailchimp_sync/mailchimp.rb +69 -0
- data/app/serializers/solidus_mailchimp_sync/customer_serializer.rb +34 -0
- data/app/serializers/solidus_mailchimp_sync/line_item_serializer.rb +26 -0
- data/app/serializers/solidus_mailchimp_sync/order_serializer.rb +70 -0
- data/app/serializers/solidus_mailchimp_sync/product_serializer.rb +44 -0
- data/app/serializers/solidus_mailchimp_sync/variant_serializer.rb +59 -0
- data/app/solidus_decorators/spree/image_decorator.rb +16 -0
- data/app/solidus_decorators/spree/line_item_decorator.rb +8 -0
- data/app/solidus_decorators/spree/order_decorator.rb +8 -0
- data/app/solidus_decorators/spree/price_decorator.rb +10 -0
- data/app/solidus_decorators/spree/product_decorator.rb +8 -0
- data/app/solidus_decorators/spree/user_decorator.rb +10 -0
- data/app/solidus_decorators/spree/variant_decorator.rb +8 -0
- data/app/synchronizers/solidus_mailchimp_sync/base_synchronizer.rb +74 -0
- data/app/synchronizers/solidus_mailchimp_sync/order_synchronizer.rb +108 -0
- data/app/synchronizers/solidus_mailchimp_sync/product_synchronizer.rb +32 -0
- data/app/synchronizers/solidus_mailchimp_sync/user_synchronizer.rb +44 -0
- data/app/synchronizers/solidus_mailchimp_sync/variant_synchronizer.rb +23 -0
- data/config/locales/en.yml +5 -0
- data/config/routes.rb +3 -0
- data/lib/generators/solidus_mailchimp_sync/install/install_generator.rb +27 -0
- data/lib/generators/solidus_mailchimp_sync/install/templates/config/initializers/solidus_mailchimp_sync.rb +36 -0
- data/lib/solidus_mailchimp_sync.rb +22 -0
- data/lib/solidus_mailchimp_sync/engine.rb +20 -0
- data/lib/solidus_mailchimp_sync/factories.rb +35 -0
- data/lib/solidus_mailchimp_sync/version.rb +3 -0
- data/lib/tasks/solidus_mailchimp_sync.rake +66 -0
- metadata +304 -0
@@ -0,0 +1,23 @@
|
|
1
|
+
module SolidusMailchimpSync
|
2
|
+
class VariantSynchronizer < BaseSynchronizer
|
3
|
+
self.serializer_class_name = "::SolidusMailchimpSync::VariantSerializer"
|
4
|
+
# Price updates are caught from after commit on Spree::Price
|
5
|
+
self.synced_attributes = %w{id sku}
|
6
|
+
|
7
|
+
def sync
|
8
|
+
put
|
9
|
+
rescue SolidusMailchimpSync::Error => e
|
10
|
+
tries ||= 0 ; tries += 1
|
11
|
+
if tries <= 1 && e.status == 400 && e.title == 'Parent Product Does Not Exist'
|
12
|
+
ProductSynchronizer.new(model.product).sync
|
13
|
+
retry
|
14
|
+
else
|
15
|
+
raise e
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def path
|
20
|
+
"/products/#{model.product.id}/variants/#{model.id}"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
data/config/routes.rb
ADDED
@@ -0,0 +1,27 @@
|
|
1
|
+
module SolidusMailchimpSync
|
2
|
+
module Generators
|
3
|
+
class InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("../templates", __FILE__)
|
5
|
+
class_option :auto_run_migrations, type: :boolean, default: false
|
6
|
+
|
7
|
+
def copy_initializer
|
8
|
+
copy_file "config/initializers/solidus_mailchimp_sync.rb"
|
9
|
+
end
|
10
|
+
|
11
|
+
# No migrations at present
|
12
|
+
|
13
|
+
# def add_migrations
|
14
|
+
# run 'bundle exec rake railties:install:migrations FROM=solidus_mailchimp_sync'
|
15
|
+
# end
|
16
|
+
|
17
|
+
# def run_migrations
|
18
|
+
# run_migrations = options[:auto_run_migrations] || ['', 'y', 'Y'].include?(ask('Would you like to run the migrations now? [Y/n]'))
|
19
|
+
# if run_migrations
|
20
|
+
# run 'bundle exec rake db:migrate'
|
21
|
+
# else
|
22
|
+
# puts 'Skipping rake db:migrate, don\'t forget to run it!'
|
23
|
+
# end
|
24
|
+
# end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
@@ -0,0 +1,36 @@
|
|
1
|
+
# https://github.com/friendsoftheweb/solidus_mailchimp_sync
|
2
|
+
|
3
|
+
# Strogly suggest you set your mailchimp API key in your ENV
|
4
|
+
SolidusMailchimpSync.api_key = ENV['MAILCHIMP_API_KEY']
|
5
|
+
|
6
|
+
# These ones are not especially confidential and don't need to be ENV,
|
7
|
+
# you can set them however you like:
|
8
|
+
|
9
|
+
# We need to know the id of the Mailchimp Store object. If you don't
|
10
|
+
# have one, you can create one with `rake solidus_mailchimp_sync:create_store LIST_ID=xxxx`
|
11
|
+
SolidusMailchimpSync.store_id = ENV['MAILCHIMP_STORE_ID']
|
12
|
+
|
13
|
+
# Disable automatic sync except in production. Feel free to change
|
14
|
+
# this is you like.
|
15
|
+
SolidusMailchimpSync.auto_sync_enabled = Rails.env.production?
|
16
|
+
|
17
|
+
# Automatic synchronization is done with ActiveJob, use a queue
|
18
|
+
# other than :default if you want:
|
19
|
+
# SolidusMailchimpSync::SyncJob.use_queue_name = :mailchimp_sync
|
20
|
+
|
21
|
+
# Turn off not just auto-sync, but completely disable connections
|
22
|
+
# to mailchip at all, make them no-op.
|
23
|
+
# SolidusMailchimpSync.enabled = false
|
24
|
+
|
25
|
+
# You may want to provide custom serializers, to provide custom
|
26
|
+
# urls (esp if you don't use Solidus frontend), or account
|
27
|
+
# for custom data or logic, or sync more Customer attributes
|
28
|
+
# from your local User class.
|
29
|
+
#
|
30
|
+
# SolidusMailchimpSync::OrderSynchronizer.serializer_class_name = "::SolidusMailchimpSync::MyAppOrderSerializer"
|
31
|
+
# SolidusMailchimpSync::VariantSynchronizer.serializer_class_name = "::SolidusMailchimpSync::MyAppVariantSerializer"
|
32
|
+
#
|
33
|
+
# SolidusMailchimpSync::UserSynchronizer.synced_attributes.concat ['first_name', 'last_name'] # need to be strings
|
34
|
+
# SolidusMailchimpSync::UserSynchronizer.serializer_class_name = "::SolidusMailchimpSync::MyAppCustomerSerializer"
|
35
|
+
|
36
|
+
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'solidus_core'
|
2
|
+
require 'solidus_mailchimp_sync/engine'
|
3
|
+
|
4
|
+
module SolidusMailchimpSync
|
5
|
+
mattr_accessor :api_key
|
6
|
+
mattr_accessor :store_id
|
7
|
+
mattr_accessor :enabled
|
8
|
+
self.enabled = true
|
9
|
+
mattr_accessor :auto_sync_enabled
|
10
|
+
|
11
|
+
def self.data_center
|
12
|
+
@data_center ||= begin
|
13
|
+
if api_key.present?
|
14
|
+
dc = api_key.split('-').last
|
15
|
+
if dc.empty? || dc == api_key
|
16
|
+
raise ArgumentError, "Mailchimp API key is expected to end in a hyphen and data center code, but was not found in `#{api_key}`, do not know how to proceed"
|
17
|
+
end
|
18
|
+
dc
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module SolidusMailchimpSync
|
2
|
+
class Engine < Rails::Engine
|
3
|
+
require 'spree/core'
|
4
|
+
isolate_namespace Spree
|
5
|
+
engine_name 'solidus_mailchimp_sync'
|
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,35 @@
|
|
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 'solidus_mailchimp_sync/factories'
|
6
|
+
end
|
7
|
+
|
8
|
+
|
9
|
+
FactoryGirl.modify do
|
10
|
+
factory :order do
|
11
|
+
factory :order_with_line_items do
|
12
|
+
# This custom factory is from Solidus master at:
|
13
|
+
# https://github.com/solidusio/solidus/blob/3a0bbb63338b31c308a7d26205c4b21f9baed85a/core/lib/spree/testing_support/factories/order_factory.rb#L55
|
14
|
+
# But was not yet included in a solidus release, and we need it.
|
15
|
+
factory :order_ready_to_complete do
|
16
|
+
state 'confirm'
|
17
|
+
payment_state 'checkout'
|
18
|
+
|
19
|
+
transient do
|
20
|
+
payment_type :credit_card_payment
|
21
|
+
end
|
22
|
+
|
23
|
+
after(:create) do |order, evaluator|
|
24
|
+
create(evaluator.payment_type, {
|
25
|
+
amount: order.total,
|
26
|
+
order: order,
|
27
|
+
state: order.payment_state
|
28
|
+
})
|
29
|
+
|
30
|
+
order.payments.reload
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -0,0 +1,66 @@
|
|
1
|
+
namespace :solidus_mailchimp_sync do
|
2
|
+
desc "Create a Mailchimp Store. ENV LIST_ID param is required"
|
3
|
+
task create_mailchimp_store: :environment do
|
4
|
+
unless ENV["LIST_ID"].present?
|
5
|
+
raise ArgumentError, "LIST_ID env arg is required. Your mailchimp Listserv ID."
|
6
|
+
end
|
7
|
+
|
8
|
+
response = SolidusMailchimpSync::Mailchimp.request(:post, "/ecommerce/stores", body: {
|
9
|
+
list_id: ENV["LIST_ID"],
|
10
|
+
id: ENV["NEW_STORE_ID"] || (Spree::Store.default.name || "solidus").parameterize,
|
11
|
+
name: Spree::Store.default.name || "Solidus",
|
12
|
+
currency_code: Spree::Store.default.default_currency || 'USD'
|
13
|
+
})
|
14
|
+
store_id = response["id"]
|
15
|
+
|
16
|
+
raise TypeError, "Unexpected response from Mailchimp, can't find created store id" unless store_id.present?
|
17
|
+
|
18
|
+
puts "\nNew Mailchimp Store created with id: `#{store_id}`"
|
19
|
+
puts
|
20
|
+
puts "You probably want to add to your ./config/initializers/solidus_mailchimp_sync.rb:"
|
21
|
+
puts
|
22
|
+
puts " SolidusMailchimpSync.store_id='#{store_id}'"
|
23
|
+
puts
|
24
|
+
end
|
25
|
+
|
26
|
+
desc "sync ALL data to mailchimp"
|
27
|
+
task :bulk_sync => :environment do
|
28
|
+
require 'ruby-progressbar'
|
29
|
+
|
30
|
+
progress_format = '%t %c of %C |%B| %e'
|
31
|
+
|
32
|
+
puts "\nSyncing Users, Products, and Orders to mailchimp, this could take a while...\n\n"
|
33
|
+
|
34
|
+
if Spree.user_class
|
35
|
+
user_count = Spree.user_class.count
|
36
|
+
progress_bar = ProgressBar.create(total: user_count, format: progress_format, title: Spree.user_class.name.pluralize)
|
37
|
+
Spree.user_class.find_each do |user|
|
38
|
+
begin
|
39
|
+
SolidusMailchimpSync::UserSynchronizer.new(user).sync
|
40
|
+
rescue SolidusMailchimpSync::Error => e
|
41
|
+
# just so we know what user failed.
|
42
|
+
puts user.inspect
|
43
|
+
raise e
|
44
|
+
end
|
45
|
+
progress_bar.increment
|
46
|
+
end
|
47
|
+
progress_bar.finish
|
48
|
+
end
|
49
|
+
|
50
|
+
product_count = Spree::Product.count
|
51
|
+
progress_bar = ProgressBar.create(total: product_count, format: progress_format, title: "Spree::Products")
|
52
|
+
Spree::Product.find_each do |product|
|
53
|
+
SolidusMailchimpSync::ProductSynchronizer.new(product).sync
|
54
|
+
progress_bar.increment
|
55
|
+
end
|
56
|
+
progress_bar.finish
|
57
|
+
|
58
|
+
order_count = Spree::Order.complete.count
|
59
|
+
progress_bar = ProgressBar.create(total: order_count, format: progress_format, title: "Completed Spree::Orders")
|
60
|
+
Spree::Order.complete.find_each do |order|
|
61
|
+
SolidusMailchimpSync::OrderSynchronizer.new(order).sync
|
62
|
+
progress_bar.increment
|
63
|
+
end
|
64
|
+
progress_bar.finish
|
65
|
+
end
|
66
|
+
end
|
metadata
ADDED
@@ -0,0 +1,304 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: solidus_mailchimp_sync
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0.beta01
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jonathan Rochkind, Friends of the Web
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-07-29 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: '1.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: http
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '2.0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '2.0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: ruby-progressbar
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.0'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.0'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: capybara
|
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: poltergeist
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: coffee-rails
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sass-rails
|
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
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: database_cleaner
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
- !ruby/object:Gem::Dependency
|
126
|
+
name: factory_girl
|
127
|
+
requirement: !ruby/object:Gem::Requirement
|
128
|
+
requirements:
|
129
|
+
- - ">="
|
130
|
+
- !ruby/object:Gem::Version
|
131
|
+
version: '0'
|
132
|
+
type: :development
|
133
|
+
prerelease: false
|
134
|
+
version_requirements: !ruby/object:Gem::Requirement
|
135
|
+
requirements:
|
136
|
+
- - ">="
|
137
|
+
- !ruby/object:Gem::Version
|
138
|
+
version: '0'
|
139
|
+
- !ruby/object:Gem::Dependency
|
140
|
+
name: rspec-rails
|
141
|
+
requirement: !ruby/object:Gem::Requirement
|
142
|
+
requirements:
|
143
|
+
- - ">="
|
144
|
+
- !ruby/object:Gem::Version
|
145
|
+
version: '0'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
153
|
+
- !ruby/object:Gem::Dependency
|
154
|
+
name: rubocop
|
155
|
+
requirement: !ruby/object:Gem::Requirement
|
156
|
+
requirements:
|
157
|
+
- - '='
|
158
|
+
- !ruby/object:Gem::Version
|
159
|
+
version: 0.37.2
|
160
|
+
type: :development
|
161
|
+
prerelease: false
|
162
|
+
version_requirements: !ruby/object:Gem::Requirement
|
163
|
+
requirements:
|
164
|
+
- - '='
|
165
|
+
- !ruby/object:Gem::Version
|
166
|
+
version: 0.37.2
|
167
|
+
- !ruby/object:Gem::Dependency
|
168
|
+
name: rubocop-rspec
|
169
|
+
requirement: !ruby/object:Gem::Requirement
|
170
|
+
requirements:
|
171
|
+
- - '='
|
172
|
+
- !ruby/object:Gem::Version
|
173
|
+
version: 1.4.0
|
174
|
+
type: :development
|
175
|
+
prerelease: false
|
176
|
+
version_requirements: !ruby/object:Gem::Requirement
|
177
|
+
requirements:
|
178
|
+
- - '='
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 1.4.0
|
181
|
+
- !ruby/object:Gem::Dependency
|
182
|
+
name: simplecov
|
183
|
+
requirement: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - ">="
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '0'
|
188
|
+
type: :development
|
189
|
+
prerelease: false
|
190
|
+
version_requirements: !ruby/object:Gem::Requirement
|
191
|
+
requirements:
|
192
|
+
- - ">="
|
193
|
+
- !ruby/object:Gem::Version
|
194
|
+
version: '0'
|
195
|
+
- !ruby/object:Gem::Dependency
|
196
|
+
name: sqlite3
|
197
|
+
requirement: !ruby/object:Gem::Requirement
|
198
|
+
requirements:
|
199
|
+
- - ">="
|
200
|
+
- !ruby/object:Gem::Version
|
201
|
+
version: '0'
|
202
|
+
type: :development
|
203
|
+
prerelease: false
|
204
|
+
version_requirements: !ruby/object:Gem::Requirement
|
205
|
+
requirements:
|
206
|
+
- - ">="
|
207
|
+
- !ruby/object:Gem::Version
|
208
|
+
version: '0'
|
209
|
+
- !ruby/object:Gem::Dependency
|
210
|
+
name: vcr
|
211
|
+
requirement: !ruby/object:Gem::Requirement
|
212
|
+
requirements:
|
213
|
+
- - "~>"
|
214
|
+
- !ruby/object:Gem::Version
|
215
|
+
version: '3.0'
|
216
|
+
type: :development
|
217
|
+
prerelease: false
|
218
|
+
version_requirements: !ruby/object:Gem::Requirement
|
219
|
+
requirements:
|
220
|
+
- - "~>"
|
221
|
+
- !ruby/object:Gem::Version
|
222
|
+
version: '3.0'
|
223
|
+
- !ruby/object:Gem::Dependency
|
224
|
+
name: webmock
|
225
|
+
requirement: !ruby/object:Gem::Requirement
|
226
|
+
requirements:
|
227
|
+
- - "~>"
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '2.1'
|
230
|
+
type: :development
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
requirements:
|
234
|
+
- - "~>"
|
235
|
+
- !ruby/object:Gem::Version
|
236
|
+
version: '2.1'
|
237
|
+
description:
|
238
|
+
email: shout@friendsoftheweb.com
|
239
|
+
executables: []
|
240
|
+
extensions: []
|
241
|
+
extra_rdoc_files: []
|
242
|
+
files:
|
243
|
+
- LICENSE
|
244
|
+
- README.md
|
245
|
+
- Rakefile
|
246
|
+
- app/assets/javascripts/spree/backend/solidus_mailchimp_sync.js
|
247
|
+
- app/assets/javascripts/spree/frontend/solidus_mailchimp_sync.js
|
248
|
+
- app/assets/stylesheets/spree/backend/solidus_mailchimp_sync.css
|
249
|
+
- app/assets/stylesheets/spree/frontend/solidus_mailchimp_sync.css
|
250
|
+
- app/jobs/solidus_mailchimp_sync/sync_job.rb
|
251
|
+
- app/models/solidus_mailchimp_sync/error.rb
|
252
|
+
- app/models/solidus_mailchimp_sync/mailchimp.rb
|
253
|
+
- app/serializers/solidus_mailchimp_sync/customer_serializer.rb
|
254
|
+
- app/serializers/solidus_mailchimp_sync/line_item_serializer.rb
|
255
|
+
- app/serializers/solidus_mailchimp_sync/order_serializer.rb
|
256
|
+
- app/serializers/solidus_mailchimp_sync/product_serializer.rb
|
257
|
+
- app/serializers/solidus_mailchimp_sync/variant_serializer.rb
|
258
|
+
- app/solidus_decorators/spree/image_decorator.rb
|
259
|
+
- app/solidus_decorators/spree/line_item_decorator.rb
|
260
|
+
- app/solidus_decorators/spree/order_decorator.rb
|
261
|
+
- app/solidus_decorators/spree/price_decorator.rb
|
262
|
+
- app/solidus_decorators/spree/product_decorator.rb
|
263
|
+
- app/solidus_decorators/spree/user_decorator.rb
|
264
|
+
- app/solidus_decorators/spree/variant_decorator.rb
|
265
|
+
- app/synchronizers/solidus_mailchimp_sync/base_synchronizer.rb
|
266
|
+
- app/synchronizers/solidus_mailchimp_sync/order_synchronizer.rb
|
267
|
+
- app/synchronizers/solidus_mailchimp_sync/product_synchronizer.rb
|
268
|
+
- app/synchronizers/solidus_mailchimp_sync/user_synchronizer.rb
|
269
|
+
- app/synchronizers/solidus_mailchimp_sync/variant_synchronizer.rb
|
270
|
+
- config/locales/en.yml
|
271
|
+
- config/routes.rb
|
272
|
+
- lib/generators/solidus_mailchimp_sync/install/install_generator.rb
|
273
|
+
- lib/generators/solidus_mailchimp_sync/install/templates/config/initializers/solidus_mailchimp_sync.rb
|
274
|
+
- lib/solidus_mailchimp_sync.rb
|
275
|
+
- lib/solidus_mailchimp_sync/engine.rb
|
276
|
+
- lib/solidus_mailchimp_sync/factories.rb
|
277
|
+
- lib/solidus_mailchimp_sync/version.rb
|
278
|
+
- lib/tasks/solidus_mailchimp_sync.rake
|
279
|
+
homepage: http://github.com/friendsoftheweb/solidus_mailchimp_sync
|
280
|
+
licenses:
|
281
|
+
- BSD-3-Clause
|
282
|
+
metadata: {}
|
283
|
+
post_install_message:
|
284
|
+
rdoc_options: []
|
285
|
+
require_paths:
|
286
|
+
- lib
|
287
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
288
|
+
requirements:
|
289
|
+
- - ">="
|
290
|
+
- !ruby/object:Gem::Version
|
291
|
+
version: '0'
|
292
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
293
|
+
requirements:
|
294
|
+
- - ">"
|
295
|
+
- !ruby/object:Gem::Version
|
296
|
+
version: 1.3.1
|
297
|
+
requirements: []
|
298
|
+
rubyforge_project:
|
299
|
+
rubygems_version: 2.5.1
|
300
|
+
signing_key:
|
301
|
+
specification_version: 4
|
302
|
+
summary: Solidus -> Mailchimp Ecommerce synchronization
|
303
|
+
test_files: []
|
304
|
+
has_rdoc:
|