effective_qb_sync 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (92) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +94 -0
  4. data/Rakefile +21 -0
  5. data/app/controllers/admin/qb_syncs_controller.rb +60 -0
  6. data/app/controllers/effective/qb_sync_controller.rb +40 -0
  7. data/app/models/effective/access_denied.rb +17 -0
  8. data/app/models/effective/datatables/qb_syncs.rb +30 -0
  9. data/app/models/effective/qb_log.rb +13 -0
  10. data/app/models/effective/qb_machine.rb +281 -0
  11. data/app/models/effective/qb_order_item.rb +13 -0
  12. data/app/models/effective/qb_order_items_form.rb +55 -0
  13. data/app/models/effective/qb_request.rb +262 -0
  14. data/app/models/effective/qb_ticket.rb +55 -0
  15. data/app/models/effective/qbwc_supervisor.rb +89 -0
  16. data/app/views/admin/qb_syncs/_actions.html.haml +2 -0
  17. data/app/views/admin/qb_syncs/_qb_item_names.html.haml +9 -0
  18. data/app/views/admin/qb_syncs/index.html.haml +24 -0
  19. data/app/views/admin/qb_syncs/instructions.html.haml +136 -0
  20. data/app/views/admin/qb_syncs/show.html.haml +52 -0
  21. data/app/views/effective/orders_mailer/qb_sync_error.html.haml +56 -0
  22. data/app/views/effective/qb_sync/authenticate.erb +12 -0
  23. data/app/views/effective/qb_sync/clientVersion.erb +8 -0
  24. data/app/views/effective/qb_sync/closeConnection.erb +8 -0
  25. data/app/views/effective/qb_sync/connectionError.erb +9 -0
  26. data/app/views/effective/qb_sync/getLastError.erb +9 -0
  27. data/app/views/effective/qb_sync/receiveResponseXML.erb +8 -0
  28. data/app/views/effective/qb_sync/sendRequestXML.erb +8 -0
  29. data/app/views/effective/qb_sync/serverVersion.erb +8 -0
  30. data/app/views/effective/qb_web_connector/quickbooks.qwc.erb +12 -0
  31. data/config/routes.rb +16 -0
  32. data/db/migrate/01_create_effective_qb_sync.rb.erb +68 -0
  33. data/lib/effective_qb_sync/engine.rb +42 -0
  34. data/lib/effective_qb_sync/version.rb +3 -0
  35. data/lib/effective_qb_sync.rb +42 -0
  36. data/lib/generators/effective_qb_sync/install_generator.rb +42 -0
  37. data/lib/generators/templates/effective_qb_sync.rb +61 -0
  38. data/lib/generators/templates/effective_qb_sync_mailer_preview.rb +39 -0
  39. data/spec/dummy/README.rdoc +8 -0
  40. data/spec/dummy/Rakefile +6 -0
  41. data/spec/dummy/app/assets/javascripts/application.js +13 -0
  42. data/spec/dummy/app/assets/stylesheets/application.css +15 -0
  43. data/spec/dummy/app/controllers/application_controller.rb +5 -0
  44. data/spec/dummy/app/helpers/application_helper.rb +2 -0
  45. data/spec/dummy/app/models/product.rb +14 -0
  46. data/spec/dummy/app/models/product_with_float_price.rb +13 -0
  47. data/spec/dummy/app/models/user.rb +14 -0
  48. data/spec/dummy/app/views/layouts/application.html.erb +14 -0
  49. data/spec/dummy/bin/bundle +3 -0
  50. data/spec/dummy/bin/rails +4 -0
  51. data/spec/dummy/bin/rake +4 -0
  52. data/spec/dummy/config/application.rb +32 -0
  53. data/spec/dummy/config/boot.rb +5 -0
  54. data/spec/dummy/config/database.yml +25 -0
  55. data/spec/dummy/config/environment.rb +5 -0
  56. data/spec/dummy/config/environments/development.rb +37 -0
  57. data/spec/dummy/config/environments/production.rb +80 -0
  58. data/spec/dummy/config/environments/test.rb +36 -0
  59. data/spec/dummy/config/initializers/backtrace_silencers.rb +7 -0
  60. data/spec/dummy/config/initializers/cookies_serializer.rb +3 -0
  61. data/spec/dummy/config/initializers/devise.rb +254 -0
  62. data/spec/dummy/config/initializers/effective_addresses.rb +15 -0
  63. data/spec/dummy/config/initializers/effective_orders.rb +154 -0
  64. data/spec/dummy/config/initializers/effective_qb_sync.rb +41 -0
  65. data/spec/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  66. data/spec/dummy/config/initializers/inflections.rb +16 -0
  67. data/spec/dummy/config/initializers/mime_types.rb +4 -0
  68. data/spec/dummy/config/initializers/session_store.rb +3 -0
  69. data/spec/dummy/config/initializers/simple_form.rb +189 -0
  70. data/spec/dummy/config/initializers/wrap_parameters.rb +14 -0
  71. data/spec/dummy/config/locales/en.yml +23 -0
  72. data/spec/dummy/config/routes.rb +3 -0
  73. data/spec/dummy/config/secrets.yml +22 -0
  74. data/spec/dummy/config.ru +4 -0
  75. data/spec/dummy/db/schema.rb +208 -0
  76. data/spec/dummy/db/test.sqlite3 +0 -0
  77. data/spec/dummy/log/development.log +90 -0
  78. data/spec/dummy/log/test.log +1 -0
  79. data/spec/dummy/public/404.html +67 -0
  80. data/spec/dummy/public/422.html +67 -0
  81. data/spec/dummy/public/500.html +66 -0
  82. data/spec/dummy/public/favicon.ico +0 -0
  83. data/spec/fixtures/qbxml_response_error.xml +6 -0
  84. data/spec/fixtures/qbxml_response_success.xml +621 -0
  85. data/spec/models/acts_as_purchasable_spec.rb +131 -0
  86. data/spec/models/factories_spec.rb +32 -0
  87. data/spec/models/qb_machine_spec.rb +554 -0
  88. data/spec/models/qb_request_spec.rb +327 -0
  89. data/spec/models/qb_ticket_spec.rb +62 -0
  90. data/spec/spec_helper.rb +45 -0
  91. data/spec/support/factories.rb +97 -0
  92. metadata +397 -0
@@ -0,0 +1,3 @@
1
+ Rails.application.routes.draw do
2
+ devise_for :users
3
+ end
@@ -0,0 +1,22 @@
1
+ # Be sure to restart your server when you modify this file.
2
+
3
+ # Your secret key is used for verifying the integrity of signed cookies.
4
+ # If you change this key, all old signed cookies will become invalid!
5
+
6
+ # Make sure the secret is at least 30 characters and all random,
7
+ # no regular words or you'll be exposed to dictionary attacks.
8
+ # You can use `rake secret` to generate a secure secret key.
9
+
10
+ # Make sure the secrets in this file are kept private
11
+ # if you're sharing your code publicly.
12
+
13
+ development:
14
+ secret_key_base: 19ae140d6bd4164a8b1f37a052b1bf6ca83798d42339f0f7ae3d7303b3d0f6a3007327150783292086599a2dd43c56f75e805c3235a8763df32eeac6a59045d8
15
+
16
+ test:
17
+ secret_key_base: 72dcfceca73511a73eb4011013eb18f9af41567c1b924314eb4142b44c770dc6713196cfa8071d206b5066f57975dbe57df873389c033a9834fa42ae37083054
18
+
19
+ # Do not keep production secrets in the repository,
20
+ # instead read values from the environment.
21
+ production:
22
+ secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
@@ -0,0 +1,4 @@
1
+ # This file is used by Rack-based servers to start the application.
2
+
3
+ require ::File.expand_path('../config/environment', __FILE__)
4
+ run Rails.application
@@ -0,0 +1,208 @@
1
+ # encoding: UTF-8
2
+ # This file is auto-generated from the current state of the database. Instead
3
+ # of editing this file, please use the migrations feature of Active Record to
4
+ # incrementally modify your database, and then regenerate this schema definition.
5
+ #
6
+ # Note that this schema.rb definition is the authoritative source for your
7
+ # database schema. If you need to create the application database on another
8
+ # system, you should be using db:schema:load, not running all the migrations
9
+ # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
+ # you'll amass, the slower it'll run and the greater likelihood for issues).
11
+ #
12
+ # It's strongly recommended to check this file into your version control system.
13
+
14
+ ActiveRecord::Schema.define(:version => 5) do
15
+
16
+ create_table "qb_logs", force: :cascade do |t|
17
+ t.integer "qb_ticket_id"
18
+ t.text "message"
19
+ t.datetime "created_at"
20
+ t.datetime "updated_at"
21
+ end
22
+
23
+ add_index "qb_logs", ["qb_ticket_id"], name: "index_qb_logs_on_qb_ticket_id", using: :btree
24
+
25
+ create_table "qb_order_items", force: :cascade do |t|
26
+ t.integer "order_item_id"
27
+ t.string "name"
28
+ t.datetime "created_at"
29
+ t.datetime "updated_at"
30
+ end
31
+
32
+ add_index "qb_order_items", ["order_item_id"], name: "index_qb_order_items_on_order_item_id", using: :btree
33
+
34
+ create_table "qb_requests", force: :cascade do |t|
35
+ t.integer "order_id"
36
+ t.integer "qb_ticket_id"
37
+ t.string "state", default: "Processing"
38
+ t.text "error"
39
+ t.string "request_type"
40
+ t.text "request_qbxml"
41
+ t.text "response_qbxml"
42
+ t.datetime "request_sent_at"
43
+ t.datetime "response_received_at"
44
+ t.datetime "created_at"
45
+ t.datetime "updated_at"
46
+ end
47
+
48
+ add_index "qb_requests", ["order_id"], name: "index_qb_requests_on_order_id", using: :btree
49
+
50
+ create_table "qb_tickets", force: :cascade do |t|
51
+ t.integer "qb_request_id"
52
+ t.string "username"
53
+ t.text "hpc_response"
54
+ t.string "company_file_name"
55
+ t.string "country"
56
+ t.string "qbxml_major_version"
57
+ t.string "qbxml_minor_version"
58
+ t.string "state", default: "Ready"
59
+ t.integer "percent", default: 0
60
+ t.text "connection_error_hresult"
61
+ t.text "connection_error_message"
62
+ t.text "last_error"
63
+ t.datetime "created_at"
64
+ t.datetime "updated_at"
65
+ end
66
+
67
+ add_index "qb_tickets", ["qb_request_id"], name: "index_qb_tickets_on_qb_request_id", using: :btree
68
+
69
+ create_table "addresses", :force => true do |t|
70
+ t.string "addressable_type"
71
+ t.integer "addressable_id"
72
+ t.string "category", :limit => 64
73
+ t.string "full_name"
74
+ t.string "address1"
75
+ t.string "address2"
76
+ t.string "city"
77
+ t.string "state_code"
78
+ t.string "country_code"
79
+ t.string "postal_code"
80
+ t.datetime "updated_at"
81
+ t.datetime "created_at"
82
+ end
83
+
84
+ add_index "addresses", ["addressable_id"], :name => "index_addresses_on_addressable_id"
85
+ add_index "addresses", ["addressable_type", "addressable_id"], :name => "index_addresses_on_addressable_type_and_addressable_id"
86
+
87
+ create_table "cart_items", :force => true do |t|
88
+ t.integer "cart_id"
89
+ t.string "purchasable_type"
90
+ t.integer "purchasable_id"
91
+ t.integer "quantity"
92
+ t.datetime "created_at", :null => false
93
+ t.datetime "updated_at", :null => false
94
+ end
95
+
96
+ add_index "cart_items", ["cart_id"], :name => "index_cart_items_on_cart_id"
97
+ add_index "cart_items", ["purchasable_id"], :name => "index_cart_items_on_purchasable_id"
98
+ add_index "cart_items", ["purchasable_type", "purchasable_id"], :name => "index_cart_items_on_purchasable_type_and_purchasable_id"
99
+
100
+ create_table "carts", :force => true do |t|
101
+ t.integer "user_id"
102
+ t.datetime "created_at", :null => false
103
+ t.datetime "updated_at", :null => false
104
+ end
105
+
106
+ add_index "carts", ["user_id"], :name => "index_carts_on_user_id"
107
+
108
+ create_table "custom_products", force: :true do |t|
109
+ t.string "title"
110
+ t.integer "price", default: 0
111
+ t.boolean "tax_exempt"
112
+ t.datetime "created_at"
113
+ t.datetime "updated_at"
114
+ end
115
+
116
+ create_table "customers", force: true do |t|
117
+ t.integer "user_id"
118
+ t.string "stripe_customer_id"
119
+ t.string "stripe_active_card"
120
+ t.string "stripe_connect_access_token"
121
+ t.datetime "created_at"
122
+ t.datetime "updated_at"
123
+ end
124
+
125
+ create_table "order_items", :force => true do |t|
126
+ t.integer "order_id"
127
+ t.integer "seller_id"
128
+ t.string "purchasable_type"
129
+ t.integer "purchasable_id"
130
+ t.string "title"
131
+ t.integer "quantity"
132
+ t.integer "price", :default => 0
133
+ t.boolean "tax_exempt"
134
+ t.datetime "created_at", :null => false
135
+ t.datetime "updated_at", :null => false
136
+ end
137
+
138
+ add_index "order_items", ["order_id"], :name => "index_order_items_on_order_id"
139
+ add_index "order_items", ["purchasable_id"], :name => "index_order_items_on_purchasable_id"
140
+ add_index "order_items", ["purchasable_type", "purchasable_id"], :name => "index_order_items_on_purchasable_type_and_purchasable_id"
141
+
142
+ create_table "orders", :force => true do |t|
143
+ t.integer "user_id"
144
+ t.string "purchase_state"
145
+ t.datetime "purchased_at"
146
+ t.text "payment"
147
+ t.datetime "created_at", :null => false
148
+ t.datetime "updated_at", :null => false
149
+ t.text "note"
150
+ t.integer "total"
151
+ t.decimal "tax_rate", precision: 6, scale: 3
152
+ t.integer "subtotal"
153
+ t.integer "tax"
154
+ t.string "payment_provider"
155
+ t.string "payment_card"
156
+ end
157
+
158
+ add_index "orders", ["user_id"], :name => "index_orders_on_user_id"
159
+
160
+ create_table "products", :force => true do |t|
161
+ t.string "title"
162
+ t.integer "price", :default => 0
163
+ t.boolean "tax_exempt"
164
+ t.datetime "created_at", :null => false
165
+ t.datetime "updated_at", :null => false
166
+ end
167
+
168
+ create_table "product_with_float_prices", :force => true do |t|
169
+ t.string "title"
170
+ t.decimal "price", :default => 0
171
+ t.boolean "tax_exempt"
172
+ t.datetime "created_at", :null => false
173
+ t.datetime "updated_at", :null => false
174
+ end
175
+
176
+ create_table "subscriptions", force: true do |t|
177
+ t.integer "customer_id"
178
+ t.string "stripe_plan_id"
179
+ t.string "stripe_subscription_id"
180
+ t.string "stripe_coupon_id"
181
+ t.string "title"
182
+ t.integer "price", default: 0
183
+ t.datetime "created_at"
184
+ t.datetime "updated_at"
185
+ end
186
+
187
+ create_table "users", force: true do |t|
188
+ t.string "encrypted_password"
189
+ t.string "reset_password_token"
190
+ t.datetime "reset_password_sent_at"
191
+ t.datetime "remember_created_at"
192
+ t.datetime "confirmation_sent_at"
193
+ t.datetime "confirmed_at"
194
+ t.string "confirmation_token"
195
+ t.string "unconfirmed_email"
196
+ t.integer "sign_in_count", default: 0
197
+ t.datetime "current_sign_in_at"
198
+ t.datetime "last_sign_in_at"
199
+ t.string "current_sign_in_ip"
200
+ t.string "last_sign_in_ip"
201
+ t.string "email"
202
+ t.integer "roles_mask", default: 0
203
+ t.boolean "archived", default: false
204
+ t.datetime "updated_at"
205
+ t.datetime "created_at"
206
+ end
207
+
208
+ end
Binary file
@@ -0,0 +1,90 @@
1
+  (17.9ms) CREATE TABLE "qb_logs" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "qb_ticket_id" integer, "message" text, "created_at" datetime, "updated_at" datetime) 
2
+  (0.1ms) select sqlite_version(*)
3
+  (1.1ms) CREATE INDEX "index_qb_logs_on_qb_ticket_id" ON "qb_logs" ("qb_ticket_id")
4
+  (1.2ms) CREATE TABLE "qb_order_items" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_item_id" integer, "name" varchar, "created_at" datetime, "updated_at" datetime)
5
+  (1.1ms) CREATE INDEX "index_qb_order_items_on_order_item_id" ON "qb_order_items" ("order_item_id")
6
+  (1.0ms) CREATE TABLE "qb_requests" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "qb_ticket_id" integer, "state" varchar DEFAULT 'Processing', "error" text, "request_type" varchar, "request_qbxml" text, "response_qbxml" text, "request_sent_at" datetime, "response_received_at" datetime, "created_at" datetime, "updated_at" datetime)
7
+  (1.0ms) CREATE INDEX "index_qb_requests_on_order_id" ON "qb_requests" ("order_id")
8
+  (1.0ms) CREATE TABLE "qb_tickets" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "qb_request_id" integer, "username" varchar, "hpc_response" text, "company_file_name" varchar, "country" varchar, "qbxml_major_version" varchar, "qbxml_minor_version" varchar, "state" varchar DEFAULT 'Ready', "percent" integer DEFAULT 0, "connection_error_hresult" text, "connection_error_message" text, "last_error" text, "created_at" datetime, "updated_at" datetime)
9
+  (0.8ms) CREATE INDEX "index_qb_tickets_on_qb_request_id" ON "qb_tickets" ("qb_request_id")
10
+  (1.0ms) CREATE TABLE "addresses" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "addressable_type" varchar, "addressable_id" integer, "category" varchar(64), "full_name" varchar, "address1" varchar, "address2" varchar, "city" varchar, "state_code" varchar, "country_code" varchar, "postal_code" varchar, "updated_at" datetime, "created_at" datetime)
11
+  (0.9ms) CREATE INDEX "index_addresses_on_addressable_id" ON "addresses" ("addressable_id")
12
+  (0.1ms) SELECT sql
13
+ FROM sqlite_master
14
+ WHERE name='index_addresses_on_addressable_id' AND type='index'
15
+ UNION ALL
16
+ SELECT sql
17
+ FROM sqlite_temp_master
18
+ WHERE name='index_addresses_on_addressable_id' AND type='index'
19
+
20
+  (0.8ms) CREATE INDEX "index_addresses_on_addressable_type_and_addressable_id" ON "addresses" ("addressable_type", "addressable_id")
21
+  (0.9ms) CREATE TABLE "cart_items" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "cart_id" integer, "purchasable_type" varchar, "purchasable_id" integer, "quantity" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
22
+  (1.2ms) CREATE INDEX "index_cart_items_on_cart_id" ON "cart_items" ("cart_id")
23
+  (0.1ms) SELECT sql
24
+ FROM sqlite_master
25
+ WHERE name='index_cart_items_on_cart_id' AND type='index'
26
+ UNION ALL
27
+ SELECT sql
28
+ FROM sqlite_temp_master
29
+ WHERE name='index_cart_items_on_cart_id' AND type='index'
30
+
31
+  (1.1ms) CREATE INDEX "index_cart_items_on_purchasable_id" ON "cart_items" ("purchasable_id")
32
+  (0.1ms) SELECT sql
33
+ FROM sqlite_master
34
+ WHERE name='index_cart_items_on_purchasable_id' AND type='index'
35
+ UNION ALL
36
+ SELECT sql
37
+ FROM sqlite_temp_master
38
+ WHERE name='index_cart_items_on_purchasable_id' AND type='index'
39
+
40
+  (0.1ms)  SELECT sql
41
+ FROM sqlite_master
42
+ WHERE name='index_cart_items_on_cart_id' AND type='index'
43
+ UNION ALL
44
+ SELECT sql
45
+ FROM sqlite_temp_master
46
+ WHERE name='index_cart_items_on_cart_id' AND type='index'
47
+ 
48
+  (0.9ms) CREATE INDEX "index_cart_items_on_purchasable_type_and_purchasable_id" ON "cart_items" ("purchasable_type", "purchasable_id")
49
+  (1.0ms) CREATE TABLE "carts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
50
+  (0.9ms) CREATE INDEX "index_carts_on_user_id" ON "carts" ("user_id")
51
+  (0.8ms) CREATE TABLE "custom_products" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "price" integer DEFAULT 0, "tax_exempt" boolean, "created_at" datetime, "updated_at" datetime) 
52
+  (1.0ms) CREATE TABLE "customers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "stripe_customer_id" varchar, "stripe_active_card" varchar, "stripe_connect_access_token" varchar, "created_at" datetime, "updated_at" datetime)
53
+  (2.2ms) CREATE TABLE "order_items" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "seller_id" integer, "purchasable_type" varchar, "purchasable_id" integer, "title" varchar, "quantity" integer, "price" integer DEFAULT 0, "tax_exempt" boolean, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
54
+  (1.1ms) CREATE INDEX "index_order_items_on_order_id" ON "order_items" ("order_id")
55
+  (0.1ms)  SELECT sql
56
+ FROM sqlite_master
57
+ WHERE name='index_order_items_on_order_id' AND type='index'
58
+ UNION ALL
59
+ SELECT sql
60
+ FROM sqlite_temp_master
61
+ WHERE name='index_order_items_on_order_id' AND type='index'
62
+ 
63
+  (0.9ms) CREATE INDEX "index_order_items_on_purchasable_id" ON "order_items" ("purchasable_id")
64
+  (0.1ms)  SELECT sql
65
+ FROM sqlite_master
66
+ WHERE name='index_order_items_on_purchasable_id' AND type='index'
67
+ UNION ALL
68
+ SELECT sql
69
+ FROM sqlite_temp_master
70
+ WHERE name='index_order_items_on_purchasable_id' AND type='index'
71
+ 
72
+  (0.1ms) SELECT sql
73
+ FROM sqlite_master
74
+ WHERE name='index_order_items_on_order_id' AND type='index'
75
+ UNION ALL
76
+ SELECT sql
77
+ FROM sqlite_temp_master
78
+ WHERE name='index_order_items_on_order_id' AND type='index'
79
+
80
+  (1.0ms) CREATE INDEX "index_order_items_on_purchasable_type_and_purchasable_id" ON "order_items" ("purchasable_type", "purchasable_id")
81
+  (1.1ms) CREATE TABLE "orders" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "purchase_state" varchar, "purchased_at" datetime, "payment" text, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL, "note" text, "total" integer, "tax_rate" decimal(6,3), "subtotal" integer, "tax" integer, "payment_provider" varchar, "payment_card" varchar)
82
+  (1.8ms) CREATE INDEX "index_orders_on_user_id" ON "orders" ("user_id")
83
+  (0.8ms) CREATE TABLE "products" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "price" integer DEFAULT 0, "tax_exempt" boolean, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL)
84
+  (0.9ms) CREATE TABLE "product_with_float_prices" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "title" varchar, "price" decimal DEFAULT 0, "tax_exempt" boolean, "created_at" datetime NOT NULL, "updated_at" datetime NOT NULL) 
85
+  (1.0ms) CREATE TABLE "subscriptions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "customer_id" integer, "stripe_plan_id" varchar, "stripe_subscription_id" varchar, "stripe_coupon_id" varchar, "title" varchar, "price" integer DEFAULT 0, "created_at" datetime, "updated_at" datetime)
86
+  (1.2ms) CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "encrypted_password" varchar, "reset_password_token" varchar, "reset_password_sent_at" datetime, "remember_created_at" datetime, "confirmation_sent_at" datetime, "confirmed_at" datetime, "confirmation_token" varchar, "unconfirmed_email" varchar, "sign_in_count" integer DEFAULT 0, "current_sign_in_at" datetime, "last_sign_in_at" datetime, "current_sign_in_ip" varchar, "last_sign_in_ip" varchar, "email" varchar, "roles_mask" integer DEFAULT 0, "archived" boolean DEFAULT 'f', "updated_at" datetime, "created_at" datetime) 
87
+  (2.4ms) CREATE TABLE "schema_migrations" ("version" varchar NOT NULL)
88
+  (1.0ms) CREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")
89
+  (0.1ms) SELECT version FROM "schema_migrations"
90
+  (0.8ms) INSERT INTO "schema_migrations" (version) VALUES ('5')
@@ -0,0 +1 @@
1
+  (0.5ms) SELECT MAX("orders"."id") FROM "orders"
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The page you were looking for doesn't exist (404)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/404.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The page you were looking for doesn't exist.</h1>
62
+ <p>You may have mistyped the address or the page may have moved.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>
@@ -0,0 +1,67 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <title>The change you wanted was rejected (422)</title>
5
+ <meta name="viewport" content="width=device-width,initial-scale=1">
6
+ <style>
7
+ body {
8
+ background-color: #EFEFEF;
9
+ color: #2E2F30;
10
+ text-align: center;
11
+ font-family: arial, sans-serif;
12
+ margin: 0;
13
+ }
14
+
15
+ div.dialog {
16
+ width: 95%;
17
+ max-width: 33em;
18
+ margin: 4em auto 0;
19
+ }
20
+
21
+ div.dialog > div {
22
+ border: 1px solid #CCC;
23
+ border-right-color: #999;
24
+ border-left-color: #999;
25
+ border-bottom-color: #BBB;
26
+ border-top: #B00100 solid 4px;
27
+ border-top-left-radius: 9px;
28
+ border-top-right-radius: 9px;
29
+ background-color: white;
30
+ padding: 7px 12% 0;
31
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
32
+ }
33
+
34
+ h1 {
35
+ font-size: 100%;
36
+ color: #730E15;
37
+ line-height: 1.5em;
38
+ }
39
+
40
+ div.dialog > p {
41
+ margin: 0 0 1em;
42
+ padding: 1em;
43
+ background-color: #F7F7F7;
44
+ border: 1px solid #CCC;
45
+ border-right-color: #999;
46
+ border-left-color: #999;
47
+ border-bottom-color: #999;
48
+ border-bottom-left-radius: 4px;
49
+ border-bottom-right-radius: 4px;
50
+ border-top-color: #DADADA;
51
+ color: #666;
52
+ box-shadow: 0 3px 8px rgba(50, 50, 50, 0.17);
53
+ }
54
+ </style>
55
+ </head>
56
+
57
+ <body>
58
+ <!-- This file lives in public/422.html -->
59
+ <div class="dialog">
60
+ <div>
61
+ <h1>The change you wanted was rejected.</h1>
62
+ <p>Maybe you tried to change something you didn't have access to.</p>
63
+ </div>
64
+ <p>If you are the application owner check the logs for more information.</p>
65
+ </div>
66
+ </body>
67
+ </html>