+
-<% content_for :head do %>
- <% javascript_tag do %>
- $(document).ready(function() {
+<%= content_for :head do %>
+ <%= javascript_tag do %>
+ $(function() {
$('.answer').hide();
$('.question').click(function() {
var id = $(this).attr('id').split('_')[1];
diff --git a/autotest/discover.rb b/autotest/discover.rb
new file mode 100644
index 0000000..f421dc5
--- /dev/null
+++ b/autotest/discover.rb
@@ -0,0 +1,2 @@
+Autotest.add_discovery { "rails" }
+Autotest.add_discovery { "rspec2" }
diff --git a/config/locales/en-GB.yml b/config/locales/en-GB.yml
index c97212c..dfd6de3 100644
--- a/config/locales/en-GB.yml
+++ b/config/locales/en-GB.yml
@@ -1,7 +1,8 @@
---
en:
frequently_asked_questions: Frequently Asked Questions
- question_categoriess: Frequently Asked Questions
+ question_categories_admin: FAQ
+ question_categories: Frequently Asked Questions
new_question_category: New Category
questions: Questions
create_category: Create Category
diff --git a/config/locales/en-US.yml b/config/locales/en-US.yml
index 968bcfc..57c92e4 100644
--- a/config/locales/en-US.yml
+++ b/config/locales/en-US.yml
@@ -1,6 +1,7 @@
---
en:
frequently_asked_questions: Frequently Asked Questions
+ question_categories_admin: FAQ
question_categories: Frequently Asked Questions
new_question_category: New Category
questions: Questions
diff --git a/config/routes.rb b/config/routes.rb
index ca02de6..195ba7a 100644
--- a/config/routes.rb
+++ b/config/routes.rb
@@ -1,5 +1,7 @@
-map.resources :faq, :controller => 'faqs'
+Rails.application.routes.draw do
+ match :faq, :to => 'faqs#index', :as => 'faq'
-map.namespace :admin do |admin|
- admin.resources :question_categories
+ namespace :admin do
+ resources :question_categories
+ end
end
diff --git a/db/sample/question_categories.yml b/db/sample/question_categories.yml
deleted file mode 100644
index 48757b8..0000000
--- a/db/sample/question_categories.yml
+++ /dev/null
@@ -1,8 +0,0 @@
-sales:
- name: Sales
-
-shipping:
- name: Shipping
-
-billing:
- name: Billing
diff --git a/db/sample/questions.yml b/db/sample/questions.yml
deleted file mode 100644
index f10ade2..0000000
--- a/db/sample/questions.yml
+++ /dev/null
@@ -1,39 +0,0 @@
-question_1:
- question_category: sales
- question: How much does it cost?
- answer: Contact customer support
-
-question_2:
- question_category: sales
- question: Does it do X?
- answer: Duh
-
-question_3:
- question_category: sales
- question: Can I return it?
- answer: Maybe
-
-question_4:
- question_category: shipping
- question: How much does shipping cost?
- answer: Contact customer support
-
-question_5:
- question_category: shipping
- question: What if it breaks?
- answer: At your own risk
-
-question_6:
- question_category: billing
- question: Can I use VISA?
- answer: Yes!
-
-question_7:
- question_category: billing
- question: Can I use PayPal?
- answer: Yes!
-
-question_8:
- question_category: billing
- question: Can I use AMEX?
- answer: Yes!
diff --git a/faq_extension.rb b/faq_extension.rb
deleted file mode 100644
index 4c648e3..0000000
--- a/faq_extension.rb
+++ /dev/null
@@ -1,20 +0,0 @@
-# Uncomment this if you reference any of your controllers in activate
-# require_dependency 'application'
-
-class FaqExtension < Spree::Extension
- version "1.0"
- description "Describe your extension here"
- url "http://yourwebsite.com/spree_faq"
-
- # Please use spree_faq/config/routes.rb instead for extension routes.
-
- # def self.require_gems(config)
- # config.gem "gemname-goes-here", :version => '1.2.3'
- # end
-
- def activate
- end
-
-end
-
-
diff --git a/faq_hooks.rb b/faq_hooks.rb
deleted file mode 100644
index 4d6e877..0000000
--- a/faq_hooks.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-class FaqHooks < Spree::ThemeSupport::HookListener
- insert_after :admin_tabs do
- %(<%= tab(:question_categories) %>)
- end
-end
\ No newline at end of file
diff --git a/lib/generators/spree_faq/install_generator.rb b/lib/generators/spree_faq/install_generator.rb
new file mode 100644
index 0000000..8d47679
--- /dev/null
+++ b/lib/generators/spree_faq/install_generator.rb
@@ -0,0 +1,17 @@
+module SpreeFaq
+ module Generators
+ class InstallGenerator < Rails::Generators::Base
+ source_root File.expand_path("../../templates", __FILE__)
+
+ desc "Configures your Rails application for use with spree_faq"
+ def copy_migrations
+ directory "db"
+ end
+
+ def copy_public
+ directory "public"
+ end
+
+ end
+ end
+end
diff --git a/db/migrate/20090526213535_create_questions.rb b/lib/generators/templates/db/migrate/20090526213535_create_questions.rb
similarity index 100%
rename from db/migrate/20090526213535_create_questions.rb
rename to lib/generators/templates/db/migrate/20090526213535_create_questions.rb
diff --git a/db/migrate/20090526213550_create_question_categories.rb b/lib/generators/templates/db/migrate/20090526213550_create_question_categories.rb
similarity index 100%
rename from db/migrate/20090526213550_create_question_categories.rb
rename to lib/generators/templates/db/migrate/20090526213550_create_question_categories.rb
diff --git a/public/javascripts/jquery.scrollTo-min.js b/lib/generators/templates/public/javascripts/jquery.scrollTo-min.js
similarity index 100%
rename from public/javascripts/jquery.scrollTo-min.js
rename to lib/generators/templates/public/javascripts/jquery.scrollTo-min.js
diff --git a/public/stylesheets/spree_faq.css b/lib/generators/templates/public/stylesheets/spree_faq.css
similarity index 100%
rename from public/stylesheets/spree_faq.css
rename to lib/generators/templates/public/stylesheets/spree_faq.css
diff --git a/lib/spree_faq.rb b/lib/spree_faq.rb
new file mode 100644
index 0000000..2e308e0
--- /dev/null
+++ b/lib/spree_faq.rb
@@ -0,0 +1,3 @@
+require 'spree_core'
+require 'spree_faq_hooks'
+require 'spree_faq/engine'
diff --git a/lib/spree_faq/engine.rb b/lib/spree_faq/engine.rb
new file mode 100644
index 0000000..4d3eacd
--- /dev/null
+++ b/lib/spree_faq/engine.rb
@@ -0,0 +1,12 @@
+require "spree_faq"
+
+module SpreeFaq
+
+ class Engine < Rails::Engine
+
+ def self.activate
+ end
+
+ end
+
+end
diff --git a/lib/spree_faq_hooks.rb b/lib/spree_faq_hooks.rb
new file mode 100644
index 0000000..7c70ffc
--- /dev/null
+++ b/lib/spree_faq_hooks.rb
@@ -0,0 +1,6 @@
+class SpreeFaqHooks < Spree::ThemeSupport::HookListener
+ insert_after :admin_tabs do
+ %(<%= tab(:question_categories, :label => :question_categories_admin) %>)
+ end
+end
+
diff --git a/lib/tasks/faq_extension_tasks.rake b/lib/tasks/faq_extension_tasks.rake
deleted file mode 100644
index dc59a7d..0000000
--- a/lib/tasks/faq_extension_tasks.rake
+++ /dev/null
@@ -1,30 +0,0 @@
-if Spree::Version::Major.to_i == 0 && Spree::Version::Minor.to_i < 9 && Spree::Version::Tiny.to_i <= 9
- namespace :db do
- desc "Bootstrap your database for Spree."
- task :bootstrap => :environment do
- # load initial database fixtures (in db/sample/*.yml) into the current environment's database
- ActiveRecord::Base.establish_connection(RAILS_ENV.to_sym)
- Dir.glob(File.join(FaqExtension.root, "db", 'sample', '*.{yml,csv}')).each do |fixture_file|
- Fixtures.create_fixtures("#{FaqExtension.root}/db/sample", File.basename(fixture_file, '.*'))
- end
- end
- end
-end
-
-namespace :spree do
- namespace :extensions do
- namespace :faq do
- desc "Copies public assets of the Spree Faq to the instance public/ directory."
- task :update => :environment do
- is_svn_git_or_dir = proc {|path| path =~ /\.svn/ || path =~ /\.git/ || File.directory?(path) }
- Dir[FaqExtension.root + "/public/**/*"].reject(&is_svn_git_or_dir).each do |file|
- path = file.sub(FaqExtension.root, '')
- directory = File.dirname(path)
- puts "Copying #{path}..."
- mkdir_p RAILS_ROOT + directory
- cp file, RAILS_ROOT + path
- end
- end
- end
- end
-end
diff --git a/spec/controllers/faqs_controller_spec.rb b/spec/controllers/faqs_controller_spec.rb
index a93f84b..5b2f967 100644
--- a/spec/controllers/faqs_controller_spec.rb
+++ b/spec/controllers/faqs_controller_spec.rb
@@ -11,13 +11,4 @@
response.should be_success
end
- it "should response to show" do
- Question.should_receive(:find).with('1').and_return(:question)
-
- get :show, :id => 1
-
- assigns(:question).should eql(:question)
- response.should be_success
- end
-
end
diff --git a/spec/helpers/admin/question_categories_helper_spec.rb b/spec/helpers/admin/question_categories_helper_spec.rb
deleted file mode 100644
index a1d21d7..0000000
--- a/spec/helpers/admin/question_categories_helper_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.dirname(__FILE__) + '/../../spec_helper'
-
-describe Admin::QuestionCategoriesHelper do
-
-end
diff --git a/spec/helpers/faqs_helper_spec.rb b/spec/helpers/faqs_helper_spec.rb
deleted file mode 100644
index 1d2dec9..0000000
--- a/spec/helpers/faqs_helper_spec.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-require File.dirname(__FILE__) + '/../spec_helper'
-
-describe FaqsHelper do
-
-end
diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb
index ffde315..c82b72d 100644
--- a/spec/spec_helper.rb
+++ b/spec/spec_helper.rb
@@ -1,37 +1,28 @@
-unless defined? SPREE_ROOT
- ENV["RAILS_ENV"] = "test"
- case
- when ENV["SPREE_ENV_FILE"]
- require ENV["SPREE_ENV_FILE"]
- when File.dirname(__FILE__) =~ %r{vendor/SPREE/vendor/extensions}
- require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../../../")}/config/environment"
- else
- require "#{File.expand_path(File.dirname(__FILE__) + "/../../../../")}/config/environment"
- end
-end
-require "#{SPREE_ROOT}/spec/spec_helper"
+# This file is copied to ~/spec when you run 'ruby script/generate rspec'
+# from the project root directory.
+ENV["RAILS_ENV"] ||= 'test'
+require File.expand_path("../test_app/config/environment", __FILE__)
+require 'rspec/rails'
-if File.directory?(File.dirname(__FILE__) + "/scenarios")
- Scenario.load_paths.unshift File.dirname(__FILE__) + "/scenarios"
-end
-if File.directory?(File.dirname(__FILE__) + "/matchers")
- Dir[File.dirname(__FILE__) + "/matchers/*.rb"].each {|file| require file }
-end
+# Requires supporting files with custom matchers and macros, etc,
+# in ./support/ and its subdirectories.
+Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
-Spec::Runner.configure do |config|
- # config.use_transactional_fixtures = true
- # config.use_instantiated_fixtures = false
- # config.fixture_path = RAILS_ROOT + '/spec/fixtures'
-
- # You can declare fixtures for each behaviour like this:
- # describe "...." do
- # fixtures :table_a, :table_b
- #
- # Alternatively, if you prefer to declare them only once, you can
- # do so here, like so ...
+RSpec.configure do |config|
+ # == Mock Framework
#
- # config.global_fixtures = :table_a, :table_b
+ # If you prefer to use mocha, flexmock or RR, uncomment the appropriate line:
#
- # If you declare global fixtures, be aware that they will be declared
- # for all of your examples, even those that don't use them.
-end
\ No newline at end of file
+ # config.mock_with :mocha
+ # config.mock_with :flexmock
+ # config.mock_with :rr
+ config.mock_with :rspec
+
+ config.fixture_path = "#{::Rails.root}/spec/fixtures"
+
+ # If you're not using ActiveRecord, or you'd prefer not to run each of your
+ # examples within a transaction, comment the following line or assign false
+ # instead of true.
+ config.use_transactional_fixtures = true
+end
+
diff --git a/spec/test_app/Gemfile b/spec/test_app/Gemfile
new file mode 100644
index 0000000..87b0d0b
--- /dev/null
+++ b/spec/test_app/Gemfile
@@ -0,0 +1,19 @@
+source 'http://rubygems.org'
+
+gem 'rails', '~> 3.0.1'
+gem 'sqlite3-ruby', :require => 'sqlite3'
+
+group :test do
+ gem 'rspec-rails', '~> 2.1.0'
+ gem 'fabrication'
+end
+
+group :cucumber do
+ gem 'cucumber-rails', '~> 0.3.2'
+ gem 'database_cleaner', '~> 0.5.2'
+ gem 'capybara', '~> 0.3.9', :require => false
+end
+
+ gem 'spree_core', :path => '/home/josh/Playground/spree/core'
+ gem 'spree_auth', :path => '/home/josh/Playground/spree/auth'
+ gem 'spree_faq', :path => '../..'
diff --git a/spec/test_app/Gemfile.lock b/spec/test_app/Gemfile.lock
new file mode 100644
index 0000000..e99f2b7
--- /dev/null
+++ b/spec/test_app/Gemfile.lock
@@ -0,0 +1,188 @@
+PATH
+ remote: /home/josh/Playground/spree-faq
+ specs:
+ spree_faq (3.0.2)
+ spree_core (>= 0.30.1)
+
+PATH
+ remote: /home/josh/Playground/spree/auth
+ specs:
+ spree_auth (0.30.1)
+ authlogic (= 2.1.6)
+ cancan (>= 1.3.3)
+ spree_core (= 0.30.1)
+
+PATH
+ remote: /home/josh/Playground/spree/core
+ specs:
+ spree_core (0.30.1)
+ activemerchant (>= 1.7.1)
+ acts_as_list (>= 0.1.2)
+ faker (>= 0.3.1)
+ highline (>= 1.5.1)
+ jquery-rails (>= 0.2.2)
+ paperclip (>= 2.3.1.1)
+ rails (>= 3.0.1)
+ rd_awesome_nested_set (>= 1.4.4)
+ rd_resource_controller
+ rd_searchlogic (>= 3.0.0.rc3)
+ rd_unobtrusive_date_picker (>= 0.1.0)
+ state_machine (>= 0.9.4)
+ stringex (>= 1.0.3)
+ will_paginate (>= 3.0.pre)
+
+GEM
+ remote: http://rubygems.org/
+ specs:
+ abstract (1.0.0)
+ actionmailer (3.0.1)
+ actionpack (= 3.0.1)
+ mail (~> 2.2.5)
+ actionpack (3.0.1)
+ activemodel (= 3.0.1)
+ activesupport (= 3.0.1)
+ builder (~> 2.1.2)
+ erubis (~> 2.6.6)
+ i18n (~> 0.4.1)
+ rack (~> 1.2.1)
+ rack-mount (~> 0.6.12)
+ rack-test (~> 0.5.4)
+ tzinfo (~> 0.3.23)
+ activemerchant (1.9.0)
+ activesupport (>= 2.3.2)
+ braintree (>= 2.0.0)
+ builder (>= 2.0.0)
+ activemodel (3.0.1)
+ activesupport (= 3.0.1)
+ builder (~> 2.1.2)
+ i18n (~> 0.4.1)
+ activerecord (3.0.1)
+ activemodel (= 3.0.1)
+ activesupport (= 3.0.1)
+ arel (~> 1.0.0)
+ tzinfo (~> 0.3.23)
+ activeresource (3.0.1)
+ activemodel (= 3.0.1)
+ activesupport (= 3.0.1)
+ activesupport (3.0.1)
+ acts_as_list (0.1.2)
+ arel (1.0.1)
+ activesupport (~> 3.0.0)
+ authlogic (2.1.6)
+ activesupport
+ braintree (2.6.2)
+ builder
+ builder (2.1.2)
+ cancan (1.4.1)
+ capybara (0.3.9)
+ culerity (>= 0.2.4)
+ mime-types (>= 1.16)
+ nokogiri (>= 1.3.3)
+ rack (>= 1.0.0)
+ rack-test (>= 0.5.4)
+ selenium-webdriver (>= 0.0.3)
+ childprocess (0.1.4)
+ ffi (~> 0.6.3)
+ cucumber (0.9.4)
+ builder (~> 2.1.2)
+ diff-lcs (~> 1.1.2)
+ gherkin (~> 2.2.9)
+ json (~> 1.4.6)
+ term-ansicolor (~> 1.0.5)
+ cucumber-rails (0.3.2)
+ cucumber (>= 0.8.0)
+ culerity (0.2.12)
+ database_cleaner (0.5.2)
+ diff-lcs (1.1.2)
+ erubis (2.6.6)
+ abstract (>= 1.0.0)
+ fabrication (0.9.1)
+ faker (0.3.1)
+ ffi (0.6.3)
+ rake (>= 0.8.7)
+ gherkin (2.2.9)
+ json (~> 1.4.6)
+ term-ansicolor (~> 1.0.5)
+ highline (1.6.1)
+ i18n (0.4.2)
+ jquery-rails (0.2.5)
+ rails (~> 3.0)
+ thor (~> 0.14.4)
+ json (1.4.6)
+ json_pure (1.4.6)
+ mail (2.2.10)
+ activesupport (>= 2.3.6)
+ i18n (~> 0.4.1)
+ mime-types (~> 1.16)
+ treetop (~> 1.4.8)
+ mime-types (1.16)
+ nokogiri (1.4.4)
+ paperclip (2.3.5)
+ activerecord
+ activesupport
+ polyglot (0.3.1)
+ rack (1.2.1)
+ rack-mount (0.6.13)
+ rack (>= 1.0.0)
+ rack-test (0.5.6)
+ rack (>= 1.0)
+ rails (3.0.1)
+ actionmailer (= 3.0.1)
+ actionpack (= 3.0.1)
+ activerecord (= 3.0.1)
+ activeresource (= 3.0.1)
+ activesupport (= 3.0.1)
+ bundler (~> 1.0.0)
+ railties (= 3.0.1)
+ railties (3.0.1)
+ actionpack (= 3.0.1)
+ activesupport (= 3.0.1)
+ rake (>= 0.8.4)
+ thor (~> 0.14.0)
+ rake (0.8.7)
+ rd_awesome_nested_set (1.4.4)
+ activerecord (>= 1.1)
+ rd_resource_controller (1.0.0)
+ rd_searchlogic (3.0.0.rc4)
+ activerecord (>= 3.0.0)
+ rd_unobtrusive_date_picker (0.1.0)
+ rspec (2.1.0)
+ rspec-core (~> 2.1.0)
+ rspec-expectations (~> 2.1.0)
+ rspec-mocks (~> 2.1.0)
+ rspec-core (2.1.0)
+ rspec-expectations (2.1.0)
+ diff-lcs (~> 1.1.2)
+ rspec-mocks (2.1.0)
+ rspec-rails (2.1.0)
+ rspec (~> 2.1.0)
+ rubyzip (0.9.4)
+ selenium-webdriver (0.1.0)
+ childprocess (= 0.1.4)
+ ffi (~> 0.6.3)
+ json_pure
+ rubyzip
+ sqlite3-ruby (1.3.2)
+ state_machine (0.9.4)
+ stringex (1.2.0)
+ term-ansicolor (1.0.5)
+ thor (0.14.6)
+ treetop (1.4.9)
+ polyglot (>= 0.3.1)
+ tzinfo (0.3.23)
+ will_paginate (3.0.pre2)
+
+PLATFORMS
+ ruby
+
+DEPENDENCIES
+ capybara (~> 0.3.9)
+ cucumber-rails (~> 0.3.2)
+ database_cleaner (~> 0.5.2)
+ fabrication
+ rails (~> 3.0.1)
+ rspec-rails (~> 2.1.0)
+ spree_auth!
+ spree_core!
+ spree_faq!
+ sqlite3-ruby
diff --git a/spec/test_app/Rakefile b/spec/test_app/Rakefile
new file mode 100644
index 0000000..685f6bc
--- /dev/null
+++ b/spec/test_app/Rakefile
@@ -0,0 +1,7 @@
+# Add your own tasks in files placed in lib/tasks ending in .rake,
+# for example lib/tasks/capistrano.rake, and they will automatically be available to Rake.
+
+require File.expand_path('../config/application', __FILE__)
+require 'rake'
+
+TestApp::Application.load_tasks
diff --git a/spec/test_app/app/controllers/application_controller.rb b/spec/test_app/app/controllers/application_controller.rb
new file mode 100644
index 0000000..e8065d9
--- /dev/null
+++ b/spec/test_app/app/controllers/application_controller.rb
@@ -0,0 +1,3 @@
+class ApplicationController < ActionController::Base
+ protect_from_forgery
+end
diff --git a/spec/test_app/app/helpers/application_helper.rb b/spec/test_app/app/helpers/application_helper.rb
new file mode 100644
index 0000000..de6be79
--- /dev/null
+++ b/spec/test_app/app/helpers/application_helper.rb
@@ -0,0 +1,2 @@
+module ApplicationHelper
+end
diff --git a/spec/test_app/app/views/layouts/application.html.erb b/spec/test_app/app/views/layouts/application.html.erb
new file mode 100644
index 0000000..92e4534
--- /dev/null
+++ b/spec/test_app/app/views/layouts/application.html.erb
@@ -0,0 +1,14 @@
+
+
+
+
TestApp
+ <%= stylesheet_link_tag :all %>
+ <%= javascript_include_tag :defaults %>
+ <%= csrf_meta_tag %>
+
+
+
+<%= yield %>
+
+
+
diff --git a/spec/test_app/config.ru b/spec/test_app/config.ru
new file mode 100644
index 0000000..86a587d
--- /dev/null
+++ b/spec/test_app/config.ru
@@ -0,0 +1,4 @@
+# This file is used by Rack-based servers to start the application.
+
+require ::File.expand_path('../config/environment', __FILE__)
+run TestApp::Application
diff --git a/spec/test_app/config/application.rb b/spec/test_app/config/application.rb
new file mode 100644
index 0000000..a117d09
--- /dev/null
+++ b/spec/test_app/config/application.rb
@@ -0,0 +1,42 @@
+require File.expand_path('../boot', __FILE__)
+
+require 'rails/all'
+
+# If you have a Gemfile, require the gems listed there, including any gems
+# you've limited to :test, :development, or :production.
+Bundler.require(:default, Rails.env) if defined?(Bundler)
+
+module TestApp
+ class Application < Rails::Application
+ # Settings in config/environments/* take precedence over those specified here.
+ # Application configuration should go into files in config/initializers
+ # -- all .rb files in that directory are automatically loaded.
+
+ # Custom directories with classes and modules you want to be autoloadable.
+ # config.autoload_paths += %W(#{config.root}/extras)
+
+ # Only load the plugins named here, in the order given (default is alphabetical).
+ # :all can be used as a placeholder for all plugins not explicitly named.
+ # config.plugins = [ :exception_notification, :ssl_requirement, :all ]
+
+ # Activate observers that should always be running.
+ # config.active_record.observers = :cacher, :garbage_collector, :forum_observer
+
+ # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.
+ # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC.
+ # config.time_zone = 'Central Time (US & Canada)'
+
+ # The default locale is :en and all translations from config/locales/*.rb,yml are auto loaded.
+ # config.i18n.load_path += Dir[Rails.root.join('my', 'locales', '*.{rb,yml}').to_s]
+ # config.i18n.default_locale = :de
+
+ # JavaScript files you want as :defaults (application.js is always included).
+ config.action_view.javascript_expansions[:defaults] = %w()
+
+ # Configure the default encoding used in templates for Ruby 1.9.
+ config.encoding = "utf-8"
+
+ # Configure sensitive parameters which will be filtered from the log file.
+ config.filter_parameters += [:password]
+ end
+end
diff --git a/spec/test_app/config/boot.rb b/spec/test_app/config/boot.rb
new file mode 100644
index 0000000..ab6cb37
--- /dev/null
+++ b/spec/test_app/config/boot.rb
@@ -0,0 +1,13 @@
+require 'rubygems'
+
+# Set up gems listed in the Gemfile.
+gemfile = File.expand_path('../../Gemfile', __FILE__)
+begin
+ ENV['BUNDLE_GEMFILE'] = gemfile
+ require 'bundler'
+ Bundler.setup
+rescue Bundler::GemNotFound => e
+ STDERR.puts e.message
+ STDERR.puts "Try running `bundle install`."
+ exit!
+end if File.exist?(gemfile)
diff --git a/spec/test_app/config/database.yml b/spec/test_app/config/database.yml
new file mode 100644
index 0000000..4836b04
--- /dev/null
+++ b/spec/test_app/config/database.yml
@@ -0,0 +1,17 @@
+development:
+ adapter: sqlite3
+ database: db/cucumber.sqlite3
+ pool: 5
+ timeout: 5000
+
+test:
+ adapter: sqlite3
+ database: db/test.sqlite3
+ pool: 5
+ timeout: 5000
+
+cucumber:
+ adapter: sqlite3
+ database: db/cucumber.sqlite3
+ pool: 5
+ timeout: 5000
diff --git a/spec/test_app/config/environment.rb b/spec/test_app/config/environment.rb
new file mode 100644
index 0000000..f4cc1e4
--- /dev/null
+++ b/spec/test_app/config/environment.rb
@@ -0,0 +1,5 @@
+# Load the rails application
+require File.expand_path('../application', __FILE__)
+
+# Initialize the rails application
+TestApp::Application.initialize!
diff --git a/spec/test_app/config/environments/cucumber.rb b/spec/test_app/config/environments/cucumber.rb
new file mode 100644
index 0000000..132dc8d
--- /dev/null
+++ b/spec/test_app/config/environments/cucumber.rb
@@ -0,0 +1,38 @@
+TestApp::Application.configure do
+ # Settings specified here will take precedence over those in config/environment.rb
+
+ # The test environment is used exclusively to run your application's
+ # test suite. You never need to work with it otherwise. Remember that
+ # your test database is "scratch space" for the test suite and is wiped
+ # and recreated between test runs. Don't rely on the data there!
+ config.cache_classes = true
+
+ # Log error messages when you accidentally call methods on nil.
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Raise exceptions instead of rendering exception templates
+ config.action_dispatch.show_exceptions = false
+
+ # Disable request forgery protection in test environment
+ config.action_controller.allow_forgery_protection = false
+
+ # Tell Action Mailer not to deliver emails to the real world.
+ # The :test delivery method accumulates sent emails in the
+ # ActionMailer::Base.deliveries array.
+ config.action_mailer.delivery_method = :test
+
+ # Use SQL instead of Active Record's schema dumper when creating the test database.
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
+ # like if you have constraints or database-specific column types
+ # config.active_record.schema_format = :sql
+
+ # Print deprecation notices to the stderr
+ config.active_support.deprecation = :stderr
+
+ config.action_mailer.default_url_options = { :host => 'testapp.com' }
+
+end
diff --git a/spec/test_app/config/environments/development.rb b/spec/test_app/config/environments/development.rb
new file mode 100644
index 0000000..1967636
--- /dev/null
+++ b/spec/test_app/config/environments/development.rb
@@ -0,0 +1,26 @@
+TestApp::Application.configure do
+ # Settings specified here will take precedence over those in config/environment.rb
+
+ # In the development environment your application's code is reloaded on
+ # every request. This slows down response time but is perfect for development
+ # since you don't have to restart the webserver when you make code changes.
+ config.cache_classes = false
+
+ # Log error messages when you accidentally call methods on nil.
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_view.debug_rjs = true
+ config.action_controller.perform_caching = false
+
+ # Don't care if the mailer can't send
+ config.action_mailer.raise_delivery_errors = false
+
+ # Print deprecation notices to the Rails logger
+ config.active_support.deprecation = :log
+
+ # Only use best-standards-support built into browsers
+ config.action_dispatch.best_standards_support = :builtin
+end
+
diff --git a/spec/test_app/config/environments/production.rb b/spec/test_app/config/environments/production.rb
new file mode 100644
index 0000000..dde1633
--- /dev/null
+++ b/spec/test_app/config/environments/production.rb
@@ -0,0 +1,49 @@
+TestApp::Application.configure do
+ # Settings specified here will take precedence over those in config/environment.rb
+
+ # The production environment is meant for finished, "live" apps.
+ # Code is not reloaded between requests
+ config.cache_classes = true
+
+ # Full error reports are disabled and caching is turned on
+ config.consider_all_requests_local = false
+ config.action_controller.perform_caching = true
+
+ # Specifies the header that your server uses for sending files
+ config.action_dispatch.x_sendfile_header = "X-Sendfile"
+
+ # For nginx:
+ # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect'
+
+ # If you have no front-end server that supports something like X-Sendfile,
+ # just comment this out and Rails will serve the files
+
+ # See everything in the log (default is :info)
+ # config.log_level = :debug
+
+ # Use a different logger for distributed setups
+ # config.logger = SyslogLogger.new
+
+ # Use a different cache store in production
+ # config.cache_store = :mem_cache_store
+
+ # Disable Rails's static asset server
+ # In production, Apache or nginx will already do this
+ config.serve_static_assets = false
+
+ # Enable serving of images, stylesheets, and javascripts from an asset server
+ # config.action_controller.asset_host = "http://assets.example.com"
+
+ # Disable delivery errors, bad email addresses will be ignored
+ # config.action_mailer.raise_delivery_errors = false
+
+ # Enable threaded mode
+ # config.threadsafe!
+
+ # Enable locale fallbacks for I18n (makes lookups for any locale fall back to
+ # the I18n.default_locale when a translation can not be found)
+ config.i18n.fallbacks = true
+
+ # Send deprecation notices to registered listeners
+ config.active_support.deprecation = :notify
+end
diff --git a/spec/test_app/config/environments/test.rb b/spec/test_app/config/environments/test.rb
new file mode 100644
index 0000000..1dafdec
--- /dev/null
+++ b/spec/test_app/config/environments/test.rb
@@ -0,0 +1,62 @@
+TestApp::Application.configure do
+ # Settings specified here will take precedence over those in config/environment.rb
+
+ # The test environment is used exclusively to run your application's
+ # test suite. You never need to work with it otherwise. Remember that
+ # your test database is "scratch space" for the test suite and is wiped
+ # and recreated between test runs. Don't rely on the data there!
+ config.cache_classes = true
+
+ # Log error messages when you accidentally call methods on nil.
+ config.whiny_nils = true
+
+ # Show full error reports and disable caching
+ config.consider_all_requests_local = true
+ config.action_controller.perform_caching = false
+
+ # Raise exceptions instead of rendering exception templates
+ config.action_dispatch.show_exceptions = false
+
+ # Disable request forgery protection in test environment
+ config.action_controller.allow_forgery_protection = false
+
+ # Tell Action Mailer not to deliver emails to the real world.
+ # The :test delivery method accumulates sent emails in the
+ # ActionMailer::Base.deliveries array.
+ config.action_mailer.delivery_method = :test
+
+ # Use SQL instead of Active Record's schema dumper when creating the test database.
+ # This is necessary if your schema can't be completely dumped by the schema dumper,
+ # like if you have constraints or database-specific column types
+ # config.active_record.schema_format = :sql
+
+ # Print deprecation notices to the stderr
+ config.active_support.deprecation = :stderr
+end
+CART = "cart"
+ADDRESS = "address"
+DELIVERY = "delivery"
+PAYMENT = "payment"
+CONFIRM = "confirm"
+COMPLETE = "complete"
+CANCELED = "canceled"
+RETURNED = "returned"
+RETURN_AUTHORIZED = "awaiting_return"
+
+ORDER_STATES = [CART, ADDRESS, DELIVERY, PAYMENT, CONFIRM, COMPLETE, CANCELED, RETURNED, RETURN_AUTHORIZED]
+
+READY = "ready"
+SHIPPED = "shipped"
+PARTIAL = "partial"
+PENDING = "pending"
+BACKORDER = "backorder"
+
+SHIPMENT_STATES = [READY, SHIPPED, PARTIAL, PENDING, BACKORDER]
+
+PROCESSING = 'processing'
+FAILED = 'failed'
+COMPLETED = 'completed'
+VOID = 'void'
+CHECKOUT = 'checkout'
+
+PAYMENT_STATES = [CHECKOUT, PROCESSING, FAILED, COMPLETED, VOID, PENDING]
diff --git a/spec/test_app/config/initializers/backtrace_silencers.rb b/spec/test_app/config/initializers/backtrace_silencers.rb
new file mode 100644
index 0000000..59385cd
--- /dev/null
+++ b/spec/test_app/config/initializers/backtrace_silencers.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
+# Rails.backtrace_cleaner.add_silencer { |line| line =~ /my_noisy_library/ }
+
+# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code.
+# Rails.backtrace_cleaner.remove_silencers!
diff --git a/spec/test_app/config/initializers/inflections.rb b/spec/test_app/config/initializers/inflections.rb
new file mode 100644
index 0000000..9e8b013
--- /dev/null
+++ b/spec/test_app/config/initializers/inflections.rb
@@ -0,0 +1,10 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new inflection rules using the following format
+# (all these examples are active by default):
+# ActiveSupport::Inflector.inflections do |inflect|
+# inflect.plural /^(ox)$/i, '\1en'
+# inflect.singular /^(ox)en/i, '\1'
+# inflect.irregular 'person', 'people'
+# inflect.uncountable %w( fish sheep )
+# end
diff --git a/spec/test_app/config/initializers/mime_types.rb b/spec/test_app/config/initializers/mime_types.rb
new file mode 100644
index 0000000..72aca7e
--- /dev/null
+++ b/spec/test_app/config/initializers/mime_types.rb
@@ -0,0 +1,5 @@
+# Be sure to restart your server when you modify this file.
+
+# Add new mime types for use in respond_to blocks:
+# Mime::Type.register "text/richtext", :rtf
+# Mime::Type.register_alias "text/html", :iphone
diff --git a/spec/test_app/config/initializers/secret_token.rb b/spec/test_app/config/initializers/secret_token.rb
new file mode 100644
index 0000000..2acf5bb
--- /dev/null
+++ b/spec/test_app/config/initializers/secret_token.rb
@@ -0,0 +1,7 @@
+# Be sure to restart your server when you modify this file.
+
+# Your secret key for verifying the integrity of signed cookies.
+# If you change this key, all old signed cookies will become invalid!
+# Make sure the secret is at least 30 characters and all random,
+# no regular words or you'll be exposed to dictionary attacks.
+TestApp::Application.config.secret_token = '4e01fa67d2f72ba99174c1fd23e054d380ba6daf59ee71d977aad664c94946d430045bfcfbb28ae615240ac75cfe808340603b201c13a0321744b78df66d830f'
diff --git a/spec/test_app/config/initializers/session_store.rb b/spec/test_app/config/initializers/session_store.rb
new file mode 100644
index 0000000..5a9809f
--- /dev/null
+++ b/spec/test_app/config/initializers/session_store.rb
@@ -0,0 +1,8 @@
+# Be sure to restart your server when you modify this file.
+
+TestApp::Application.config.session_store :cookie_store, :key => '_test_app_session'
+
+# Use the database for sessions instead of the cookie-based default,
+# which shouldn't be used to store highly confidential information
+# (create the session table with "rake db:sessions:create")
+# TestApp::Application.config.session_store :active_record_store
diff --git a/spec/test_app/config/locales/en.yml b/spec/test_app/config/locales/en.yml
new file mode 100644
index 0000000..a747bfa
--- /dev/null
+++ b/spec/test_app/config/locales/en.yml
@@ -0,0 +1,5 @@
+# Sample localization file for English. Add more files in this directory for other locales.
+# See http://github.com/svenfuchs/rails-i18n/tree/master/rails%2Flocale for starting points.
+
+en:
+ hello: "Hello world"
diff --git a/spec/test_app/config/routes.rb b/spec/test_app/config/routes.rb
new file mode 100644
index 0000000..1c345fe
--- /dev/null
+++ b/spec/test_app/config/routes.rb
@@ -0,0 +1,58 @@
+TestApp::Application.routes.draw do
+ # The priority is based upon order of creation:
+ # first created -> highest priority.
+
+ # Sample of regular route:
+ # match 'products/:id' => 'catalog#view'
+ # Keep in mind you can assign values other than :controller and :action
+
+ # Sample of named route:
+ # match 'products/:id/purchase' => 'catalog#purchase', :as => :purchase
+ # This route can be invoked with purchase_url(:id => product.id)
+
+ # Sample resource route (maps HTTP verbs to controller actions automatically):
+ # resources :products
+
+ # Sample resource route with options:
+ # resources :products do
+ # member do
+ # get 'short'
+ # post 'toggle'
+ # end
+ #
+ # collection do
+ # get 'sold'
+ # end
+ # end
+
+ # Sample resource route with sub-resources:
+ # resources :products do
+ # resources :comments, :sales
+ # resource :seller
+ # end
+
+ # Sample resource route with more complex sub-resources
+ # resources :products do
+ # resources :comments
+ # resources :sales do
+ # get 'recent', :on => :collection
+ # end
+ # end
+
+ # Sample resource route within a namespace:
+ # namespace :admin do
+ # # Directs /admin/products/* to Admin::ProductsController
+ # # (app/controllers/admin/products_controller.rb)
+ # resources :products
+ # end
+
+ # You can have the root of your site routed with "root"
+ # just remember to delete public/index.html.
+ # root :to => "welcome#index"
+
+ # See how all your routes lay out with "rake routes"
+
+ # This is a legacy wild controller route that's not recommended for RESTful applications.
+ # Note: This route will make all actions in every controller accessible via GET requests.
+ # match ':controller(/:action(/:id(.:format)))'
+end
diff --git a/spec/test_app/db/cucumber.sqlite3 b/spec/test_app/db/cucumber.sqlite3
new file mode 100644
index 0000000..c05a88c
Binary files /dev/null and b/spec/test_app/db/cucumber.sqlite3 differ
diff --git a/spec/test_app/db/default/countries.yml b/spec/test_app/db/default/countries.yml
new file mode 100644
index 0000000..b74cd01
--- /dev/null
+++ b/spec/test_app/db/default/countries.yml
@@ -0,0 +1,1583 @@
+---
+countries_039:
+ name: Chad
+ iso3: TCD
+ iso: TD
+ iso_name: CHAD
+ id: "39"
+ numcode: "148"
+countries_065:
+ name: Faroe Islands
+ iso3: FRO
+ iso: FO
+ iso_name: FAROE ISLANDS
+ id: "65"
+ numcode: "234"
+countries_092:
+ name: India
+ iso3: IND
+ iso: IN
+ iso_name: INDIA
+ id: "92"
+ numcode: "356"
+countries_146:
+ name: Nicaragua
+ iso3: NIC
+ iso: NI
+ iso_name: NICARAGUA
+ id: "146"
+ numcode: "558"
+countries_172:
+ name: Saint Lucia
+ iso3: LCA
+ iso: LC
+ iso_name: SAINT LUCIA
+ id: "172"
+ numcode: "662"
+countries_066:
+ name: Fiji
+ iso3: FJI
+ iso: FJ
+ iso_name: FIJI
+ id: "66"
+ numcode: "242"
+countries_093:
+ name: Indonesia
+ iso3: IDN
+ iso: ID
+ iso_name: INDONESIA
+ id: "93"
+ numcode: "360"
+countries_147:
+ name: Niger
+ iso3: NER
+ iso: NE
+ iso_name: NIGER
+ id: "147"
+ numcode: "562"
+countries_173:
+ name: Saint Pierre and Miquelon
+ iso3: SPM
+ iso: PM
+ iso_name: SAINT PIERRE AND MIQUELON
+ id: "173"
+ numcode: "666"
+countries_067:
+ name: Finland
+ iso3: FIN
+ iso: FI
+ iso_name: FINLAND
+ id: "67"
+ numcode: "246"
+countries_148:
+ name: Nigeria
+ iso3: NGA
+ iso: NG
+ iso_name: NIGERIA
+ id: "148"
+ numcode: "566"
+countries_174:
+ name: Saint Vincent and the Grenadines
+ iso3: VCT
+ iso: VC
+ iso_name: SAINT VINCENT AND THE GRENADINES
+ id: "174"
+ numcode: "670"
+countries_068:
+ name: France
+ iso3: FRA
+ iso: FR
+ iso_name: FRANCE
+ id: "68"
+ numcode: "250"
+countries_094:
+ name: Iran, Islamic Republic of
+ iso3: IRN
+ iso: IR
+ iso_name: IRAN, ISLAMIC REPUBLIC OF
+ id: "94"
+ numcode: "364"
+countries_149:
+ name: Niue
+ iso3: NIU
+ iso: NU
+ iso_name: NIUE
+ id: "149"
+ numcode: "570"
+countries_175:
+ name: Samoa
+ iso3: WSM
+ iso: WS
+ iso_name: SAMOA
+ id: "175"
+ numcode: "882"
+countries_069:
+ name: French Guiana
+ iso3: GUF
+ iso: GF
+ iso_name: FRENCH GUIANA
+ id: "69"
+ numcode: "254"
+countries_095:
+ name: Iraq
+ iso3: IRQ
+ iso: IQ
+ iso_name: IRAQ
+ id: "95"
+ numcode: "368"
+countries_176:
+ name: San Marino
+ iso3: SMR
+ iso: SM
+ iso_name: SAN MARINO
+ id: "176"
+ numcode: "674"
+countries_096:
+ name: Ireland
+ iso3: IRL
+ iso: IE
+ iso_name: IRELAND
+ id: "96"
+ numcode: "372"
+countries_177:
+ name: Sao Tome and Principe
+ iso3: STP
+ iso: ST
+ iso_name: SAO TOME AND PRINCIPE
+ id: "177"
+ numcode: "678"
+countries_097:
+ name: Israel
+ iso3: ISR
+ iso: IL
+ iso_name: ISRAEL
+ id: "97"
+ numcode: "376"
+countries_178:
+ name: Saudi Arabia
+ iso3: SAU
+ iso: SA
+ iso_name: SAUDI ARABIA
+ id: "178"
+ numcode: "682"
+countries_098:
+ name: Italy
+ iso3: ITA
+ iso: IT
+ iso_name: ITALY
+ id: "98"
+ numcode: "380"
+countries_179:
+ name: Senegal
+ iso3: SEN
+ iso: SN
+ iso_name: SENEGAL
+ id: "179"
+ numcode: "686"
+countries_099:
+ name: Jamaica
+ iso3: JAM
+ iso: JM
+ iso_name: JAMAICA
+ id: "99"
+ numcode: "388"
+countries_100:
+ name: Japan
+ iso3: JPN
+ iso: JP
+ iso_name: JAPAN
+ id: "100"
+ numcode: "392"
+countries_101:
+ name: Jordan
+ iso3: JOR
+ iso: JO
+ iso_name: JORDAN
+ id: "101"
+ numcode: "400"
+countries_020:
+ name: Belgium
+ iso3: BEL
+ iso: BE
+ iso_name: BELGIUM
+ id: "20"
+ numcode: "56"
+countries_021:
+ name: Belize
+ iso3: BLZ
+ iso: BZ
+ iso_name: BELIZE
+ id: "21"
+ numcode: "84"
+countries_102:
+ name: Kazakhstan
+ iso3: KAZ
+ iso: KZ
+ iso_name: KAZAKHSTAN
+ id: "102"
+ numcode: "398"
+countries_210:
+ name: Uganda
+ iso3: UGA
+ iso: UG
+ iso_name: UGANDA
+ id: "210"
+ numcode: "800"
+countries_022:
+ name: Benin
+ iso3: BEN
+ iso: BJ
+ iso_name: BENIN
+ id: "22"
+ numcode: "204"
+countries_103:
+ name: Kenya
+ iso3: KEN
+ iso: KE
+ iso_name: KENYA
+ id: "103"
+ numcode: "404"
+countries_211:
+ name: Ukraine
+ iso3: UKR
+ iso: UA
+ iso_name: UKRAINE
+ id: "211"
+ numcode: "804"
+countries_023:
+ name: Bermuda
+ iso3: BMU
+ iso: BM
+ iso_name: BERMUDA
+ id: "23"
+ numcode: "60"
+countries_104:
+ name: Kiribati
+ iso3: KIR
+ iso: KI
+ iso_name: KIRIBATI
+ id: "104"
+ numcode: "296"
+countries_130:
+ name: Mexico
+ iso3: MEX
+ iso: MX
+ iso_name: MEXICO
+ id: "130"
+ numcode: "484"
+countries_212:
+ name: United Arab Emirates
+ iso3: ARE
+ iso: AE
+ iso_name: UNITED ARAB EMIRATES
+ id: "212"
+ numcode: "784"
+countries_024:
+ name: Bhutan
+ iso3: BTN
+ iso: BT
+ iso_name: BHUTAN
+ id: "24"
+ numcode: "64"
+countries_050:
+ name: Cuba
+ iso3: CUB
+ iso: CU
+ iso_name: CUBA
+ id: "50"
+ numcode: "192"
+countries_105:
+ name: North Korea
+ iso3: PRK
+ iso: KP
+ iso_name: KOREA, DEMOCRATIC PEOPLE'S REPUBLIC OF
+ id: "105"
+ numcode: "408"
+countries_131:
+ name: Micronesia, Federated States of
+ iso3: FSM
+ iso: FM
+ iso_name: MICRONESIA, FEDERATED STATES OF
+ id: "131"
+ numcode: "583"
+countries_213:
+ name: United Kingdom
+ iso3: GBR
+ iso: GB
+ iso_name: UNITED KINGDOM
+ id: "213"
+ numcode: "826"
+countries_025:
+ name: Bolivia
+ iso3: BOL
+ iso: BO
+ iso_name: BOLIVIA
+ id: "25"
+ numcode: "68"
+countries_051:
+ name: Cyprus
+ iso3: CYP
+ iso: CY
+ iso_name: CYPRUS
+ id: "51"
+ numcode: "196"
+countries_106:
+ name: South Korea
+ iso3: KOR
+ iso: KR
+ iso_name: KOREA, REPUBLIC OF
+ id: "106"
+ numcode: "410"
+countries_132:
+ name: Moldova, Republic of
+ iso3: MDA
+ iso: MD
+ iso_name: MOLDOVA, REPUBLIC OF
+ id: "132"
+ numcode: "498"
+countries_214:
+ name: United States
+ iso3: USA
+ iso: US
+ iso_name: UNITED STATES
+ id: "214"
+ numcode: "840"
+countries_026:
+ name: Bosnia and Herzegovina
+ iso3: BIH
+ iso: BA
+ iso_name: BOSNIA AND HERZEGOVINA
+ id: "26"
+ numcode: "70"
+countries_052:
+ name: Czech Republic
+ iso3: CZE
+ iso: CZ
+ iso_name: CZECH REPUBLIC
+ id: "52"
+ numcode: "203"
+countries_107:
+ name: Kuwait
+ iso3: KWT
+ iso: KW
+ iso_name: KUWAIT
+ id: "107"
+ numcode: "414"
+countries_133:
+ name: Monaco
+ iso3: MCO
+ iso: MC
+ iso_name: MONACO
+ id: "133"
+ numcode: "492"
+countries_215:
+ name: Uruguay
+ iso3: URY
+ iso: UY
+ iso_name: URUGUAY
+ id: "215"
+ numcode: "858"
+countries_027:
+ name: Botswana
+ iso3: BWA
+ iso: BW
+ iso_name: BOTSWANA
+ id: "27"
+ numcode: "72"
+countries_053:
+ name: Denmark
+ iso3: DNK
+ iso: DK
+ iso_name: DENMARK
+ id: "53"
+ numcode: "208"
+countries_080:
+ name: Guadeloupe
+ iso3: GLP
+ iso: GP
+ iso_name: GUADELOUPE
+ id: "80"
+ numcode: "312"
+countries_108:
+ name: Kyrgyzstan
+ iso3: KGZ
+ iso: KG
+ iso_name: KYRGYZSTAN
+ id: "108"
+ numcode: "417"
+countries_134:
+ name: Mongolia
+ iso3: MNG
+ iso: MN
+ iso_name: MONGOLIA
+ id: "134"
+ numcode: "496"
+countries_160:
+ name: Philippines
+ iso3: PHL
+ iso: PH
+ iso_name: PHILIPPINES
+ id: "160"
+ numcode: "608"
+countries_028:
+ name: Brazil
+ iso3: BRA
+ iso: BR
+ iso_name: BRAZIL
+ id: "28"
+ numcode: "76"
+countries_054:
+ name: Djibouti
+ iso3: DJI
+ iso: DJ
+ iso_name: DJIBOUTI
+ id: "54"
+ numcode: "262"
+countries_081:
+ name: Guam
+ iso3: GUM
+ iso: GU
+ iso_name: GUAM
+ id: "81"
+ numcode: "316"
+countries_109:
+ name: Lao People's Democratic Republic
+ iso3: LAO
+ iso: LA
+ iso_name: LAO PEOPLE'S DEMOCRATIC REPUBLIC
+ id: "109"
+ numcode: "418"
+countries_135:
+ name: Montserrat
+ iso3: MSR
+ iso: MS
+ iso_name: MONTSERRAT
+ id: "135"
+ numcode: "500"
+countries_161:
+ name: Pitcairn
+ iso3: PCN
+ iso: PN
+ iso_name: PITCAIRN
+ id: "161"
+ numcode: "612"
+countries_216:
+ name: Uzbekistan
+ iso3: UZB
+ iso: UZ
+ iso_name: UZBEKISTAN
+ id: "216"
+ numcode: "860"
+countries_029:
+ name: Brunei Darussalam
+ iso3: BRN
+ iso: BN
+ iso_name: BRUNEI DARUSSALAM
+ id: "29"
+ numcode: "96"
+countries_055:
+ name: Dominica
+ iso3: DMA
+ iso: DM
+ iso_name: DOMINICA
+ id: "55"
+ numcode: "212"
+countries_082:
+ name: Guatemala
+ iso3: GTM
+ iso: GT
+ iso_name: GUATEMALA
+ id: "82"
+ numcode: "320"
+countries_136:
+ name: Morocco
+ iso3: MAR
+ iso: MA
+ iso_name: MOROCCO
+ id: "136"
+ numcode: "504"
+countries_162:
+ name: Poland
+ iso3: POL
+ iso: PL
+ iso_name: POLAND
+ id: "162"
+ numcode: "616"
+countries_217:
+ name: Vanuatu
+ iso3: VUT
+ iso: VU
+ iso_name: VANUATU
+ id: "217"
+ numcode: "548"
+countries_056:
+ name: Dominican Republic
+ iso3: DOM
+ iso: DO
+ iso_name: DOMINICAN REPUBLIC
+ id: "56"
+ numcode: "214"
+countries_137:
+ name: Mozambique
+ iso3: MOZ
+ iso: MZ
+ iso_name: MOZAMBIQUE
+ id: "137"
+ numcode: "508"
+countries_163:
+ name: Portugal
+ iso3: PRT
+ iso: PT
+ iso_name: PORTUGAL
+ id: "163"
+ numcode: "620"
+countries_190:
+ name: Sudan
+ iso3: SDN
+ iso: SD
+ iso_name: SUDAN
+ id: "190"
+ numcode: "736"
+countries_218:
+ name: Venezuela
+ iso3: VEN
+ iso: VE
+ iso_name: VENEZUELA
+ id: "218"
+ numcode: "862"
+countries_057:
+ name: Ecuador
+ iso3: ECU
+ iso: EC
+ iso_name: ECUADOR
+ id: "57"
+ numcode: "218"
+countries_083:
+ name: Guinea
+ iso3: GIN
+ iso: GN
+ iso_name: GUINEA
+ id: "83"
+ numcode: "324"
+countries_138:
+ name: Myanmar
+ iso3: MMR
+ iso: MM
+ iso_name: MYANMAR
+ id: "138"
+ numcode: "104"
+countries_164:
+ name: Puerto Rico
+ iso3: PRI
+ iso: PR
+ iso_name: PUERTO RICO
+ id: "164"
+ numcode: "630"
+countries_191:
+ name: Suriname
+ iso3: SUR
+ iso: SR
+ iso_name: SURINAME
+ id: "191"
+ numcode: "740"
+countries_219:
+ name: Viet Nam
+ iso3: VNM
+ iso: VN
+ iso_name: VIET NAM
+ id: "219"
+ numcode: "704"
+countries_058:
+ name: Egypt
+ iso3: EGY
+ iso: EG
+ iso_name: EGYPT
+ id: "58"
+ numcode: "818"
+countries_084:
+ name: Guinea-Bissau
+ iso3: GNB
+ iso: GW
+ iso_name: GUINEA-BISSAU
+ id: "84"
+ numcode: "624"
+countries_139:
+ name: Namibia
+ iso3: NAM
+ iso: NA
+ iso_name: NAMIBIA
+ id: "139"
+ numcode: "516"
+countries_165:
+ name: Qatar
+ iso3: QAT
+ iso: QA
+ iso_name: QATAR
+ id: "165"
+ numcode: "634"
+countries_192:
+ name: Svalbard and Jan Mayen
+ iso3: SJM
+ iso: SJ
+ iso_name: SVALBARD AND JAN MAYEN
+ id: "192"
+ numcode: "744"
+countries_059:
+ name: El Salvador
+ iso3: SLV
+ iso: SV
+ iso_name: EL SALVADOR
+ id: "59"
+ numcode: "222"
+countries_085:
+ name: Guyana
+ iso3: GUY
+ iso: GY
+ iso_name: GUYANA
+ id: "85"
+ numcode: "328"
+countries_166:
+ name: Reunion
+ iso3: REU
+ iso: RE
+ iso_name: REUNION
+ id: "166"
+ numcode: "638"
+countries_086:
+ name: Haiti
+ iso3: HTI
+ iso: HT
+ iso_name: HAITI
+ id: "86"
+ numcode: "332"
+countries_167:
+ name: Romania
+ iso3: ROM
+ iso: RO
+ iso_name: ROMANIA
+ id: "167"
+ numcode: "642"
+countries_193:
+ name: Swaziland
+ iso3: SWZ
+ iso: SZ
+ iso_name: SWAZILAND
+ id: "193"
+ numcode: "748"
+countries_087:
+ name: Holy See (Vatican City State)
+ iso3: VAT
+ iso: VA
+ iso_name: HOLY SEE (VATICAN CITY STATE)
+ id: "87"
+ numcode: "336"
+countries_168:
+ name: Russian Federation
+ iso3: RUS
+ iso: RU
+ iso_name: RUSSIAN FEDERATION
+ id: "168"
+ numcode: "643"
+countries_194:
+ name: Sweden
+ iso3: SWE
+ iso: SE
+ iso_name: SWEDEN
+ id: "194"
+ numcode: "752"
+countries_088:
+ name: Honduras
+ iso3: HND
+ iso: HN
+ iso_name: HONDURAS
+ id: "88"
+ numcode: "340"
+countries_169:
+ name: Rwanda
+ iso3: RWA
+ iso: RW
+ iso_name: RWANDA
+ id: "169"
+ numcode: "646"
+countries_195:
+ name: Switzerland
+ iso3: CHE
+ iso: CH
+ iso_name: SWITZERLAND
+ id: "195"
+ numcode: "756"
+countries_089:
+ name: Hong Kong
+ iso3: HKG
+ iso: HK
+ iso_name: HONG KONG
+ id: "89"
+ numcode: "344"
+countries_196:
+ name: Syrian Arab Republic
+ iso3: SYR
+ iso: SY
+ iso_name: SYRIAN ARAB REPUBLIC
+ id: "196"
+ numcode: "760"
+countries_197:
+ name: Taiwan
+ iso3: TWN
+ iso: TW
+ iso_name: TAIWAN, PROVINCE OF CHINA
+ id: "197"
+ numcode: "158"
+countries_198:
+ name: Tajikistan
+ iso3: TJK
+ iso: TJ
+ iso_name: TAJIKISTAN
+ id: "198"
+ numcode: "762"
+countries_199:
+ name: Tanzania, United Republic of
+ iso3: TZA
+ iso: TZ
+ iso_name: TANZANIA, UNITED REPUBLIC OF
+ id: "199"
+ numcode: "834"
+countries_010:
+ name: Armenia
+ iso3: ARM
+ iso: AM
+ iso_name: ARMENIA
+ id: "10"
+ numcode: "51"
+countries_011:
+ name: Aruba
+ iso3: ABW
+ iso: AW
+ iso_name: ARUBA
+ id: "11"
+ numcode: "533"
+countries_012:
+ name: Australia
+ iso3: AUS
+ iso: AU
+ iso_name: AUSTRALIA
+ id: "12"
+ numcode: "36"
+countries_200:
+ name: Thailand
+ iso3: THA
+ iso: TH
+ iso_name: THAILAND
+ id: "200"
+ numcode: "764"
+countries_013:
+ name: Austria
+ iso3: AUT
+ iso: AT
+ iso_name: AUSTRIA
+ id: "13"
+ numcode: "40"
+countries_120:
+ name: Madagascar
+ iso3: MDG
+ iso: MG
+ iso_name: MADAGASCAR
+ id: "120"
+ numcode: "450"
+countries_201:
+ name: Togo
+ iso3: TGO
+ iso: TG
+ iso_name: TOGO
+ id: "201"
+ numcode: "768"
+countries_014:
+ name: Azerbaijan
+ iso3: AZE
+ iso: AZ
+ iso_name: AZERBAIJAN
+ id: "14"
+ numcode: "31"
+countries_040:
+ name: Chile
+ iso3: CHL
+ iso: CL
+ iso_name: CHILE
+ id: "40"
+ numcode: "152"
+countries_121:
+ name: Malawi
+ iso3: MWI
+ iso: MW
+ iso_name: MALAWI
+ id: "121"
+ numcode: "454"
+countries_202:
+ name: Tokelau
+ iso3: TKL
+ iso: TK
+ iso_name: TOKELAU
+ id: "202"
+ numcode: "772"
+countries_015:
+ name: Bahamas
+ iso3: BHS
+ iso: BS
+ iso_name: BAHAMAS
+ id: "15"
+ numcode: "44"
+countries_041:
+ name: China
+ iso3: CHN
+ iso: CN
+ iso_name: CHINA
+ id: "41"
+ numcode: "156"
+countries_122:
+ name: Malaysia
+ iso3: MYS
+ iso: MY
+ iso_name: MALAYSIA
+ id: "122"
+ numcode: "458"
+countries_203:
+ name: Tonga
+ iso3: TON
+ iso: TO
+ iso_name: TONGA
+ id: "203"
+ numcode: "776"
+countries_016:
+ name: Bahrain
+ iso3: BHR
+ iso: BH
+ iso_name: BAHRAIN
+ id: "16"
+ numcode: "48"
+countries_042:
+ name: Colombia
+ iso3: COL
+ iso: CO
+ iso_name: COLOMBIA
+ id: "42"
+ numcode: "170"
+countries_123:
+ name: Maldives
+ iso3: MDV
+ iso: MV
+ iso_name: MALDIVES
+ id: "123"
+ numcode: "462"
+countries_204:
+ name: Trinidad and Tobago
+ iso3: TTO
+ iso: TT
+ iso_name: TRINIDAD AND TOBAGO
+ id: "204"
+ numcode: "780"
+countries_017:
+ name: Bangladesh
+ iso3: BGD
+ iso: BD
+ iso_name: BANGLADESH
+ id: "17"
+ numcode: "50"
+countries_043:
+ name: Comoros
+ iso3: COM
+ iso: KM
+ iso_name: COMOROS
+ id: "43"
+ numcode: "174"
+countries_070:
+ name: French Polynesia
+ iso3: PYF
+ iso: PF
+ iso_name: FRENCH POLYNESIA
+ id: "70"
+ numcode: "258"
+countries_124:
+ name: Mali
+ iso3: MLI
+ iso: ML
+ iso_name: MALI
+ id: "124"
+ numcode: "466"
+countries_150:
+ name: Norfolk Island
+ iso3: NFK
+ iso: NF
+ iso_name: NORFOLK ISLAND
+ id: "150"
+ numcode: "574"
+countries_205:
+ name: Tunisia
+ iso3: TUN
+ iso: TN
+ iso_name: TUNISIA
+ id: "205"
+ numcode: "788"
+countries_018:
+ name: Barbados
+ iso3: BRB
+ iso: BB
+ iso_name: BARBADOS
+ id: "18"
+ numcode: "52"
+countries_044:
+ name: Congo
+ iso3: COG
+ iso: CG
+ iso_name: CONGO
+ id: "44"
+ numcode: "178"
+countries_071:
+ name: Gabon
+ iso3: GAB
+ iso: GA
+ iso_name: GABON
+ id: "71"
+ numcode: "266"
+countries_125:
+ name: Malta
+ iso3: MLT
+ iso: MT
+ iso_name: MALTA
+ id: "125"
+ numcode: "470"
+countries_151:
+ name: Northern Mariana Islands
+ iso3: MNP
+ iso: MP
+ iso_name: NORTHERN MARIANA ISLANDS
+ id: "151"
+ numcode: "580"
+countries_206:
+ name: Turkey
+ iso3: TUR
+ iso: TR
+ iso_name: TURKEY
+ id: "206"
+ numcode: "792"
+countries_045:
+ name: Congo, the Democratic Republic of the
+ iso3: COD
+ iso: CD
+ iso_name: CONGO, THE DEMOCRATIC REPUBLIC OF THE
+ id: "45"
+ numcode: "180"
+countries_126:
+ name: Marshall Islands
+ iso3: MHL
+ iso: MH
+ iso_name: MARSHALL ISLANDS
+ id: "126"
+ numcode: "584"
+countries_152:
+ name: Norway
+ iso3: NOR
+ iso: "NO"
+ iso_name: NORWAY
+ id: "152"
+ numcode: "578"
+countries_207:
+ name: Turkmenistan
+ iso3: TKM
+ iso: TM
+ iso_name: TURKMENISTAN
+ id: "207"
+ numcode: "795"
+countries_019:
+ name: Belarus
+ iso3: BLR
+ iso: BY
+ iso_name: BELARUS
+ id: "19"
+ numcode: "112"
+countries_046:
+ name: Cook Islands
+ iso3: COK
+ iso: CK
+ iso_name: COOK ISLANDS
+ id: "46"
+ numcode: "184"
+countries_072:
+ name: Gambia
+ iso3: GMB
+ iso: GM
+ iso_name: GAMBIA
+ id: "72"
+ numcode: "270"
+countries_127:
+ name: Martinique
+ iso3: MTQ
+ iso: MQ
+ iso_name: MARTINIQUE
+ id: "127"
+ numcode: "474"
+countries_153:
+ name: Oman
+ iso3: OMN
+ iso: OM
+ iso_name: OMAN
+ id: "153"
+ numcode: "512"
+countries_180:
+ name: Seychelles
+ iso3: SYC
+ iso: SC
+ iso_name: SEYCHELLES
+ id: "180"
+ numcode: "690"
+countries_208:
+ name: Turks and Caicos Islands
+ iso3: TCA
+ iso: TC
+ iso_name: TURKS AND CAICOS ISLANDS
+ id: "208"
+ numcode: "796"
+countries_073:
+ name: Georgia
+ iso3: GEO
+ iso: GE
+ iso_name: GEORGIA
+ id: "73"
+ numcode: "268"
+countries_128:
+ name: Mauritania
+ iso3: MRT
+ iso: MR
+ iso_name: MAURITANIA
+ id: "128"
+ numcode: "478"
+countries_154:
+ name: Pakistan
+ iso3: PAK
+ iso: PK
+ iso_name: PAKISTAN
+ id: "154"
+ numcode: "586"
+countries_181:
+ name: Sierra Leone
+ iso3: SLE
+ iso: SL
+ iso_name: SIERRA LEONE
+ id: "181"
+ numcode: "694"
+countries_209:
+ name: Tuvalu
+ iso3: TUV
+ iso: TV
+ iso_name: TUVALU
+ id: "209"
+ numcode: "798"
+countries_047:
+ name: Costa Rica
+ iso3: CRI
+ iso: CR
+ iso_name: COSTA RICA
+ id: "47"
+ numcode: "188"
+countries_074:
+ name: Germany
+ iso3: DEU
+ iso: DE
+ iso_name: GERMANY
+ id: "74"
+ numcode: "276"
+countries_129:
+ name: Mauritius
+ iso3: MUS
+ iso: MU
+ iso_name: MAURITIUS
+ id: "129"
+ numcode: "480"
+countries_155:
+ name: Palau
+ iso3: PLW
+ iso: PW
+ iso_name: PALAU
+ id: "155"
+ numcode: "585"
+countries_048:
+ name: Cote D'Ivoire
+ iso3: CIV
+ iso: CI
+ iso_name: COTE D'IVOIRE
+ id: "48"
+ numcode: "384"
+countries_156:
+ name: Panama
+ iso3: PAN
+ iso: PA
+ iso_name: PANAMA
+ id: "156"
+ numcode: "591"
+countries_182:
+ name: Singapore
+ iso3: SGP
+ iso: SG
+ iso_name: SINGAPORE
+ id: "182"
+ numcode: "702"
+countries_049:
+ name: Croatia
+ iso3: HRV
+ iso: HR
+ iso_name: CROATIA
+ id: "49"
+ numcode: "191"
+countries_075:
+ name: Ghana
+ iso3: GHA
+ iso: GH
+ iso_name: GHANA
+ id: "75"
+ numcode: "288"
+countries_157:
+ name: Papua New Guinea
+ iso3: PNG
+ iso: PG
+ iso_name: PAPUA NEW GUINEA
+ id: "157"
+ numcode: "598"
+countries_183:
+ name: Slovakia
+ iso3: SVK
+ iso: SK
+ iso_name: SLOVAKIA
+ id: "183"
+ numcode: "703"
+countries_076:
+ name: Gibraltar
+ iso3: GIB
+ iso: GI
+ iso_name: GIBRALTAR
+ id: "76"
+ numcode: "292"
+countries_158:
+ name: Paraguay
+ iso3: PRY
+ iso: PY
+ iso_name: PARAGUAY
+ id: "158"
+ numcode: "600"
+countries_184:
+ name: Slovenia
+ iso3: SVN
+ iso: SI
+ iso_name: SLOVENIA
+ id: "184"
+ numcode: "705"
+countries_077:
+ name: Greece
+ iso3: GRC
+ iso: GR
+ iso_name: GREECE
+ id: "77"
+ numcode: "300"
+countries_159:
+ name: Peru
+ iso3: PER
+ iso: PE
+ iso_name: PERU
+ id: "159"
+ numcode: "604"
+countries_185:
+ name: Solomon Islands
+ iso3: SLB
+ iso: SB
+ iso_name: SOLOMON ISLANDS
+ id: "185"
+ numcode: "90"
+countries_078:
+ name: Greenland
+ iso3: GRL
+ iso: GL
+ iso_name: GREENLAND
+ id: "78"
+ numcode: "304"
+countries_186:
+ name: Somalia
+ iso3: SOM
+ iso: SO
+ iso_name: SOMALIA
+ id: "186"
+ numcode: "706"
+countries_079:
+ name: Grenada
+ iso3: GRD
+ iso: GD
+ iso_name: GRENADA
+ id: "79"
+ numcode: "308"
+countries_187:
+ name: South Africa
+ iso3: ZAF
+ iso: ZA
+ iso_name: SOUTH AFRICA
+ id: "187"
+ numcode: "710"
+countries_188:
+ name: Spain
+ iso3: ESP
+ iso: ES
+ iso_name: SPAIN
+ id: "188"
+ numcode: "724"
+countries_189:
+ name: Sri Lanka
+ iso3: LKA
+ iso: LK
+ iso_name: SRI LANKA
+ id: "189"
+ numcode: "144"
+countries_001:
+ name: Afghanistan
+ iso3: AFG
+ iso: AF
+ iso_name: AFGHANISTAN
+ id: "1"
+ numcode: "4"
+countries_002:
+ name: Albania
+ iso3: ALB
+ iso: AL
+ iso_name: ALBANIA
+ id: "2"
+ numcode: "8"
+countries_003:
+ name: Algeria
+ iso3: DZA
+ iso: DZ
+ iso_name: ALGERIA
+ id: "3"
+ numcode: "12"
+countries_110:
+ name: Latvia
+ iso3: LVA
+ iso: LV
+ iso_name: LATVIA
+ id: "110"
+ numcode: "428"
+countries_004:
+ name: American Samoa
+ iso3: ASM
+ iso: AS
+ iso_name: AMERICAN SAMOA
+ id: "4"
+ numcode: "16"
+countries_030:
+ name: Bulgaria
+ iso3: BGR
+ iso: BG
+ iso_name: BULGARIA
+ id: "30"
+ numcode: "100"
+countries_111:
+ name: Lebanon
+ iso3: LBN
+ iso: LB
+ iso_name: LEBANON
+ id: "111"
+ numcode: "422"
+countries_005:
+ name: Andorra
+ iso3: AND
+ iso: AD
+ iso_name: ANDORRA
+ id: "5"
+ numcode: "20"
+countries_031:
+ name: Burkina Faso
+ iso3: BFA
+ iso: BF
+ iso_name: BURKINA FASO
+ id: "31"
+ numcode: "854"
+countries_112:
+ name: Lesotho
+ iso3: LSO
+ iso: LS
+ iso_name: LESOTHO
+ id: "112"
+ numcode: "426"
+countries_006:
+ name: Angola
+ iso3: AGO
+ iso: AO
+ iso_name: ANGOLA
+ id: "6"
+ numcode: "24"
+countries_032:
+ name: Burundi
+ iso3: BDI
+ iso: BI
+ iso_name: BURUNDI
+ id: "32"
+ numcode: "108"
+countries_113:
+ name: Liberia
+ iso3: LBR
+ iso: LR
+ iso_name: LIBERIA
+ id: "113"
+ numcode: "430"
+countries_220:
+ name: Virgin Islands, British
+ iso3: VGB
+ iso: VG
+ iso_name: VIRGIN ISLANDS, BRITISH
+ id: "220"
+ numcode: "92"
+countries_007:
+ name: Anguilla
+ iso3: AIA
+ iso: AI
+ iso_name: ANGUILLA
+ id: "7"
+ numcode: "660"
+countries_033:
+ name: Cambodia
+ iso3: KHM
+ iso: KH
+ iso_name: CAMBODIA
+ id: "33"
+ numcode: "116"
+countries_060:
+ name: Equatorial Guinea
+ iso3: GNQ
+ iso: GQ
+ iso_name: EQUATORIAL GUINEA
+ id: "60"
+ numcode: "226"
+countries_114:
+ name: Libyan Arab Jamahiriya
+ iso3: LBY
+ iso: LY
+ iso_name: LIBYAN ARAB JAMAHIRIYA
+ id: "114"
+ numcode: "434"
+countries_140:
+ name: Nauru
+ iso3: NRU
+ iso: NR
+ iso_name: NAURU
+ id: "140"
+ numcode: "520"
+countries_221:
+ name: Virgin Islands, U.S.
+ iso3: VIR
+ iso: VI
+ iso_name: VIRGIN ISLANDS, U.S.
+ id: "221"
+ numcode: "850"
+countries_008:
+ name: Antigua and Barbuda
+ iso3: ATG
+ iso: AG
+ iso_name: ANTIGUA AND BARBUDA
+ id: "8"
+ numcode: "28"
+countries_034:
+ name: Cameroon
+ iso3: CMR
+ iso: CM
+ iso_name: CAMEROON
+ id: "34"
+ numcode: "120"
+countries_115:
+ name: Liechtenstein
+ iso3: LIE
+ iso: LI
+ iso_name: LIECHTENSTEIN
+ id: "115"
+ numcode: "438"
+countries_141:
+ name: Nepal
+ iso3: NPL
+ iso: NP
+ iso_name: NEPAL
+ id: "141"
+ numcode: "524"
+countries_222:
+ name: Wallis and Futuna
+ iso3: WLF
+ iso: WF
+ iso_name: WALLIS AND FUTUNA
+ id: "222"
+ numcode: "876"
+countries_223:
+ name: Western Sahara
+ iso3: ESH
+ iso: EH
+ iso_name: WESTERN SAHARA
+ id: "223"
+ numcode: "732"
+countries_009:
+ name: Argentina
+ iso3: ARG
+ iso: AR
+ iso_name: ARGENTINA
+ id: "9"
+ numcode: "32"
+countries_035:
+ name: Canada
+ iso3: CAN
+ iso: CA
+ iso_name: CANADA
+ id: "35"
+ numcode: "124"
+countries_061:
+ name: Eritrea
+ iso3: ERI
+ iso: ER
+ iso_name: ERITREA
+ id: "61"
+ numcode: "232"
+countries_116:
+ name: Lithuania
+ iso3: LTU
+ iso: LT
+ iso_name: LITHUANIA
+ id: "116"
+ numcode: "440"
+countries_142:
+ name: Netherlands
+ iso3: NLD
+ iso: NL
+ iso_name: NETHERLANDS
+ id: "142"
+ numcode: "528"
+countries_224:
+ name: Yemen
+ iso3: YEM
+ iso: YE
+ iso_name: YEMEN
+ id: "224"
+ numcode: "887"
+countries_036:
+ name: Cape Verde
+ iso3: CPV
+ iso: CV
+ iso_name: CAPE VERDE
+ id: "36"
+ numcode: "132"
+countries_062:
+ name: Estonia
+ iso3: EST
+ iso: EE
+ iso_name: ESTONIA
+ id: "62"
+ numcode: "233"
+countries_117:
+ name: Luxembourg
+ iso3: LUX
+ iso: LU
+ iso_name: LUXEMBOURG
+ id: "117"
+ numcode: "442"
+countries_143:
+ name: Netherlands Antilles
+ iso3: ANT
+ iso: AN
+ iso_name: NETHERLANDS ANTILLES
+ id: "143"
+ numcode: "530"
+countries_170:
+ name: Saint Helena
+ iso3: SHN
+ iso: SH
+ iso_name: SAINT HELENA
+ id: "170"
+ numcode: "654"
+countries_225:
+ name: Zambia
+ iso3: ZMB
+ iso: ZM
+ iso_name: ZAMBIA
+ id: "225"
+ numcode: "894"
+countries_037:
+ name: Cayman Islands
+ iso3: CYM
+ iso: KY
+ iso_name: CAYMAN ISLANDS
+ id: "37"
+ numcode: "136"
+countries_063:
+ name: Ethiopia
+ iso3: ETH
+ iso: ET
+ iso_name: ETHIOPIA
+ id: "63"
+ numcode: "231"
+countries_090:
+ name: Hungary
+ iso3: HUN
+ iso: HU
+ iso_name: HUNGARY
+ id: "90"
+ numcode: "348"
+countries_118:
+ name: Macao
+ iso3: MAC
+ iso: MO
+ iso_name: MACAO
+ id: "118"
+ numcode: "446"
+countries_144:
+ name: New Caledonia
+ iso3: NCL
+ iso: NC
+ iso_name: NEW CALEDONIA
+ id: "144"
+ numcode: "540"
+countries_226:
+ name: Zimbabwe
+ iso3: ZWE
+ iso: ZW
+ iso_name: ZIMBABWE
+ id: "226"
+ numcode: "716"
+countries_038:
+ name: Central African Republic
+ iso3: CAF
+ iso: CF
+ iso_name: CENTRAL AFRICAN REPUBLIC
+ id: "38"
+ numcode: "140"
+countries_064:
+ name: Falkland Islands (Malvinas)
+ iso3: FLK
+ iso: FK
+ iso_name: FALKLAND ISLANDS (MALVINAS)
+ id: "64"
+ numcode: "238"
+countries_091:
+ name: Iceland
+ iso3: ISL
+ iso: IS
+ iso_name: ICELAND
+ id: "91"
+ numcode: "352"
+countries_119:
+ name: Macedonia
+ iso3: MKD
+ iso: MK
+ iso_name: MACEDONIA, THE FORMER YUGOSLAV REPUBLIC OF
+ id: "119"
+ numcode: "807"
+countries_145:
+ name: New Zealand
+ iso3: NZL
+ iso: NZ
+ iso_name: NEW ZEALAND
+ id: "145"
+ numcode: "554"
+countries_171:
+ name: Saint Kitts and Nevis
+ iso3: KNA
+ iso: KN
+ iso_name: SAINT KITTS AND NEVIS
+ id: "171"
+ numcode: "659"
diff --git a/spec/test_app/db/default/roles.yml b/spec/test_app/db/default/roles.yml
new file mode 100644
index 0000000..96b0543
--- /dev/null
+++ b/spec/test_app/db/default/roles.yml
@@ -0,0 +1,7 @@
+admin_role:
+ id: 1
+ name: admin
+
+user_role:
+ id: 2
+ name: user
\ No newline at end of file
diff --git a/spec/test_app/db/default/states.yml b/spec/test_app/db/default/states.yml
new file mode 100644
index 0000000..02b838d
--- /dev/null
+++ b/spec/test_app/db/default/states.yml
@@ -0,0 +1,256 @@
+---
+states_043:
+ name: Michigan
+ country_id: "214"
+ id: "931624400"
+ abbr: MI
+states_032:
+ name: South Dakota
+ country_id: "214"
+ id: "615306087"
+ abbr: SD
+states_021:
+ name: Washington
+ country_id: "214"
+ id: "414569975"
+ abbr: WA
+states_010:
+ name: Wisconsin
+ country_id: "214"
+ id: "103680699"
+ abbr: WI
+states_044:
+ name: Arizona
+ country_id: "214"
+ id: "948208802"
+ abbr: AZ
+states_033:
+ name: Illinois
+ country_id: "214"
+ id: "625629523"
+ abbr: IL
+states_022:
+ name: New Hampshire
+ country_id: "214"
+ id: "426832442"
+ abbr: NH
+states_011:
+ name: North Carolina
+ country_id: "214"
+ id: "177087202"
+ abbr: NC
+states_045:
+ name: Kansas
+ country_id: "214"
+ id: "969722173"
+ abbr: KS
+states_034:
+ name: Missouri
+ country_id: "214"
+ id: "653576146"
+ abbr: MO
+states_023:
+ name: Arkansas
+ country_id: "214"
+ id: "471470972"
+ abbr: AR
+states_012:
+ name: Nevada
+ country_id: "214"
+ id: "179539703"
+ abbr: NV
+states_001:
+ name: District of Columbia
+ country_id: "214"
+ id: "6764998"
+ abbr: DC
+states_046:
+ name: Idaho
+ country_id: "214"
+ id: "982433740"
+ abbr: ID
+states_035:
+ name: Nebraska
+ country_id: "214"
+ id: "673350891"
+ abbr: NE
+states_024:
+ name: Pennsylvania
+ country_id: "214"
+ id: "471711976"
+ abbr: PA
+states_013:
+ name: Hawaii
+ country_id: "214"
+ id: "199950338"
+ abbr: HI
+states_002:
+ name: Utah
+ country_id: "214"
+ id: "17199670"
+ abbr: UT
+states_047:
+ name: Vermont
+ country_id: "214"
+ id: "989115415"
+ abbr: VT
+states_036:
+ name: Delaware
+ country_id: "214"
+ id: "721598219"
+ abbr: DE
+states_025:
+ name: Rhode Island
+ country_id: "214"
+ id: "474001862"
+ abbr: RI
+states_014:
+ name: Oklahoma
+ country_id: "214"
+ id: "248548169"
+ abbr: OK
+states_003:
+ name: Louisiana
+ country_id: "214"
+ id: "37199952"
+ abbr: LA
+states_048:
+ name: Montana
+ country_id: "214"
+ id: "999156632"
+ abbr: MT
+states_037:
+ name: Tennessee
+ country_id: "214"
+ id: "726305632"
+ abbr: TN
+states_026:
+ name: Maryland
+ country_id: "214"
+ id: "480368357"
+ abbr: MD
+states_015:
+ name: Florida
+ country_id: "214"
+ id: "267271847"
+ abbr: FL
+states_004:
+ name: Virginia
+ country_id: "214"
+ id: "41111624"
+ abbr: VA
+states_049:
+ name: Minnesota
+ country_id: "214"
+ id: "1032288924"
+ abbr: MN
+states_038:
+ name: New Jersey
+ country_id: "214"
+ id: "750950030"
+ abbr: NJ
+states_027:
+ name: Ohio
+ country_id: "214"
+ id: "485193526"
+ abbr: OH
+states_016:
+ name: California
+ country_id: "214"
+ id: "276110813"
+ abbr: CA
+states_005:
+ name: North Dakota
+ country_id: "214"
+ id: "51943165"
+ abbr: ND
+states_050:
+ name: Maine
+ country_id: "214"
+ id: "1055056709"
+ abbr: ME
+states_039:
+ name: Indiana
+ country_id: "214"
+ id: "769938586"
+ abbr: IN
+states_028:
+ name: Texas
+ country_id: "214"
+ id: "525212995"
+ abbr: TX
+states_017:
+ name: Oregon
+ country_id: "214"
+ id: "298914262"
+ abbr: OR
+states_006:
+ name: Wyoming
+ country_id: "214"
+ id: "66390489"
+ abbr: WY
+states_051:
+ name: Alabama
+ country_id: "214"
+ id: "1061493585"
+ abbr: AL
+states_040:
+ name: Iowa
+ country_id: "214"
+ id: "825306985"
+ abbr: IA
+states_029:
+ name: Mississippi
+ country_id: "214"
+ id: "532363768"
+ abbr: MS
+states_018:
+ name: Kentucky
+ country_id: "214"
+ id: "308473843"
+ abbr: KY
+states_007:
+ name: New Mexico
+ country_id: "214"
+ id: "69729944"
+ abbr: NM
+states_041:
+ name: Georgia
+ country_id: "214"
+ id: "876916760"
+ abbr: GA
+states_030:
+ name: Colorado
+ country_id: "214"
+ id: "536031023"
+ abbr: CO
+states_019:
+ name: Massachusetts
+ country_id: "214"
+ id: "385551075"
+ abbr: MA
+states_008:
+ name: Connecticut
+ country_id: "214"
+ id: "69870734"
+ abbr: CT
+states_042:
+ name: New York
+ country_id: "214"
+ id: "889445952"
+ abbr: NY
+states_031:
+ name: South Carolina
+ country_id: "214"
+ id: "597434151"
+ abbr: SC
+states_020:
+ name: Alaska
+ country_id: "214"
+ id: "403740659"
+ abbr: AK
+states_009:
+ name: West Virginia
+ country_id: "214"
+ id: "91367981"
+ abbr: WV
diff --git a/spec/test_app/db/default/zone_members.yml b/spec/test_app/db/default/zone_members.yml
new file mode 100644
index 0000000..9ce0290
--- /dev/null
+++ b/spec/test_app/db/default/zone_members.yml
@@ -0,0 +1,169 @@
+---
+zone_members_019:
+ zoneable_id: "162"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_008:
+ zoneable_id: "67"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_020:
+ zoneable_id: "163"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_021:
+ zoneable_id: "167"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_010:
+ zoneable_id: "74"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_009:
+ zoneable_id: "68"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_022:
+ zoneable_id: "183"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_011:
+ zoneable_id: "90"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_023:
+ zoneable_id: "184"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_012:
+ zoneable_id: "96"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_001:
+ zoneable_id: "13"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_024:
+ zoneable_id: "188"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_013:
+ zoneable_id: "98"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_002:
+ zoneable_id: "20"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_025:
+ zoneable_id: "194"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_014:
+ zoneable_id: "110"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_003:
+ zoneable_id: "30"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_026:
+ zoneable_id: "213"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_015:
+ zoneable_id: "116"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_004:
+ zoneable_id: "51"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_016:
+ zoneable_id: "117"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_005:
+ zoneable_id: "52"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_028:
+ zoneable_id: "214"
+ created_at: 2009-06-04 17:22:41
+ updated_at: 2009-06-04 17:22:41
+ zone_id: "2"
+ zoneable_type: Country
+zone_members_017:
+ zoneable_id: "125"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_006:
+ zoneable_id: "53"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_029:
+ zoneable_id: "35"
+ created_at: 2009-06-04 17:22:41
+ updated_at: 2009-06-04 17:22:41
+ zone_id: "2"
+ zoneable_type: Country
+zone_members_018:
+ zoneable_id: "142"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
+zone_members_007:
+ zoneable_id: "62"
+ created_at: 2009-06-04 13:22:26
+ updated_at: 2009-06-04 13:22:26
+ zone_id: "1"
+ zoneable_type: Country
diff --git a/spec/test_app/db/default/zones.yml b/spec/test_app/db/default/zones.yml
new file mode 100644
index 0000000..ed771d9
--- /dev/null
+++ b/spec/test_app/db/default/zones.yml
@@ -0,0 +1,13 @@
+---
+zones_001:
+ name: EU_VAT
+ created_at: 2009-06-04 17:22:26
+ updated_at: 2009-06-04 17:22:26
+ id: "1"
+ description: Countries that make up the EU VAT zone.
+zones_002:
+ name: North America
+ created_at: 2009-06-04 17:22:41
+ updated_at: 2009-06-04 17:22:41
+ id: "2"
+ description: USA + Canada
diff --git a/spec/test_app/db/migrate/20090526213535_create_questions.rb b/spec/test_app/db/migrate/20090526213535_create_questions.rb
new file mode 100644
index 0000000..21c8590
--- /dev/null
+++ b/spec/test_app/db/migrate/20090526213535_create_questions.rb
@@ -0,0 +1,17 @@
+class CreateQuestions < ActiveRecord::Migration
+ def self.up
+ create_table :questions do |t|
+ t.integer :question_category_id
+ t.text :question
+ t.text :answer
+ t.integer :position
+
+
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :questions
+ end
+end
diff --git a/spec/test_app/db/migrate/20090526213550_create_question_categories.rb b/spec/test_app/db/migrate/20090526213550_create_question_categories.rb
new file mode 100644
index 0000000..2a2ef1f
--- /dev/null
+++ b/spec/test_app/db/migrate/20090526213550_create_question_categories.rb
@@ -0,0 +1,14 @@
+class CreateQuestionCategories < ActiveRecord::Migration
+ def self.up
+ create_table :question_categories do |t|
+ t.string :name
+ t.integer :position
+
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :question_categories
+ end
+end
diff --git a/spec/test_app/db/migrate/20090823005402_spree_zero_nine_zero.rb b/spec/test_app/db/migrate/20090823005402_spree_zero_nine_zero.rb
new file mode 100644
index 0000000..851a960
--- /dev/null
+++ b/spec/test_app/db/migrate/20090823005402_spree_zero_nine_zero.rb
@@ -0,0 +1,442 @@
+class SpreeZeroNineZero < ActiveRecord::Migration
+ # This is a legacy migration consolidating all of the database changes needed as of Spree 0.9.0
+ # (See http://railsdog.lighthouseapp.com/projects/31096-spree/tickets/772)
+
+ def self.up
+ create_table "addresses", :force => true do |t|
+ t.string "firstname"
+ t.string "lastname"
+ t.string "address1"
+ t.string "address2"
+ t.string "city"
+ t.integer "state_id"
+ t.string "zipcode"
+ t.integer "country_id"
+ t.string "phone"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "state_name"
+ t.string "alternative_phone"
+ end
+
+ create_table "adjustments", :force => true do |t|
+ t.integer "order_id"
+ t.string "type"
+ t.decimal "amount", :precision => 8, :scale => 2, :default => 0.0, :null => false
+ t.string "description"
+ t.integer "position"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "adjustment_source_id"
+ t.string "adjustment_source_type"
+ t.string "secondary_type"
+ end
+
+ create_table "assets", :force => true do |t|
+ t.integer "viewable_id"
+ t.string "viewable_type", :limit => 50
+ t.string "attachment_content_type"
+ t.string "attachment_file_name"
+ t.integer "attachment_size"
+ t.integer "position"
+ t.string "type", :limit => 75
+ t.datetime "attachment_updated_at"
+ t.integer "attachment_width"
+ t.integer "attachment_height"
+ end
+
+ create_table "calculators", :force => true do |t|
+ t.string "type"
+ t.integer "calculable_id", :null => false
+ t.string "calculable_type", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "checkouts", :force => true do |t|
+ t.integer "order_id"
+ t.string "email"
+ t.string "ip_address"
+ t.text "special_instructions"
+ t.integer "bill_address_id"
+ t.datetime "completed_at"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "configurations", :force => true do |t|
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "type", :limit => 50
+ end
+
+ add_index "configurations", ["name", "type"], :name => "index_configurations_on_name_and_type"
+
+ create_table "countries", :force => true do |t|
+ t.string "iso_name"
+ t.string "iso"
+ t.string "name"
+ t.string "iso3"
+ t.integer "numcode"
+ end
+
+ create_table "coupons", :force => true do |t|
+ t.string "code"
+ t.string "description"
+ t.integer "usage_limit"
+ t.boolean "combine"
+ t.datetime "expires_at"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.datetime "starts_at"
+ end
+
+ create_table "creditcard_txns", :force => true do |t|
+ t.integer "creditcard_payment_id"
+ t.decimal "amount", :precision => 8, :scale => 2, :default => 0.0, :null => false
+ t.integer "txn_type"
+ t.string "response_code"
+ t.text "avs_response"
+ t.text "cvv_response"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "creditcards", :force => true do |t|
+ t.text "number"
+ t.string "month"
+ t.string "year"
+ t.text "verification_value"
+ t.string "cc_type"
+ t.string "display_number"
+ t.string "first_name"
+ t.string "last_name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "start_month"
+ t.string "start_year"
+ t.string "issue_number"
+ t.integer "address_id"
+ t.integer "checkout_id"
+ end
+
+ create_table "gateway_configurations", :force => true do |t|
+ t.integer "gateway_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "gateway_option_values", :force => true do |t|
+ t.integer "gateway_configuration_id"
+ t.integer "gateway_option_id"
+ t.text "value"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "gateway_options", :force => true do |t|
+ t.string "name"
+ t.text "description"
+ t.integer "gateway_id"
+ t.boolean "textarea", :default => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "gateways", :force => true do |t|
+ t.string "clazz"
+ t.string "name"
+ t.text "description"
+ t.boolean "active"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "inventory_units", :force => true do |t|
+ t.integer "variant_id"
+ t.integer "order_id"
+ t.string "state"
+ t.integer "lock_version", :default => 0
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "line_items", :force => true do |t|
+ t.integer "order_id"
+ t.integer "variant_id"
+ t.integer "quantity", :null => false
+ t.decimal "price", :precision => 8, :scale => 2, :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "line_items", ["order_id"], :name => "index_line_items_on_order_id"
+ add_index "line_items", ["variant_id"], :name => "index_line_items_on_variant_id"
+
+ create_table "option_types", :force => true do |t|
+ t.string "name", :limit => 100
+ t.string "presentation", :limit => 100
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "option_types_prototypes", :id => false, :force => true do |t|
+ t.integer "prototype_id"
+ t.integer "option_type_id"
+ end
+
+ create_table "option_values", :force => true do |t|
+ t.integer "option_type_id"
+ t.string "name"
+ t.integer "position"
+ t.string "presentation"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "option_values_variants", :id => false, :force => true do |t|
+ t.integer "variant_id"
+ t.integer "option_value_id"
+ end
+
+ add_index "option_values_variants", ["variant_id"], :name => "index_option_values_variants_on_variant_id"
+
+ create_table "orders", :force => true do |t|
+ t.integer "user_id"
+ t.string "number", :limit => 15
+ t.decimal "item_total", :precision => 8, :scale => 2, :default => 0.0, :null => false
+ t.decimal "total", :precision => 8, :scale => 2, :default => 0.0, :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "state"
+ t.string "token"
+ t.decimal "adjustment_total", :precision => 8, :scale => 2, :default => 0.0, :null => false
+ t.decimal "credit_total", :precision => 8, :scale => 2, :default => 0.0, :null => false
+ end
+
+ add_index "orders", ["number"], :name => "index_orders_on_number"
+
+ create_table "payments", :force => true do |t|
+ t.integer "order_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.decimal "amount", :precision => 8, :scale => 2, :default => 0.0, :null => false
+ t.integer "creditcard_id"
+ t.string "type"
+ end
+
+ create_table "preferences", :force => true do |t|
+ t.string "attribute", :null => false, :limit => 100
+ t.integer "owner_id", :null => false, :limit => 30
+ t.string "owner_type", :null => false, :limit => 50
+ t.integer "group_id"
+ t.string "group_type", :limit => 50
+ t.string "value"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "preferences", ["owner_id", "owner_type", "attribute", "group_id", "group_type"], :name => "index_preferences_on_owner_and_attribute_and_preference", :unique => true
+
+ create_table "product_option_types", :force => true do |t|
+ t.integer "product_id"
+ t.integer "option_type_id"
+ t.integer "position"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "product_properties", :force => true do |t|
+ t.integer "product_id"
+ t.integer "property_id"
+ t.string "value"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "products", :force => true do |t|
+ t.string "name", :default => "", :null => false
+ t.text "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "permalink"
+ t.datetime "available_on"
+ t.integer "tax_category_id"
+ t.integer "shipping_category_id"
+ t.datetime "deleted_at"
+ t.string "meta_description"
+ t.string "meta_keywords"
+ end
+
+ add_index "products", ["available_on"], :name => "index_products_on_available_on"
+ add_index "products", ["deleted_at"], :name => "index_products_on_deleted_at"
+ add_index "products", ["name"], :name => "index_products_on_name"
+ add_index "products", ["permalink"], :name => "index_products_on_permalink"
+
+ create_table "products_taxons", :id => false, :force => true do |t|
+ t.integer "product_id"
+ t.integer "taxon_id"
+ end
+
+ add_index "products_taxons", ["product_id"], :name => "index_products_taxons_on_product_id"
+ add_index "products_taxons", ["taxon_id"], :name => "index_products_taxons_on_taxon_id"
+
+ create_table "properties", :force => true do |t|
+ t.string "name"
+ t.string "presentation", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "properties_prototypes", :id => false, :force => true do |t|
+ t.integer "prototype_id"
+ t.integer "property_id"
+ end
+
+ create_table "prototypes", :force => true do |t|
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "roles", :force => true do |t|
+ t.string "name"
+ end
+
+ create_table "roles_users", :id => false, :force => true do |t|
+ t.integer "role_id"
+ t.integer "user_id"
+ end
+
+ add_index "roles_users", ["role_id"], :name => "index_roles_users_on_role_id"
+ add_index "roles_users", ["user_id"], :name => "index_roles_users_on_user_id"
+
+ create_table "shipments", :force => true do |t|
+ t.integer "order_id"
+ t.integer "shipping_method_id"
+ t.string "tracking"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "number"
+ t.decimal "cost", :precision => 8, :scale => 2
+ t.datetime "shipped_at"
+ t.integer "address_id"
+ end
+
+ create_table "shipping_categories", :force => true do |t|
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "shipping_methods", :force => true do |t|
+ t.integer "zone_id"
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "state_events", :force => true do |t|
+ t.integer "order_id"
+ t.integer "user_id"
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "previous_state"
+ end
+
+ create_table "states", :force => true do |t|
+ t.string "name"
+ t.string "abbr"
+ t.integer "country_id"
+ end
+
+ create_table "tax_categories", :force => true do |t|
+ t.string "name"
+ t.string "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "tax_rates", :force => true do |t|
+ t.integer "zone_id"
+ t.decimal "amount", :precision => 8, :scale => 4
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "tax_category_id"
+ end
+
+ create_table "taxonomies", :force => true do |t|
+ t.string "name", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "taxons", :force => true do |t|
+ t.integer "taxonomy_id", :null => false
+ t.integer "parent_id"
+ t.integer "position", :default => 0
+ t.string "name", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "permalink"
+ end
+
+ create_table "users", :force => true do |t|
+ t.string "email"
+ t.string "crypted_password", :limit => 128, :default => "", :null => false
+ t.string "salt", :limit => 128, :default => "", :null => false
+ t.string "remember_token"
+ t.string "remember_token_expires_at"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "persistence_token"
+ t.string "single_access_token"
+ t.string "perishable_token"
+ t.integer "login_count", :default => 0, :null => false
+ t.integer "failed_login_count", :default => 0, :null => false
+ t.datetime "last_request_at"
+ t.datetime "current_login_at"
+ t.datetime "last_login_at"
+ t.string "current_login_ip"
+ t.string "last_login_ip"
+ t.string "login"
+ t.integer "ship_address_id"
+ t.integer "bill_address_id"
+ end
+
+ create_table "variants", :force => true do |t|
+ t.integer "product_id"
+ t.string "sku", :default => "", :null => false
+ t.decimal "price", :precision => 8, :scale => 2, :null => false
+ t.decimal "weight", :precision => 8, :scale => 2
+ t.decimal "height", :precision => 8, :scale => 2
+ t.decimal "width", :precision => 8, :scale => 2
+ t.decimal "depth", :precision => 8, :scale => 2
+ t.datetime "deleted_at"
+ t.boolean "is_master", :default => false
+ end
+
+ add_index "variants", ["product_id"], :name => "index_variants_on_product_id"
+
+ create_table "zone_members", :force => true do |t|
+ t.integer "zone_id"
+ t.integer "zoneable_id"
+ t.string "zoneable_type"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "zones", :force => true do |t|
+ t.string "name"
+ t.string "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+ end
+
+ def self.down
+ # No going back
+ end
+end
diff --git a/spec/test_app/db/migrate/20090904192342_create_indexes_for_inventory_units.rb b/spec/test_app/db/migrate/20090904192342_create_indexes_for_inventory_units.rb
new file mode 100644
index 0000000..801dba9
--- /dev/null
+++ b/spec/test_app/db/migrate/20090904192342_create_indexes_for_inventory_units.rb
@@ -0,0 +1,12 @@
+class CreateIndexesForInventoryUnits < ActiveRecord::Migration
+ def self.up
+ add_index(:inventory_units, :variant_id)
+ add_index(:inventory_units, :order_id)
+ end
+
+ def self.down
+ remove_index(:inventory_units, :variant_id)
+ remove_index(:inventory_units, :order_id)
+ end
+end
+
diff --git a/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb b/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
new file mode 100644
index 0000000..74ee903
--- /dev/null
+++ b/spec/test_app/db/migrate/20090923100315_add_count_on_hand_to_variants_and_products.rb
@@ -0,0 +1,36 @@
+class AddCountOnHandToVariantsAndProducts < ActiveRecord::Migration
+ def self.up
+ add_column :variants, :count_on_hand, :integer, :default => 0, :null => false
+ add_column :products, :count_on_hand, :integer, :default => 0, :null => false
+
+ # In some cases needed to reflect changes in table structure
+ Variant.reset_column_information
+ Product.reset_column_information
+
+ say_with_time 'Transfering inventory units with status on_hand to variants table...' do
+ Variant.all.each do |v|
+ v.update_attribute(:count_on_hand, v.inventory_units.with_state("on_hand").size)
+ InventoryUnit.destroy_all(:variant_id => v.id, :state => "on_hand")
+ end
+ end
+
+ say_with_time 'Updating products count on hand' do
+ Product.all.each do |p|
+ product_count_on_hand = p.has_variants? ?
+ p.variants.inject(0) {|acc, v| acc + v.count_on_hand} :
+ (p.master ? p.master.count_on_hand : 0)
+ p.update_attribute(:count_on_hand, product_count_on_hand)
+ end
+ end
+ end
+
+ def self.down
+ Variant.all.each do |v|
+ v.count_on_hand.times do
+ InventoryUnit.create(:variant => variant, :state => 'on_hand')
+ end
+ end
+ remove_column :variants, :count_on_hand
+ remove_column :products, :count_on_hand
+ end
+end
diff --git a/spec/test_app/db/migrate/20091007134354_change_taxons_to_nested_set.rb b/spec/test_app/db/migrate/20091007134354_change_taxons_to_nested_set.rb
new file mode 100644
index 0000000..1cd72ba
--- /dev/null
+++ b/spec/test_app/db/migrate/20091007134354_change_taxons_to_nested_set.rb
@@ -0,0 +1,40 @@
+class ChangeTaxonsToNestedSet < ActiveRecord::Migration
+ def self.up
+ add_column :taxons, :lft, :integer
+ add_column :taxons, :rgt, :integer
+
+ Taxon.reset_column_information # So the new root ids get saved
+
+ Taxon.class_eval do
+ # adapted from awesome nested set to use "position" information
+ indices = {}
+
+ left_column_name = "lft"
+ right_column_name = "rgt"
+ quoted_parent_column_name = "parent_id"
+ scope = lambda{|node|}
+
+ set_left_and_rights = lambda do |node|
+ # set left
+ node[left_column_name] = indices[scope.call(node)] += 1
+ # find
+ find(:all, :conditions => ["#{quoted_parent_column_name} = ?", node], :order => "position ASC").each{|n| set_left_and_rights.call(n) }
+ # set right
+ node[right_column_name] = indices[scope.call(node)] += 1
+ node.save!
+ end
+
+ # Find root node(s)
+ find(:all, :conditions => "#{quoted_parent_column_name} IS NULL", :order => "position ASC").each do |root_node|
+ # setup index for this scope
+ indices[scope.call(root_node)] ||= 0
+ set_left_and_rights.call(root_node)
+ end
+ end
+ end
+
+ def self.down
+ remove_column :taxons, :lft
+ remove_column :taxons, :rgt
+ end
+end
diff --git a/spec/test_app/db/migrate/20091008091614_move_to_configurable_gateways.rb b/spec/test_app/db/migrate/20091008091614_move_to_configurable_gateways.rb
new file mode 100644
index 0000000..046622b
--- /dev/null
+++ b/spec/test_app/db/migrate/20091008091614_move_to_configurable_gateways.rb
@@ -0,0 +1,55 @@
+class MoveToConfigurableGateways < ActiveRecord::Migration
+ def self.up
+ drop_table :gateways
+ drop_table :gateway_options
+ drop_table :gateway_option_values
+ drop_table :gateway_configurations
+
+ create_table :gateways, :force => true do |t|
+ t.string :type
+ t.string :name
+ t.text :description
+ t.boolean :active, :default => true
+ t.string :environment, :default => "development"
+ t.string :server, :default => "test"
+ t.boolean :test_mode, :default => true
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :gateways
+ create_table "gateway_configurations", :force => true do |t|
+ t.integer "gateway_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "gateway_option_values", :force => true do |t|
+ t.integer "gateway_configuration_id"
+ t.integer "gateway_option_id"
+ t.text "value"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "gateway_options", :force => true do |t|
+ t.string "name"
+ t.text "description"
+ t.integer "gateway_id"
+ t.boolean "textarea", :default => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "gateways", :force => true do |t|
+ t.string "clazz"
+ t.string "name"
+ t.text "description"
+ t.boolean "active"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ end
+end
diff --git a/spec/test_app/db/migrate/20091012120519_product_groups_and_scopes.rb b/spec/test_app/db/migrate/20091012120519_product_groups_and_scopes.rb
new file mode 100644
index 0000000..820a4c1
--- /dev/null
+++ b/spec/test_app/db/migrate/20091012120519_product_groups_and_scopes.rb
@@ -0,0 +1,25 @@
+class ProductGroupsAndScopes < ActiveRecord::Migration
+ def self.up
+ create_table(:product_groups) do |t|
+ t.column :name, :string
+ t.column :permalink, :string
+ t.column :order, :string
+ end
+
+ create_table(:product_scopes) do |t|
+ t.column :product_group_id, :integer
+ t.column :name, :string
+ t.column :arguments, :text
+ end
+
+ add_index :product_groups, :name
+ add_index :product_groups, :permalink
+ add_index :product_scopes, :name
+ add_index :product_scopes, :product_group_id
+ end
+
+ def self.down
+ drop_table :product_groups
+ drop_table :product_scopes
+ end
+end
diff --git a/spec/test_app/db/migrate/20091015110842_add_open_id_authentication_tables.rb b/spec/test_app/db/migrate/20091015110842_add_open_id_authentication_tables.rb
new file mode 100644
index 0000000..caae0d8
--- /dev/null
+++ b/spec/test_app/db/migrate/20091015110842_add_open_id_authentication_tables.rb
@@ -0,0 +1,20 @@
+class AddOpenIdAuthenticationTables < ActiveRecord::Migration
+ def self.up
+ create_table :open_id_authentication_associations, :force => true do |t|
+ t.integer :issued, :lifetime
+ t.string :handle, :assoc_type
+ t.binary :server_url, :secret
+ end
+
+ create_table :open_id_authentication_nonces, :force => true do |t|
+ t.integer :timestamp, :null => false
+ t.string :server_url, :null => true
+ t.string :salt, :null => false
+ end
+ end
+
+ def self.down
+ drop_table :open_id_authentication_associations
+ drop_table :open_id_authentication_nonces
+ end
+end
diff --git a/spec/test_app/db/migrate/20091015153048_add_openid_field_to_users.rb b/spec/test_app/db/migrate/20091015153048_add_openid_field_to_users.rb
new file mode 100644
index 0000000..3c6b1fa
--- /dev/null
+++ b/spec/test_app/db/migrate/20091015153048_add_openid_field_to_users.rb
@@ -0,0 +1,19 @@
+ class AddOpenidFieldToUsers < ActiveRecord::Migration
+ def self.up
+ add_column :users, :openid_identifier, :string
+ add_index :users, :openid_identifier
+
+ change_column :users, :login, :string, :default => nil, :null => true
+ change_column :users, :crypted_password, :string, :default => nil, :null => true
+ change_column :users, :salt, :string, :default => nil, :null => true
+ end
+
+ def self.down
+ remove_column :users, :openid_identifier
+
+ [:login, :crypted_password, :salt].each do |field|
+ User.all(:conditions => "#{field} is NULL").each { |user| user.update_attribute(field, "") if user.send(field).nil? }
+ change_column :users, field, :string, :default => "", :null => false
+ end
+ end
+ end
diff --git a/spec/test_app/db/migrate/20091016174634_change_preference_value_type.rb b/spec/test_app/db/migrate/20091016174634_change_preference_value_type.rb
new file mode 100644
index 0000000..8d64530
--- /dev/null
+++ b/spec/test_app/db/migrate/20091016174634_change_preference_value_type.rb
@@ -0,0 +1,10 @@
+class ChangePreferenceValueType < ActiveRecord::Migration
+ def self.up
+ remove_index :preferences, :name => 'index_preferences_on_owner_and_attribute_and_preference'
+ change_column :preferences, :value, :text
+ end
+
+ def self.down
+ change_column :preferences, :value, :string
+ end
+end
diff --git a/spec/test_app/db/migrate/20091017175558_create_billing_integrations.rb b/spec/test_app/db/migrate/20091017175558_create_billing_integrations.rb
new file mode 100644
index 0000000..aa2e17e
--- /dev/null
+++ b/spec/test_app/db/migrate/20091017175558_create_billing_integrations.rb
@@ -0,0 +1,16 @@
+class CreateBillingIntegrations < ActiveRecord::Migration
+ def self.up
+ create_table :billing_integrations do |t|
+ t.string :type
+ t.string :name
+ t.text :description
+ t.boolean :active, :default => true
+ t.string :environment, :default => "development"
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :billing_integrations
+ end
+end
diff --git a/spec/test_app/db/migrate/20091021133257_charge_refactoring.rb b/spec/test_app/db/migrate/20091021133257_charge_refactoring.rb
new file mode 100644
index 0000000..d36ddc6
--- /dev/null
+++ b/spec/test_app/db/migrate/20091021133257_charge_refactoring.rb
@@ -0,0 +1,35 @@
+class ChargeRefactoring < ActiveRecord::Migration
+
+ class Checkout < ActiveRecord::Base
+ end
+
+ # Hack to prevent issues with legacy migrations
+ class Order < ActiveRecord::Base
+ has_one :checkout
+ end
+
+ def self.up
+ add_column :orders, :completed_at, :timestamp
+ Order.reset_column_information
+ Order.all.each {|o| o.update_attribute(:completed_at, o.checkout && o.checkout.read_attribute(:completed_at)) }
+ remove_column :checkouts, :completed_at
+
+ change_column :adjustments, :amount, :decimal, :null => true, :default => nil, :precision => 8, :scale => 2
+ Adjustment.update_all "type = secondary_type"
+ Adjustment.update_all "type = 'CouponCredit'", "type = 'Credit'"
+ remove_column :adjustments, :secondary_type
+ end
+
+ def self.down
+ add_column :checkouts, :completed_at, :timestamp
+ Checkout.reset_column_information
+ Checkout.all.each{|c| c.update_attribute(:completed_at, c.order && c.order.completed_at)}
+ remove_column :orders, :completed_at
+
+ add_column :adjustments, :secondary_type, :string
+ Adjustment.update_all "secondary_type = type"
+ Adjustment.update_all "type = 'Charge'", "type like '%Charge'"
+ Adjustment.update_all "type = 'Credit'", "type like '%Credit'"
+ change_column :adjustments, :amount, :decimal, :null => false, :default => 0, :precision => 8, :scale => 2
+ end
+end
diff --git a/spec/test_app/db/migrate/20091104151730_add_some_indexes.rb b/spec/test_app/db/migrate/20091104151730_add_some_indexes.rb
new file mode 100644
index 0000000..e9cbb5d
--- /dev/null
+++ b/spec/test_app/db/migrate/20091104151730_add_some_indexes.rb
@@ -0,0 +1,21 @@
+class AddSomeIndexes < ActiveRecord::Migration
+ def self.up
+ add_index(:taxons, :permalink)
+ add_index(:taxons, :parent_id)
+ add_index(:taxons, :taxonomy_id)
+ add_index(:assets, :viewable_id)
+ add_index(:assets, [:viewable_type, :type])
+ add_index(:product_properties, :product_id)
+ add_index(:option_values_variants, [:variant_id, :option_value_id])
+ end
+
+ def self.down
+ remove_index(:taxons, :permalink)
+ remove_index(:taxons, :parent_id)
+ remove_index(:taxons, :taxonomy_id)
+ remove_index(:assets, :viewable_id)
+ remove_index(:assets, [:viewable_type, :type])
+ remove_index(:product_properties, :product_id)
+ remove_index(:option_values_variants, [:variant_id, :option_value_id])
+ end
+end
diff --git a/spec/test_app/db/migrate/20091126190904_checkout_state_machine.rb b/spec/test_app/db/migrate/20091126190904_checkout_state_machine.rb
new file mode 100644
index 0000000..5e6b484
--- /dev/null
+++ b/spec/test_app/db/migrate/20091126190904_checkout_state_machine.rb
@@ -0,0 +1,13 @@
+class CheckoutStateMachine < ActiveRecord::Migration
+ def self.up
+ change_table :checkouts do |t|
+ t.string :state
+ end
+ end
+
+ def self.down
+ change_table :checkouts do |t|
+ t.remove :state
+ end
+ end
+end
diff --git a/spec/test_app/db/migrate/20091209153045_state_for_shipments.rb b/spec/test_app/db/migrate/20091209153045_state_for_shipments.rb
new file mode 100644
index 0000000..3094333
--- /dev/null
+++ b/spec/test_app/db/migrate/20091209153045_state_for_shipments.rb
@@ -0,0 +1,9 @@
+class StateForShipments < ActiveRecord::Migration
+ def self.up
+ add_column "shipments", "state", :string
+ end
+
+ def self.down
+ remove_column "shipments", "state"
+ end
+end
diff --git a/spec/test_app/db/migrate/20091209202200_make_state_events_polymorphic.rb b/spec/test_app/db/migrate/20091209202200_make_state_events_polymorphic.rb
new file mode 100644
index 0000000..8224d47
--- /dev/null
+++ b/spec/test_app/db/migrate/20091209202200_make_state_events_polymorphic.rb
@@ -0,0 +1,12 @@
+class MakeStateEventsPolymorphic < ActiveRecord::Migration
+ def self.up
+ rename_column :state_events, :order_id, :stateful_id
+ add_column :state_events, :stateful_type, :string
+ StateEvent.update_all(:stateful_type => 'Order')
+ end
+
+ def self.down
+ rename_column :state_events, :stateful_id, :order_id
+ remove_column :state_events, :stateful_type
+ end
+end
diff --git a/spec/test_app/db/migrate/20091211203813_ship_address_id_for_checkouts.rb b/spec/test_app/db/migrate/20091211203813_ship_address_id_for_checkouts.rb
new file mode 100644
index 0000000..cb4cf03
--- /dev/null
+++ b/spec/test_app/db/migrate/20091211203813_ship_address_id_for_checkouts.rb
@@ -0,0 +1,9 @@
+class ShipAddressIdForCheckouts < ActiveRecord::Migration
+ def self.up
+ add_column "checkouts", "ship_address_id", :integer
+ end
+
+ def self.down
+ remove_column "checkouts", "ship_address_id"
+ end
+end
diff --git a/spec/test_app/db/migrate/20091212161118_shipping_method_id_for_checkouts.rb b/spec/test_app/db/migrate/20091212161118_shipping_method_id_for_checkouts.rb
new file mode 100644
index 0000000..e7c86cd
--- /dev/null
+++ b/spec/test_app/db/migrate/20091212161118_shipping_method_id_for_checkouts.rb
@@ -0,0 +1,9 @@
+class ShippingMethodIdForCheckouts < ActiveRecord::Migration
+ def self.up
+ add_column "checkouts", "shipping_method_id", :integer
+ end
+
+ def self.down
+ remove_column "checkouts", "shipping_method_id"
+ end
+end
diff --git a/spec/test_app/db/migrate/20091213222815_creditcard_last_four_digits.rb b/spec/test_app/db/migrate/20091213222815_creditcard_last_four_digits.rb
new file mode 100644
index 0000000..fafa791
--- /dev/null
+++ b/spec/test_app/db/migrate/20091213222815_creditcard_last_four_digits.rb
@@ -0,0 +1,19 @@
+class CreditcardLastFourDigits < ActiveRecord::Migration
+
+ # Hack to allow for legacy migrations
+ class Creditcard < ActiveRecord::Base
+ end
+
+ def self.up
+ rename_column :creditcards, :display_number, :last_digits
+
+ Creditcard.reset_column_information
+ Creditcard.all.each do |card|
+ card.update_attribute(:last_digits, card.last_digits.gsub("XXXX-XXXX-XXXX-", "")) if card.last_digits.present?
+ end
+ end
+
+ def self.down
+ rename_column :creditcards, :last_digits, :display_number
+ end
+end
diff --git a/spec/test_app/db/migrate/20091214183826_populate_legacy_shipment_state.rb b/spec/test_app/db/migrate/20091214183826_populate_legacy_shipment_state.rb
new file mode 100644
index 0000000..810e3c4
--- /dev/null
+++ b/spec/test_app/db/migrate/20091214183826_populate_legacy_shipment_state.rb
@@ -0,0 +1,19 @@
+class PopulateLegacyShipmentState < ActiveRecord::Migration
+ # Hack to allow for legacy migrations
+ class Shipment < ActiveRecord::Base
+ end
+
+ def self.up
+ Shipment.all.each do |shipment|
+ if shipment.shipped_at
+ shipment.state = "shipped"
+ else
+ shipment.state = "pending"
+ end
+ shipment.save
+ end
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20100105090147_add_cost_price.rb b/spec/test_app/db/migrate/20100105090147_add_cost_price.rb
new file mode 100644
index 0000000..6f3aa13
--- /dev/null
+++ b/spec/test_app/db/migrate/20100105090147_add_cost_price.rb
@@ -0,0 +1,9 @@
+class AddCostPrice < ActiveRecord::Migration
+ def self.up
+ add_column :variants, :cost_price, :decimal, :null => true, :default => nil, :precision => 8, :scale => 2
+ end
+
+ def self.down
+ remove_column :variants, :cost_price
+ end
+end
diff --git a/spec/test_app/db/migrate/20100105132138_shipment_id_for_inventory_units.rb b/spec/test_app/db/migrate/20100105132138_shipment_id_for_inventory_units.rb
new file mode 100644
index 0000000..fa104ab
--- /dev/null
+++ b/spec/test_app/db/migrate/20100105132138_shipment_id_for_inventory_units.rb
@@ -0,0 +1,21 @@
+class ShipmentIdForInventoryUnits < ActiveRecord::Migration
+ def self.up
+ add_column "inventory_units", "shipment_id", :integer
+ add_index(:inventory_units, :shipment_id)
+
+ # migrate legacy shipments
+ Shipment.all.each do |shipment|
+ unless shipment.order
+ puts "Warning: shipment has invalid order - #{shipment.id}"
+ next
+ end
+ shipment.order.inventory_units.each do |unit|
+ unit.update_attribute("shipment_id", shipment.id)
+ end
+ end
+ end
+
+ def self.down
+ remove_column "inventory_units", "shipment_id"
+ end
+end
diff --git a/spec/test_app/db/migrate/20100111205525_cim_fields_for_creditcards.rb b/spec/test_app/db/migrate/20100111205525_cim_fields_for_creditcards.rb
new file mode 100644
index 0000000..a30ddf3
--- /dev/null
+++ b/spec/test_app/db/migrate/20100111205525_cim_fields_for_creditcards.rb
@@ -0,0 +1,11 @@
+class CimFieldsForCreditcards < ActiveRecord::Migration
+ def self.up
+ add_column "creditcards", "gateway_customer_profile_id", :string
+ add_column "creditcards", "gateway_payment_profile_id", :string
+ end
+
+ def self.down
+ remove_column "creditcards", "gateway_customer_profile_id"
+ remove_column "creditcards", "gateway_payment_profile_id"
+ end
+end
diff --git a/spec/test_app/db/migrate/20100112151511_create_return_authorizations.rb b/spec/test_app/db/migrate/20100112151511_create_return_authorizations.rb
new file mode 100644
index 0000000..70c6d3b
--- /dev/null
+++ b/spec/test_app/db/migrate/20100112151511_create_return_authorizations.rb
@@ -0,0 +1,16 @@
+class CreateReturnAuthorizations < ActiveRecord::Migration
+ def self.up
+ create_table :return_authorizations do |t|
+ t.string :number
+ t.decimal :amount, :precision => 8, :scale => 2, :default => 0.0, :null => false
+ t.references :order
+ t.text :reason
+ t.string :state
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :return_authorizations
+ end
+end
diff --git a/spec/test_app/db/migrate/20100113090919_add_return_authorization_to_inventory_units.rb b/spec/test_app/db/migrate/20100113090919_add_return_authorization_to_inventory_units.rb
new file mode 100644
index 0000000..00e7d5f
--- /dev/null
+++ b/spec/test_app/db/migrate/20100113090919_add_return_authorization_to_inventory_units.rb
@@ -0,0 +1,9 @@
+class AddReturnAuthorizationToInventoryUnits < ActiveRecord::Migration
+ def self.up
+ add_column :inventory_units, :return_authorization_id, :integer
+ end
+
+ def self.down
+ remove_column :inventory_units, :return_authorization_id
+ end
+end
diff --git a/spec/test_app/db/migrate/20100113203104_create_trackers.rb b/spec/test_app/db/migrate/20100113203104_create_trackers.rb
new file mode 100644
index 0000000..6078395
--- /dev/null
+++ b/spec/test_app/db/migrate/20100113203104_create_trackers.rb
@@ -0,0 +1,14 @@
+class CreateTrackers < ActiveRecord::Migration
+ def self.up
+ create_table :trackers do |t|
+ t.string :environment
+ t.string :analytics_id
+ t.boolean :active, :default => true
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :trackers
+ end
+end
diff --git a/spec/test_app/db/migrate/20100121160010_creditcard_id_for_creditcard_txns.rb b/spec/test_app/db/migrate/20100121160010_creditcard_id_for_creditcard_txns.rb
new file mode 100644
index 0000000..d2bbac9
--- /dev/null
+++ b/spec/test_app/db/migrate/20100121160010_creditcard_id_for_creditcard_txns.rb
@@ -0,0 +1,9 @@
+class CreditcardIdForCreditcardTxns < ActiveRecord::Migration
+ def self.up
+ add_column "creditcard_txns", "creditcard_id", :integer
+ end
+
+ def self.down
+ remove_column "creditcard_txns", "creditcard_id"
+ end
+end
diff --git a/spec/test_app/db/migrate/20100121183934_original_creditcard_txn_id_for_creditcard_txns.rb b/spec/test_app/db/migrate/20100121183934_original_creditcard_txn_id_for_creditcard_txns.rb
new file mode 100644
index 0000000..98ef6a9
--- /dev/null
+++ b/spec/test_app/db/migrate/20100121183934_original_creditcard_txn_id_for_creditcard_txns.rb
@@ -0,0 +1,9 @@
+class OriginalCreditcardTxnIdForCreditcardTxns < ActiveRecord::Migration
+ def self.up
+ add_column "creditcard_txns", "original_creditcard_txn_id", :integer
+ end
+
+ def self.down
+ remove_column "creditcard_txns", "original_creditcard_txn_id"
+ end
+end
diff --git a/spec/test_app/db/migrate/20100125145351_add_test_mode_to_billing_integration.rb b/spec/test_app/db/migrate/20100125145351_add_test_mode_to_billing_integration.rb
new file mode 100644
index 0000000..4dccff2
--- /dev/null
+++ b/spec/test_app/db/migrate/20100125145351_add_test_mode_to_billing_integration.rb
@@ -0,0 +1,11 @@
+class AddTestModeToBillingIntegration < ActiveRecord::Migration
+ def self.up
+ add_column :billing_integrations, :test_mode, :boolean, :default => true
+ add_column :billing_integrations, :server, :string, :default => "test"
+ end
+
+ def self.down
+ remove_column :billing_integrations, :test_mode
+ remove_column :billing_integrations, :server
+ end
+end
diff --git a/spec/test_app/db/migrate/20100126103714_create_products_product_groups.rb b/spec/test_app/db/migrate/20100126103714_create_products_product_groups.rb
new file mode 100644
index 0000000..0317884
--- /dev/null
+++ b/spec/test_app/db/migrate/20100126103714_create_products_product_groups.rb
@@ -0,0 +1,12 @@
+class CreateProductsProductGroups < ActiveRecord::Migration
+ def self.up
+ create_table :product_groups_products, :id => false do |t|
+ t.references :product
+ t.references :product_group
+ end
+ end
+#product_group_memberships
+ def self.down
+ drop_table :product_groups_products
+ end
+end
diff --git a/spec/test_app/db/migrate/20100209025806_create_payment_methods.rb b/spec/test_app/db/migrate/20100209025806_create_payment_methods.rb
new file mode 100644
index 0000000..722f04d
--- /dev/null
+++ b/spec/test_app/db/migrate/20100209025806_create_payment_methods.rb
@@ -0,0 +1,20 @@
+class CreatePaymentMethods < ActiveRecord::Migration
+ def self.up
+ create_table :payment_methods do |t|
+ t.string :type
+ t.string :name
+ t.text :description
+ t.boolean :active, :default => true
+ t.string :environment, :default => "development"
+ t.timestamps
+ end
+ # TODO - also migrate any legacy configurations for gateways and billing integrations before dropping the old tables
+ # we probably also need to do this inside the payment_gateway extension b/c table won't exist yet in fresh bootstrap
+ #drop_table :billing_integrations
+ #drop_table :gateways
+ end
+
+ def self.down
+ drop_table :payment_methods
+ end
+end
diff --git a/spec/test_app/db/migrate/20100209144531_polymorphic_payments.rb b/spec/test_app/db/migrate/20100209144531_polymorphic_payments.rb
new file mode 100644
index 0000000..7004d6f
--- /dev/null
+++ b/spec/test_app/db/migrate/20100209144531_polymorphic_payments.rb
@@ -0,0 +1,29 @@
+class PolymorphicPayments < ActiveRecord::Migration
+ def self.up
+ remove_column :payments, :type
+ remove_column :payments, :creditcard_id
+ rename_column :payments, :order_id, :payable_id
+ change_table :payments do |t|
+ t.string :payable_type
+ t.string :payment_method
+ t.references :source, :polymorphic => true
+ end
+ execute "UPDATE payments SET payable_type = 'Order'"
+
+ Creditcard.all.each do |creditcard|
+ if checkout = Checkout.find_by_id(creditcard.checkout_id) and checkout.order
+ if payment = checkout.order.payments.first
+ execute "UPDATE payments SET source_type = 'Creditcard', source_id = #{creditcard.id} WHERE id = #{payment.id}"
+ end
+ end
+ end
+
+ change_table :creditcards do |t|
+ t.remove :checkout_id
+ end
+ end
+
+ def self.down
+ # no going back!
+ end
+end
diff --git a/spec/test_app/db/migrate/20100213103131_change_payments_payment_method_to_belongs_to.rb b/spec/test_app/db/migrate/20100213103131_change_payments_payment_method_to_belongs_to.rb
new file mode 100644
index 0000000..e4cc41c
--- /dev/null
+++ b/spec/test_app/db/migrate/20100213103131_change_payments_payment_method_to_belongs_to.rb
@@ -0,0 +1,11 @@
+class ChangePaymentsPaymentMethodToBelongsTo < ActiveRecord::Migration
+ def self.up
+ remove_column "payments", "payment_method"
+ add_column "payments", "payment_method_id", :integer
+ end
+
+ def self.down
+ add_column "payments", "payment_method", :string
+ remove_column "payments", "payment_method_id"
+ end
+end
diff --git a/spec/test_app/db/migrate/20100214212536_assign_creditcard_txns_to_payment.rb b/spec/test_app/db/migrate/20100214212536_assign_creditcard_txns_to_payment.rb
new file mode 100644
index 0000000..bcca85f
--- /dev/null
+++ b/spec/test_app/db/migrate/20100214212536_assign_creditcard_txns_to_payment.rb
@@ -0,0 +1,16 @@
+class AssignCreditcardTxnsToPayment < ActiveRecord::Migration
+ def self.up
+ add_column "creditcard_txns", "payment_id", :integer
+ ActiveRecord::Base.connection.select_all("SELECT * FROM creditcard_txns").each do |txn_attrs|
+ if creditcard = Creditcard.find_by_id(txn_attrs["creditcard_id"]) and creditcard.payments.first
+ execute "UPDATE creditcard_txns SET payment_id = #{creditcard.payments.first.id} WHERE id = #{txn_attrs['id']}"
+ end
+ end
+ remove_column "creditcard_txns", "creditcard_payment_id"
+ end
+
+ def self.down
+ remove_column "creditcard_txns", "payment_id"
+ add_column "creditcard_txns", "creditcard_payment_id", :integer
+ end
+end
diff --git a/spec/test_app/db/migrate/20100223170312_sti_for_transactions.rb b/spec/test_app/db/migrate/20100223170312_sti_for_transactions.rb
new file mode 100644
index 0000000..031027e
--- /dev/null
+++ b/spec/test_app/db/migrate/20100223170312_sti_for_transactions.rb
@@ -0,0 +1,14 @@
+class StiForTransactions < ActiveRecord::Migration
+ def self.up
+ rename_table "creditcard_txns", "transactions"
+ add_column "transactions", "type", :string
+ remove_column "transactions", "creditcard_id"
+ Transaction.update_all(:type => 'CreditcardTxn') if defined? Transaction
+ end
+
+ def self.down
+ rename_table "transactions", "creditcard_txns"
+ remove_column "transactions", "type"
+ add_column "transactions", "creditcard_id", :integer
+ end
+end
diff --git a/spec/test_app/db/migrate/20100223183812_drop_billing_integrations.rb b/spec/test_app/db/migrate/20100223183812_drop_billing_integrations.rb
new file mode 100644
index 0000000..60c6dcb
--- /dev/null
+++ b/spec/test_app/db/migrate/20100223183812_drop_billing_integrations.rb
@@ -0,0 +1,16 @@
+class DropBillingIntegrations < ActiveRecord::Migration
+ def self.up
+ drop_table :billing_integrations
+ end
+
+ def self.down
+ create_table :billing_integrations do |t|
+ t.string :type
+ t.string :name
+ t.text :description
+ t.boolean :active, :default => true
+ t.string :environment, :default => "development"
+ t.timestamps
+ end
+ end
+end
diff --git a/spec/test_app/db/migrate/20100224153127_deleted_at_for_payment_methods.rb b/spec/test_app/db/migrate/20100224153127_deleted_at_for_payment_methods.rb
new file mode 100644
index 0000000..168f17a
--- /dev/null
+++ b/spec/test_app/db/migrate/20100224153127_deleted_at_for_payment_methods.rb
@@ -0,0 +1,13 @@
+class DeletedAtForPaymentMethods < ActiveRecord::Migration
+ def self.up
+ change_table :payment_methods do |t|
+ t.timestamp :deleted_at, :default => nil
+ end
+ end
+
+ def self.down
+ change_table :payment_methods do |t|
+ t.remove :deleted_at
+ end
+ end
+end
diff --git a/spec/test_app/db/migrate/20100301163454_add_adjustments_index.rb b/spec/test_app/db/migrate/20100301163454_add_adjustments_index.rb
new file mode 100644
index 0000000..fecc5cd
--- /dev/null
+++ b/spec/test_app/db/migrate/20100301163454_add_adjustments_index.rb
@@ -0,0 +1,10 @@
+class AddAdjustmentsIndex < ActiveRecord::Migration
+ def self.up
+ add_index(:adjustments, :order_id)
+ end
+
+ def self.down
+ remove_index(:adjustments, :order_id)
+ end
+end
+
diff --git a/spec/test_app/db/migrate/20100306153445_fix_by_popularity.rb b/spec/test_app/db/migrate/20100306153445_fix_by_popularity.rb
new file mode 100644
index 0000000..2426a8a
--- /dev/null
+++ b/spec/test_app/db/migrate/20100306153445_fix_by_popularity.rb
@@ -0,0 +1,8 @@
+class FixByPopularity < ActiveRecord::Migration
+ def self.up
+ ProductScope.update_all("name='descend_by_popularity'", "name='by_popularity'")
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20100317120946_add_alt_text_to_images.rb b/spec/test_app/db/migrate/20100317120946_add_alt_text_to_images.rb
new file mode 100644
index 0000000..8d60703
--- /dev/null
+++ b/spec/test_app/db/migrate/20100317120946_add_alt_text_to_images.rb
@@ -0,0 +1,9 @@
+class AddAltTextToImages < ActiveRecord::Migration
+ def self.up
+ add_column :assets, :alt, :text
+ end
+
+ def self.down
+ remove_column :assets, :alt
+ end
+end
diff --git a/spec/test_app/db/migrate/20100427121301_add_display_to_payment_methods.rb b/spec/test_app/db/migrate/20100427121301_add_display_to_payment_methods.rb
new file mode 100644
index 0000000..2683f32
--- /dev/null
+++ b/spec/test_app/db/migrate/20100427121301_add_display_to_payment_methods.rb
@@ -0,0 +1,9 @@
+class AddDisplayToPaymentMethods < ActiveRecord::Migration
+ def self.up
+ add_column :payment_methods, :display, :string, :default => nil
+ end
+
+ def self.down
+ remove_column :payment_methods, :display
+ end
+end
diff --git a/spec/test_app/db/migrate/20100504142133_add_addresses_checkouts_indexes.rb b/spec/test_app/db/migrate/20100504142133_add_addresses_checkouts_indexes.rb
new file mode 100755
index 0000000..34c249e
--- /dev/null
+++ b/spec/test_app/db/migrate/20100504142133_add_addresses_checkouts_indexes.rb
@@ -0,0 +1,16 @@
+class AddAddressesCheckoutsIndexes < ActiveRecord::Migration
+ def self.up
+ add_index :addresses, :firstname
+ add_index :addresses, :lastname
+ add_index :checkouts, :order_id
+ add_index :checkouts, :bill_address_id
+ end
+
+ def self.down
+ remove_index :checkouts, :bill_address_id
+ remove_index :checkouts, :order_id
+ remove_index :addresses, :lastname
+ remove_index :addresses, :firstname
+ end
+end
+
diff --git a/spec/test_app/db/migrate/20100506180619_add_icon_to_taxons.rb b/spec/test_app/db/migrate/20100506180619_add_icon_to_taxons.rb
new file mode 100644
index 0000000..add1fa5
--- /dev/null
+++ b/spec/test_app/db/migrate/20100506180619_add_icon_to_taxons.rb
@@ -0,0 +1,18 @@
+class AddIconToTaxons < ActiveRecord::Migration
+ def self.up
+ # skip this migration if the attribute already exists because of advanced taxon extension
+ return if Taxon.new.respond_to? :icon_file_name
+ add_column :taxons, :icon_file_name, :string
+ add_column :taxons, :icon_content_type, :string
+ add_column :taxons, :icon_file_size, :integer
+ add_column :taxons, :icon_updated_at, :datetime
+ end
+
+ def self.down
+ remove_column :taxons, :icon_file_name
+ remove_column :taxons, :icon_content_type
+ remove_column :taxons, :icon_file_size
+ remove_column :taxons, :icon_updated_at
+ end
+
+end
diff --git a/spec/test_app/db/migrate/20100506185838_add_description_to_taxons.rb b/spec/test_app/db/migrate/20100506185838_add_description_to_taxons.rb
new file mode 100644
index 0000000..9a047bd
--- /dev/null
+++ b/spec/test_app/db/migrate/20100506185838_add_description_to_taxons.rb
@@ -0,0 +1,11 @@
+class AddDescriptionToTaxons < ActiveRecord::Migration
+ def self.up
+ # skip this migration if the attribute already exists because of advanced taxon extension
+ return if Taxon.new.respond_to? :description
+ add_column :taxons, :description, :text
+ end
+
+ def self.down
+ remove_column :taxons, :description
+ end
+end
diff --git a/spec/test_app/db/migrate/20100528155333_index_for_shipments_number.rb b/spec/test_app/db/migrate/20100528155333_index_for_shipments_number.rb
new file mode 100644
index 0000000..b33ca2f
--- /dev/null
+++ b/spec/test_app/db/migrate/20100528155333_index_for_shipments_number.rb
@@ -0,0 +1,9 @@
+class IndexForShipmentsNumber < ActiveRecord::Migration
+ def self.up
+ add_index :shipments, :number
+ end
+
+ def self.down
+ remove_index :shipments, :number
+ end
+end
diff --git a/spec/test_app/db/migrate/20100528185820_add_index_on_users_persistence_token.rb b/spec/test_app/db/migrate/20100528185820_add_index_on_users_persistence_token.rb
new file mode 100644
index 0000000..2905e9e
--- /dev/null
+++ b/spec/test_app/db/migrate/20100528185820_add_index_on_users_persistence_token.rb
@@ -0,0 +1,9 @@
+class AddIndexOnUsersPersistenceToken < ActiveRecord::Migration
+ def self.up
+ add_index :users, :persistence_token
+ end
+
+ def self.down
+ remove_index :users, :persistence_token
+ end
+end
diff --git a/spec/test_app/db/migrate/20100605152042_add_default_to_tax_categories.rb b/spec/test_app/db/migrate/20100605152042_add_default_to_tax_categories.rb
new file mode 100644
index 0000000..e2ea792
--- /dev/null
+++ b/spec/test_app/db/migrate/20100605152042_add_default_to_tax_categories.rb
@@ -0,0 +1,9 @@
+class AddDefaultToTaxCategories < ActiveRecord::Migration
+ def self.up
+ add_column :tax_categories, :is_default, :boolean, :default => false
+ end
+
+ def self.down
+ remove_column :tax_categories, :is_default
+ end
+end
\ No newline at end of file
diff --git a/spec/test_app/db/migrate/20100624110730_add_display_to_shipping_methods.rb b/spec/test_app/db/migrate/20100624110730_add_display_to_shipping_methods.rb
new file mode 100644
index 0000000..f14bea6
--- /dev/null
+++ b/spec/test_app/db/migrate/20100624110730_add_display_to_shipping_methods.rb
@@ -0,0 +1,9 @@
+class AddDisplayToShippingMethods < ActiveRecord::Migration
+ def self.up
+ add_column :shipping_methods, :display_on, :string, :default => nil
+ end
+
+ def self.down
+ remove_column :shipping_methods, :display_on
+ end
+end
diff --git a/spec/test_app/db/migrate/20100624123336_rename_payment_method_display.rb b/spec/test_app/db/migrate/20100624123336_rename_payment_method_display.rb
new file mode 100644
index 0000000..6240453
--- /dev/null
+++ b/spec/test_app/db/migrate/20100624123336_rename_payment_method_display.rb
@@ -0,0 +1,9 @@
+class RenamePaymentMethodDisplay < ActiveRecord::Migration
+ def self.up
+ rename_column :payment_methods, :display, :display_on
+ end
+
+ def self.down
+ rename_column :payment_methods, :display_on, :display
+ end
+end
\ No newline at end of file
diff --git a/spec/test_app/db/migrate/20100624175547_rename_preferences_field.rb b/spec/test_app/db/migrate/20100624175547_rename_preferences_field.rb
new file mode 100644
index 0000000..613ee3a
--- /dev/null
+++ b/spec/test_app/db/migrate/20100624175547_rename_preferences_field.rb
@@ -0,0 +1,8 @@
+class RenamePreferencesField < ActiveRecord::Migration
+ def self.up
+ rename_column(:preferences, :attribute, :name)
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20100811163637_add_guest_flag.rb b/spec/test_app/db/migrate/20100811163637_add_guest_flag.rb
new file mode 100644
index 0000000..1df2fa4
--- /dev/null
+++ b/spec/test_app/db/migrate/20100811163637_add_guest_flag.rb
@@ -0,0 +1,13 @@
+class AddGuestFlag < ActiveRecord::Migration
+ def self.up
+ change_table :users do |t|
+ t.boolean :guest
+ end
+ end
+
+ def self.down
+ change_table :users do |t|
+ t.remove :guest
+ end
+ end
+end
diff --git a/spec/test_app/db/migrate/20100811205836_drop_order_token.rb b/spec/test_app/db/migrate/20100811205836_drop_order_token.rb
new file mode 100644
index 0000000..760cab3
--- /dev/null
+++ b/spec/test_app/db/migrate/20100811205836_drop_order_token.rb
@@ -0,0 +1,11 @@
+class DropOrderToken < ActiveRecord::Migration
+ def self.up
+ change_table :orders do |t|
+ t.remove :token
+ end
+ end
+
+ def self.down
+ # no going back
+ end
+end
diff --git a/spec/test_app/db/migrate/20100812162326_payments_state_and_assigned_to_order_only.rb b/spec/test_app/db/migrate/20100812162326_payments_state_and_assigned_to_order_only.rb
new file mode 100644
index 0000000..1737555
--- /dev/null
+++ b/spec/test_app/db/migrate/20100812162326_payments_state_and_assigned_to_order_only.rb
@@ -0,0 +1,11 @@
+class PaymentsStateAndAssignedToOrderOnly < ActiveRecord::Migration
+ def self.up
+ # TODO: migrate existing payments
+ rename_column :payments, :payable_id, :order_id
+ remove_column :payments, :payable_type
+ add_column :payments, :state, :string
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20100813023502_create_address_keys_for_order.rb b/spec/test_app/db/migrate/20100813023502_create_address_keys_for_order.rb
new file mode 100644
index 0000000..bf44320
--- /dev/null
+++ b/spec/test_app/db/migrate/20100813023502_create_address_keys_for_order.rb
@@ -0,0 +1,15 @@
+class CreateAddressKeysForOrder < ActiveRecord::Migration
+ def self.up
+ change_table :orders do |t|
+ t.integer :bill_address_id
+ t.integer :ship_address_id
+ end
+ end
+
+ def self.down
+ change_table :orders do |t|
+ t.remove :bill_address_id
+ t.remove :ship_address_id
+ end
+ end
+end
diff --git a/spec/test_app/db/migrate/20100813185745_payment_total_for_orders.rb b/spec/test_app/db/migrate/20100813185745_payment_total_for_orders.rb
new file mode 100644
index 0000000..3a89bd0
--- /dev/null
+++ b/spec/test_app/db/migrate/20100813185745_payment_total_for_orders.rb
@@ -0,0 +1,9 @@
+class PaymentTotalForOrders < ActiveRecord::Migration
+ def self.up
+ add_column :orders, :payment_total, :decimal, :precision => 8, :scale => 2, :default => 0.0
+ end
+
+ def self.down
+ remove_column :orders, :payment_total
+ end
+end
diff --git a/spec/test_app/db/migrate/20100816212146_shipping_method_id_for_orders.rb b/spec/test_app/db/migrate/20100816212146_shipping_method_id_for_orders.rb
new file mode 100644
index 0000000..f972985
--- /dev/null
+++ b/spec/test_app/db/migrate/20100816212146_shipping_method_id_for_orders.rb
@@ -0,0 +1,9 @@
+class ShippingMethodIdForOrders < ActiveRecord::Migration
+ def self.up
+ add_column :orders, :shipping_method_id, :integer
+ end
+
+ def self.down
+ remove_column :orders, :shipping_method_id
+ end
+end
diff --git a/spec/test_app/db/migrate/20100817152723_add_shipment_and_payment_state.rb b/spec/test_app/db/migrate/20100817152723_add_shipment_and_payment_state.rb
new file mode 100644
index 0000000..60f2992
--- /dev/null
+++ b/spec/test_app/db/migrate/20100817152723_add_shipment_and_payment_state.rb
@@ -0,0 +1,15 @@
+class AddShipmentAndPaymentState < ActiveRecord::Migration
+ def self.up
+ change_table :orders do |t|
+ t.string :shipment_state
+ t.string :payment_state
+ end
+ end
+
+ def self.down
+ change_table :orders do |t|
+ t.remove :shipment_state
+ t.remove :payment_state
+ end
+ end
+end
diff --git a/spec/test_app/db/migrate/20100819170125_refactor_adjustments.rb b/spec/test_app/db/migrate/20100819170125_refactor_adjustments.rb
new file mode 100644
index 0000000..3a8d28b
--- /dev/null
+++ b/spec/test_app/db/migrate/20100819170125_refactor_adjustments.rb
@@ -0,0 +1,19 @@
+class RefactorAdjustments < ActiveRecord::Migration
+ def self.up
+ change_table :adjustments do |t|
+ t.boolean :mandatory
+ t.boolean :frozen
+ t.rename :adjustment_source_id, :source_id
+ t.rename :adjustment_source_type, :source_type
+ t.references :originator
+ t.string :originator_type
+ t.remove :type
+ t.rename :description, :label
+ t.remove :position
+ end
+ end
+
+ def self.down
+ # no going back
+ end
+end
diff --git a/spec/test_app/db/migrate/20100820135707_response_code_and_avs_response_for_payments.rb b/spec/test_app/db/migrate/20100820135707_response_code_and_avs_response_for_payments.rb
new file mode 100644
index 0000000..d504381
--- /dev/null
+++ b/spec/test_app/db/migrate/20100820135707_response_code_and_avs_response_for_payments.rb
@@ -0,0 +1,11 @@
+class ResponseCodeAndAvsResponseForPayments < ActiveRecord::Migration
+ def self.up
+ add_column :payments, :response_code, :string
+ add_column :payments, :avs_response, :string
+ end
+
+ def self.down
+ remove_column :payments, :response_code
+ remove_column :payments, :avs_response
+ end
+end
diff --git a/spec/test_app/db/migrate/20100901171814_change_guest_flag_to_anonymous.rb b/spec/test_app/db/migrate/20100901171814_change_guest_flag_to_anonymous.rb
new file mode 100644
index 0000000..0fd9378
--- /dev/null
+++ b/spec/test_app/db/migrate/20100901171814_change_guest_flag_to_anonymous.rb
@@ -0,0 +1,13 @@
+class ChangeGuestFlagToAnonymous < ActiveRecord::Migration
+ def self.up
+ change_table :users do |t|
+ t.rename :guest, :anonymous
+ end
+ end
+
+ def self.down
+ change_table :users do |t|
+ t.rename :anonymous, :guest
+ end
+ end
+end
diff --git a/spec/test_app/db/migrate/20100903203949_email_for_orders.rb b/spec/test_app/db/migrate/20100903203949_email_for_orders.rb
new file mode 100644
index 0000000..c0d5bef
--- /dev/null
+++ b/spec/test_app/db/migrate/20100903203949_email_for_orders.rb
@@ -0,0 +1,9 @@
+class EmailForOrders < ActiveRecord::Migration
+ def self.up
+ add_column :orders, :email, :string
+ end
+
+ def self.down
+ remove_column :orders, :email
+ end
+end
diff --git a/spec/test_app/db/migrate/20100923162011_create_mail_methods.rb b/spec/test_app/db/migrate/20100923162011_create_mail_methods.rb
new file mode 100644
index 0000000..e4141cc
--- /dev/null
+++ b/spec/test_app/db/migrate/20100923162011_create_mail_methods.rb
@@ -0,0 +1,12 @@
+class CreateMailMethods < ActiveRecord::Migration
+ def self.up
+ create_table :mail_methods do |t|
+ t.string :environment
+ t.boolean :active, :default => true
+ t.timestamps
+ end
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20100929151905_rename_frozen_to_locked.rb b/spec/test_app/db/migrate/20100929151905_rename_frozen_to_locked.rb
new file mode 100644
index 0000000..b78b4f7
--- /dev/null
+++ b/spec/test_app/db/migrate/20100929151905_rename_frozen_to_locked.rb
@@ -0,0 +1,8 @@
+class RenameFrozenToLocked < ActiveRecord::Migration
+ def self.up
+ rename_column :adjustments, :frozen, :locked
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101008190536_move_special_instructions_to_orders.rb b/spec/test_app/db/migrate/20101008190536_move_special_instructions_to_orders.rb
new file mode 100644
index 0000000..fcd04c5
--- /dev/null
+++ b/spec/test_app/db/migrate/20101008190536_move_special_instructions_to_orders.rb
@@ -0,0 +1,11 @@
+class MoveSpecialInstructionsToOrders < ActiveRecord::Migration
+ def self.up
+ add_column :orders, :special_instructions, :text
+
+ ActiveRecord::Base.connection.execute("update orders set special_instructions = (select special_instructions from checkouts where order_id = orders.id)")
+ end
+
+ def self.down
+ remove_column :orders, :special_instructions, :text
+ end
+end
diff --git a/spec/test_app/db/migrate/20101026184700_create_log_entries.rb b/spec/test_app/db/migrate/20101026184700_create_log_entries.rb
new file mode 100644
index 0000000..d135d97
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184700_create_log_entries.rb
@@ -0,0 +1,15 @@
+class CreateLogEntries < ActiveRecord::Migration
+ def self.up
+ create_table :log_entries do |t|
+ t.integer :source_id
+ t.string :source_type
+ t.text :details
+
+ t.timestamps
+ end
+ end
+
+ def self.down
+ drop_table :log_entries
+ end
+end
diff --git a/spec/test_app/db/migrate/20101026184714_migrate_transactions_to_payment_state.rb b/spec/test_app/db/migrate/20101026184714_migrate_transactions_to_payment_state.rb
new file mode 100644
index 0000000..f5bd5ea
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184714_migrate_transactions_to_payment_state.rb
@@ -0,0 +1,94 @@
+class Transaction < ActiveRecord::Base; end
+class CreditcardTxn < Transaction; end
+
+class MigrateTransactionsToPaymentState < ActiveRecord::Migration
+
+ AUTHORIZED=1
+ COMPLETED=2
+ PURCHASED=3
+ VOIDED = 4
+ CREDITED =5
+
+ PAYMENT_COMPLETE = 'completed'
+ PAYMENT_VOID = 'void'
+ PAYMENT_PENDING = 'pending'
+
+ def self.up
+ migrate_authorized_only_transactions
+ migrate_voided_transactions
+ migrate_completed_transactions
+ migrate_purchased_transactions
+ migrate_credited_transactions
+ end
+
+ def self.migrate_credited_transactions
+ credited = Transaction.find_by_sql("select * from transactions where txn_type = #{CREDITED}")
+ credited.each do |tx|
+ payment = Payment.find(tx)
+ order = payment.order
+ order.create_payment(
+ :amount=>tx.amount,
+ :source_id=>payment.source_id, :source_type=>'Creditcard',
+ :payment_method_id=>payment.payment_method_id, :state=>PAYMENT_COMPLETE,
+ :avs_response=>tx.avs_response, :response_code=>tx.response_code
+ )
+ end
+ credited.each{|rec| rec.destroy }
+ end
+
+ def self.migrate_voided_transactions
+ voided = Transaction.find_by_sql("select * from transactions where txn_type=#{VOIDED}")
+ voided.each do |tx|
+ update_payment(tx, PAYMENT_VOID)
+ end
+ unless voided.empty?
+ all_but_credited = [AUTHORIZED, COMPLETED, PURCHASED, VOIDED]
+ voided_and_subsequent_transactions = Transaction.find_by_sql("select * from transactions where payment_id in (#{voided.map(&:payment_id).join(',')}) and txn_type in (#{all_but_credited.join(',')})")
+ voided_and_subsequent_transactions.each{|rec| rec.destroy }
+ end
+ end
+
+ def self.migrate_purchased_transactions
+ migrate_transactions(PURCHASED)
+ end
+
+ def self.migrate_completed_transactions
+ migrate_transactions(COMPLETED)
+ end
+
+ def self.migrate_transactions(type)
+ txs = Transaction.find_by_sql("select * from transactions where txn_type = #{type}")
+ txs.each do |tx|
+ update_payment(tx, PAYMENT_COMPLETE)
+ end
+ txs.each{|rec| rec.destroy }
+ end
+
+ def self.migrate_authorized_only_transactions
+ if (ActiveRecord::Base.connection.adapter_name == 'PostgreSQL')
+ group_by_clause = "group by transactions." + Transaction.column_names.join(", transactions.")
+ else
+ group_by_clause = "group by payment_id"
+ end
+ authorized_only = Transaction.find_by_sql("select * from transactions #{group_by_clause} having count(payment_id) = 1 and txn_type = #{AUTHORIZED}")
+ authorized_only.each do |tx|
+ update_payment(tx, PAYMENT_PENDING)
+ end
+ authorized_only.each {|rec| rec.destroy }
+ end
+
+ def self.update_payment(tx, state)
+ payment = Payment.find(tx.payment_id)
+ payment.update_attributes_without_callbacks({
+ :state => state,
+ :source_type => 'Creditcard',
+ :amount => tx.amount,
+ :response_code => tx.response_code,
+ :avs_response => tx.avs_response
+ })
+ end
+
+ def self.down
+ end
+end
+
diff --git a/spec/test_app/db/migrate/20101026184746_delete_in_progress_orders.rb b/spec/test_app/db/migrate/20101026184746_delete_in_progress_orders.rb
new file mode 100644
index 0000000..6f4b461
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184746_delete_in_progress_orders.rb
@@ -0,0 +1,18 @@
+class DeleteInProgressOrders < ActiveRecord::Migration
+ def self.up
+ Order.delete_all(:state=>'in_progress')
+ delete_orphans('adjustments')
+ delete_orphans('checkouts')
+ delete_orphans('shipments')
+ delete_orphans('payments')
+ delete_orphans('line_items')
+ delete_orphans('inventory_units')
+ end
+
+ def self.delete_orphans(table_name)
+ execute("delete from #{table_name} where order_id not in (select id from orders)")
+ end
+
+ def self.down
+ end
+end
\ No newline at end of file
diff --git a/spec/test_app/db/migrate/20101026184808_migrate_checkout_to_orders.rb b/spec/test_app/db/migrate/20101026184808_migrate_checkout_to_orders.rb
new file mode 100644
index 0000000..d55e3fe
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184808_migrate_checkout_to_orders.rb
@@ -0,0 +1,27 @@
+class MigrateCheckoutToOrders < ActiveRecord::Migration
+
+ class Checkout < ActiveRecord::Base
+ end
+
+ def self.up
+ Order.find_each do |order|
+ checkout = update_order(order)
+ checkout.destroy if checkout
+ end
+ end
+
+ def self.update_order(order)
+ checkout = Checkout.find_by_order_id(order.id)
+ if checkout
+ order.update_attributes_without_callbacks({
+ :email => checkout.email,
+ :bill_address_id => checkout.bill_address_id,
+ :ship_address_id => checkout.ship_address_id
+ })
+ end
+ checkout
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101026184833_migrate_adjustments.rb b/spec/test_app/db/migrate/20101026184833_migrate_adjustments.rb
new file mode 100644
index 0000000..d5ded8e
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184833_migrate_adjustments.rb
@@ -0,0 +1,9 @@
+class MigrateAdjustments < ActiveRecord::Migration
+ def self.up
+ execute("update adjustments set amount = 0.0 where amount is null")
+ execute("update adjustments set mandatory = 'true', locked = 'true'")
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101026184855_remove_shipped_state.rb b/spec/test_app/db/migrate/20101026184855_remove_shipped_state.rb
new file mode 100644
index 0000000..377cf0a
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184855_remove_shipped_state.rb
@@ -0,0 +1,14 @@
+class RemoveShippedState < ActiveRecord::Migration
+ def self.up
+ Order.where(:state => 'shipped').each do |order|
+ order.update_attribute_without_callbacks("state", "complete")
+ order.shipments.each do |shipment|
+ shipment.state = 'shipped'
+ shipment.save
+ end
+ end
+ end
+
+ def self.down
+ end
+end
\ No newline at end of file
diff --git a/spec/test_app/db/migrate/20101026184916_prevent_nil_payment_total.rb b/spec/test_app/db/migrate/20101026184916_prevent_nil_payment_total.rb
new file mode 100644
index 0000000..d1b9d8a
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184916_prevent_nil_payment_total.rb
@@ -0,0 +1,8 @@
+class PreventNilPaymentTotal < ActiveRecord::Migration
+ def self.up
+ execute("update orders set payment_total = 0.0 where payment_total is null")
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101026184932_prevent_nil_email.rb b/spec/test_app/db/migrate/20101026184932_prevent_nil_email.rb
new file mode 100644
index 0000000..bf11421
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184932_prevent_nil_email.rb
@@ -0,0 +1,9 @@
+class PreventNilEmail < ActiveRecord::Migration
+ def self.up
+ execute("update orders set email = 'guest@example.com' where email is null")
+ execute("update orders set email = 'guest@example.com' where email = ''")
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101026184959_generate_anonymous_users.rb b/spec/test_app/db/migrate/20101026184959_generate_anonymous_users.rb
new file mode 100644
index 0000000..f87e5fa
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026184959_generate_anonymous_users.rb
@@ -0,0 +1,14 @@
+class GenerateAnonymousUsers < ActiveRecord::Migration
+ def self.up
+ User.reset_column_information
+ Order.where(:user_id => nil).each do |order|
+ user = User.anonymous!
+ user.email ||= order.email
+ order.user = user
+ order.save!
+ end
+ end
+
+ def self.down
+ end
+end
\ No newline at end of file
diff --git a/spec/test_app/db/migrate/20101026185022_update_order_state.rb b/spec/test_app/db/migrate/20101026185022_update_order_state.rb
new file mode 100644
index 0000000..1eff98e
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026185022_update_order_state.rb
@@ -0,0 +1,8 @@
+class UpdateOrderState < ActiveRecord::Migration
+ def self.up
+ Order.all.map(&:update!)
+ end
+
+ def self.down
+ end
+end
\ No newline at end of file
diff --git a/spec/test_app/db/migrate/20101026192225_cleanup_legacy_tables.rb b/spec/test_app/db/migrate/20101026192225_cleanup_legacy_tables.rb
new file mode 100644
index 0000000..3984afb
--- /dev/null
+++ b/spec/test_app/db/migrate/20101026192225_cleanup_legacy_tables.rb
@@ -0,0 +1,11 @@
+class CleanupLegacyTables < ActiveRecord::Migration
+ def self.up
+ drop_table :checkouts
+ drop_table :transactions
+ drop_table :open_id_authentication_associations
+ drop_table :open_id_authentication_nonces
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101028151745_remove_number_and_cvv_from_credicard.rb b/spec/test_app/db/migrate/20101028151745_remove_number_and_cvv_from_credicard.rb
new file mode 100644
index 0000000..d71904b
--- /dev/null
+++ b/spec/test_app/db/migrate/20101028151745_remove_number_and_cvv_from_credicard.rb
@@ -0,0 +1,9 @@
+class RemoveNumberAndCvvFromCredicard < ActiveRecord::Migration
+ def self.up
+ remove_column :creditcards, :number
+ remove_column :creditcards, :verification_value
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101103212716_drop_anonymous_field_for_user.rb b/spec/test_app/db/migrate/20101103212716_drop_anonymous_field_for_user.rb
new file mode 100644
index 0000000..588cf70
--- /dev/null
+++ b/spec/test_app/db/migrate/20101103212716_drop_anonymous_field_for_user.rb
@@ -0,0 +1,8 @@
+class DropAnonymousFieldForUser < ActiveRecord::Migration
+ def self.up
+ remove_column :users, :anonymous
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101111133551_renamed_rma_cancelled_state.rb b/spec/test_app/db/migrate/20101111133551_renamed_rma_cancelled_state.rb
new file mode 100644
index 0000000..de97224
--- /dev/null
+++ b/spec/test_app/db/migrate/20101111133551_renamed_rma_cancelled_state.rb
@@ -0,0 +1,10 @@
+class RenamedRmaCancelledState < ActiveRecord::Migration
+ def self.up
+ ReturnAuthorization.where(:state => 'cancelled').each do |rma|
+ rma.update_attribute_without_callbacks(:state, 'canceled')
+ end
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/migrate/20101117031806_fix_problematic_index_names.rb b/spec/test_app/db/migrate/20101117031806_fix_problematic_index_names.rb
new file mode 100644
index 0000000..bca6762
--- /dev/null
+++ b/spec/test_app/db/migrate/20101117031806_fix_problematic_index_names.rb
@@ -0,0 +1,13 @@
+class FixProblematicIndexNames < ActiveRecord::Migration
+ def self.up
+ begin
+ remove_index("preferences", "index_preferences_on_owner_and_attribute_and_preference")
+ rescue ArgumentError
+ # ignore - already remove then
+ end
+ add_index "preferences", ["owner_id", "owner_type", "name", "group_id", "group_type"], :name => "ix_prefs_on_owner_attr_pref", :unique => true
+ end
+
+ def self.down
+ end
+end
diff --git a/spec/test_app/db/sample/users.rb b/spec/test_app/db/sample/users.rb
new file mode 100644
index 0000000..3e06b47
--- /dev/null
+++ b/spec/test_app/db/sample/users.rb
@@ -0,0 +1,53 @@
+# see last line where we create an admin if there is none, asking for email and password
+def prompt_for_admin_password
+ password = ask('Password [spree123]: ', String) do |q|
+ q.echo = false
+ q.validate = /^(|.{5,40})$/
+ q.responses[:not_valid] = "Invalid password. Must be at least 5 characters long."
+ q.whitespace = :strip
+ end
+ password = "spree123" if password.blank?
+ password
+end
+
+def prompt_for_admin_email
+ email = ask('Email [spree@example.com]: ', String) do |q|
+ q.echo = true
+ q.whitespace = :strip
+ end
+ email = "spree@example.com" if email.blank?
+ email
+end
+
+def create_admin_user
+ if ENV['AUTO_ACCEPT']
+ password = "spree"
+ email = "spree@example.com"
+ else
+ require 'highline/import'
+ puts "Create the admin user (press enter for defaults)."
+ #name = prompt_for_admin_name unless name
+ email = prompt_for_admin_email
+ password = prompt_for_admin_password
+ end
+ attributes = {
+ :password => password,
+ :password_confirmation => password,
+ :email => email,
+ :login => email
+ }
+
+ load 'user.rb'
+
+ if User.find_by_email(email)
+ say "\nWARNING: There is already a user with the email: #{email}, so no account changes were made. If you wish to create an additional admin user, please run rake db:admin:create again with a different email.\n\n"
+ else
+ admin = User.create(attributes)
+ # create an admin role and and assign the admin user to that role
+ role = Role.find_or_create_by_name "admin"
+ admin.roles << role
+ admin.save
+ end
+end
+
+create_admin_user if User.where("roles.name" => 'admin').includes(:roles).empty?
\ No newline at end of file
diff --git a/spec/test_app/db/schema.rb b/spec/test_app/db/schema.rb
new file mode 100644
index 0000000..a63bc8a
--- /dev/null
+++ b/spec/test_app/db/schema.rb
@@ -0,0 +1,543 @@
+# This file is auto-generated from the current state of the database. Instead
+# of editing this file, please use the migrations feature of Active Record to
+# incrementally modify your database, and then regenerate this schema definition.
+#
+# Note that this schema.rb definition is the authoritative source for your
+# database schema. If you need to create the application database on another
+# system, you should be using db:schema:load, not running all the migrations
+# from scratch. The latter is a flawed and unsustainable approach (the more migrations
+# you'll amass, the slower it'll run and the greater likelihood for issues).
+#
+# It's strongly recommended to check this file into your version control system.
+
+ActiveRecord::Schema.define(:version => 20101117031806) do
+
+ create_table "addresses", :force => true do |t|
+ t.string "firstname"
+ t.string "lastname"
+ t.string "address1"
+ t.string "address2"
+ t.string "city"
+ t.integer "state_id"
+ t.string "zipcode"
+ t.integer "country_id"
+ t.string "phone"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "state_name"
+ t.string "alternative_phone"
+ end
+
+ add_index "addresses", ["firstname"], :name => "index_addresses_on_firstname"
+ add_index "addresses", ["lastname"], :name => "index_addresses_on_lastname"
+
+ create_table "adjustments", :force => true do |t|
+ t.integer "order_id"
+ t.decimal "amount"
+ t.string "label"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "source_id"
+ t.string "source_type"
+ t.boolean "mandatory"
+ t.boolean "locked"
+ t.integer "originator_id"
+ t.string "originator_type"
+ end
+
+ add_index "adjustments", ["order_id"], :name => "index_adjustments_on_order_id"
+
+ create_table "assets", :force => true do |t|
+ t.integer "viewable_id"
+ t.string "viewable_type", :limit => 50
+ t.string "attachment_content_type"
+ t.string "attachment_file_name"
+ t.integer "attachment_size"
+ t.integer "position"
+ t.string "type", :limit => 75
+ t.datetime "attachment_updated_at"
+ t.integer "attachment_width"
+ t.integer "attachment_height"
+ t.text "alt"
+ end
+
+ add_index "assets", ["viewable_id"], :name => "index_assets_on_viewable_id"
+ add_index "assets", ["viewable_type", "type"], :name => "index_assets_on_viewable_type_and_type"
+
+ create_table "calculators", :force => true do |t|
+ t.string "type"
+ t.integer "calculable_id", :null => false
+ t.string "calculable_type", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "configurations", :force => true do |t|
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "type", :limit => 50
+ end
+
+ add_index "configurations", ["name", "type"], :name => "index_configurations_on_name_and_type"
+
+ create_table "countries", :force => true do |t|
+ t.string "iso_name"
+ t.string "iso"
+ t.string "name"
+ t.string "iso3"
+ t.integer "numcode"
+ end
+
+ create_table "coupons", :force => true do |t|
+ t.string "code"
+ t.string "description"
+ t.integer "usage_limit"
+ t.boolean "combine"
+ t.datetime "expires_at"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.datetime "starts_at"
+ end
+
+ create_table "creditcards", :force => true do |t|
+ t.string "month"
+ t.string "year"
+ t.string "cc_type"
+ t.string "last_digits"
+ t.string "first_name"
+ t.string "last_name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "start_month"
+ t.string "start_year"
+ t.string "issue_number"
+ t.integer "address_id"
+ t.string "gateway_customer_profile_id"
+ t.string "gateway_payment_profile_id"
+ end
+
+ create_table "gateways", :force => true do |t|
+ t.string "type"
+ t.string "name"
+ t.text "description"
+ t.boolean "active", :default => true
+ t.string "environment", :default => "development"
+ t.string "server", :default => "test"
+ t.boolean "test_mode", :default => true
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "inventory_units", :force => true do |t|
+ t.integer "variant_id"
+ t.integer "order_id"
+ t.string "state"
+ t.integer "lock_version", :default => 0
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "shipment_id"
+ t.integer "return_authorization_id"
+ end
+
+ add_index "inventory_units", ["order_id"], :name => "index_inventory_units_on_order_id"
+ add_index "inventory_units", ["shipment_id"], :name => "index_inventory_units_on_shipment_id"
+ add_index "inventory_units", ["variant_id"], :name => "index_inventory_units_on_variant_id"
+
+ create_table "line_items", :force => true do |t|
+ t.integer "order_id"
+ t.integer "variant_id"
+ t.integer "quantity", :null => false
+ t.decimal "price", :precision => 8, :scale => 2, :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "line_items", ["order_id"], :name => "index_line_items_on_order_id"
+ add_index "line_items", ["variant_id"], :name => "index_line_items_on_variant_id"
+
+ create_table "log_entries", :force => true do |t|
+ t.integer "source_id"
+ t.string "source_type"
+ t.text "details"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "mail_methods", :force => true do |t|
+ t.string "environment"
+ t.boolean "active", :default => true
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "option_types", :force => true do |t|
+ t.string "name", :limit => 100
+ t.string "presentation", :limit => 100
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "option_types_prototypes", :id => false, :force => true do |t|
+ t.integer "prototype_id"
+ t.integer "option_type_id"
+ end
+
+ create_table "option_values", :force => true do |t|
+ t.integer "option_type_id"
+ t.string "name"
+ t.integer "position"
+ t.string "presentation"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "option_values_variants", :id => false, :force => true do |t|
+ t.integer "variant_id"
+ t.integer "option_value_id"
+ end
+
+ add_index "option_values_variants", ["variant_id", "option_value_id"], :name => "index_option_values_variants_on_variant_id_and_option_value_id"
+ add_index "option_values_variants", ["variant_id"], :name => "index_option_values_variants_on_variant_id"
+
+ create_table "orders", :force => true do |t|
+ t.integer "user_id"
+ t.string "number", :limit => 15
+ t.decimal "item_total", :default => 0.0, :null => false
+ t.decimal "total", :default => 0.0, :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "state"
+ t.decimal "adjustment_total", :default => 0.0, :null => false
+ t.decimal "credit_total", :default => 0.0, :null => false
+ t.datetime "completed_at"
+ t.integer "bill_address_id"
+ t.integer "ship_address_id"
+ t.decimal "payment_total", :precision => 8, :scale => 2, :default => 0.0
+ t.integer "shipping_method_id"
+ t.string "shipment_state"
+ t.string "payment_state"
+ t.string "email"
+ t.text "special_instructions"
+ end
+
+ add_index "orders", ["number"], :name => "index_orders_on_number"
+
+ create_table "payment_methods", :force => true do |t|
+ t.string "type"
+ t.string "name"
+ t.text "description"
+ t.boolean "active", :default => true
+ t.string "environment", :default => "development"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.datetime "deleted_at"
+ t.string "display_on"
+ end
+
+ create_table "payments", :force => true do |t|
+ t.integer "order_id"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.decimal "amount", :default => 0.0, :null => false
+ t.integer "source_id"
+ t.string "source_type"
+ t.integer "payment_method_id"
+ t.string "state"
+ t.string "response_code"
+ t.string "avs_response"
+ end
+
+ create_table "preferences", :force => true do |t|
+ t.string "name", :limit => 100, :null => false
+ t.integer "owner_id", :limit => 30, :null => false
+ t.string "owner_type", :limit => 50, :null => false
+ t.integer "group_id"
+ t.string "group_type", :limit => 50
+ t.text "value", :limit => 255
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "preferences", ["owner_id", "owner_type", "name", "group_id", "group_type"], :name => "ix_prefs_on_owner_attr_pref", :unique => true
+
+ create_table "product_groups", :force => true do |t|
+ t.string "name"
+ t.string "permalink"
+ t.string "order"
+ end
+
+ add_index "product_groups", ["name"], :name => "index_product_groups_on_name"
+ add_index "product_groups", ["permalink"], :name => "index_product_groups_on_permalink"
+
+ create_table "product_groups_products", :id => false, :force => true do |t|
+ t.integer "product_id"
+ t.integer "product_group_id"
+ end
+
+ create_table "product_option_types", :force => true do |t|
+ t.integer "product_id"
+ t.integer "option_type_id"
+ t.integer "position"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "product_properties", :force => true do |t|
+ t.integer "product_id"
+ t.integer "property_id"
+ t.string "value"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ add_index "product_properties", ["product_id"], :name => "index_product_properties_on_product_id"
+
+ create_table "product_scopes", :force => true do |t|
+ t.integer "product_group_id"
+ t.string "name"
+ t.text "arguments"
+ end
+
+ add_index "product_scopes", ["name"], :name => "index_product_scopes_on_name"
+ add_index "product_scopes", ["product_group_id"], :name => "index_product_scopes_on_product_group_id"
+
+ create_table "products", :force => true do |t|
+ t.string "name", :default => "", :null => false
+ t.text "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "permalink"
+ t.datetime "available_on"
+ t.integer "tax_category_id"
+ t.integer "shipping_category_id"
+ t.datetime "deleted_at"
+ t.string "meta_description"
+ t.string "meta_keywords"
+ t.integer "count_on_hand", :default => 0, :null => false
+ end
+
+ add_index "products", ["available_on"], :name => "index_products_on_available_on"
+ add_index "products", ["deleted_at"], :name => "index_products_on_deleted_at"
+ add_index "products", ["name"], :name => "index_products_on_name"
+ add_index "products", ["permalink"], :name => "index_products_on_permalink"
+
+ create_table "products_taxons", :id => false, :force => true do |t|
+ t.integer "product_id"
+ t.integer "taxon_id"
+ end
+
+ add_index "products_taxons", ["product_id"], :name => "index_products_taxons_on_product_id"
+ add_index "products_taxons", ["taxon_id"], :name => "index_products_taxons_on_taxon_id"
+
+ create_table "properties", :force => true do |t|
+ t.string "name"
+ t.string "presentation", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "properties_prototypes", :id => false, :force => true do |t|
+ t.integer "prototype_id"
+ t.integer "property_id"
+ end
+
+ create_table "prototypes", :force => true do |t|
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "question_categories", :force => true do |t|
+ t.string "name"
+ t.integer "position"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "questions", :force => true do |t|
+ t.integer "question_category_id"
+ t.text "question"
+ t.text "answer"
+ t.integer "position"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "return_authorizations", :force => true do |t|
+ t.string "number"
+ t.decimal "amount", :precision => 8, :scale => 2, :default => 0.0, :null => false
+ t.integer "order_id"
+ t.text "reason"
+ t.string "state"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "roles", :force => true do |t|
+ t.string "name"
+ end
+
+ create_table "roles_users", :id => false, :force => true do |t|
+ t.integer "role_id"
+ t.integer "user_id"
+ end
+
+ add_index "roles_users", ["role_id"], :name => "index_roles_users_on_role_id"
+ add_index "roles_users", ["user_id"], :name => "index_roles_users_on_user_id"
+
+ create_table "shipments", :force => true do |t|
+ t.integer "order_id"
+ t.integer "shipping_method_id"
+ t.string "tracking"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "number"
+ t.decimal "cost", :precision => 8, :scale => 2
+ t.datetime "shipped_at"
+ t.integer "address_id"
+ t.string "state"
+ end
+
+ add_index "shipments", ["number"], :name => "index_shipments_on_number"
+
+ create_table "shipping_categories", :force => true do |t|
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "shipping_methods", :force => true do |t|
+ t.integer "zone_id"
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "display_on"
+ end
+
+ create_table "state_events", :force => true do |t|
+ t.integer "stateful_id"
+ t.integer "user_id"
+ t.string "name"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "previous_state"
+ t.string "stateful_type"
+ end
+
+ create_table "states", :force => true do |t|
+ t.string "name"
+ t.string "abbr"
+ t.integer "country_id"
+ end
+
+ create_table "tax_categories", :force => true do |t|
+ t.string "name"
+ t.string "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.boolean "is_default", :default => false
+ end
+
+ create_table "tax_rates", :force => true do |t|
+ t.integer "zone_id"
+ t.decimal "amount", :precision => 8, :scale => 4
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.integer "tax_category_id"
+ end
+
+ create_table "taxonomies", :force => true do |t|
+ t.string "name", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "taxons", :force => true do |t|
+ t.integer "taxonomy_id", :null => false
+ t.integer "parent_id"
+ t.integer "position", :default => 0
+ t.string "name", :null => false
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "permalink"
+ t.integer "lft"
+ t.integer "rgt"
+ t.string "icon_file_name"
+ t.string "icon_content_type"
+ t.integer "icon_file_size"
+ t.datetime "icon_updated_at"
+ t.text "description"
+ end
+
+ add_index "taxons", ["parent_id"], :name => "index_taxons_on_parent_id"
+ add_index "taxons", ["permalink"], :name => "index_taxons_on_permalink"
+ add_index "taxons", ["taxonomy_id"], :name => "index_taxons_on_taxonomy_id"
+
+ create_table "trackers", :force => true do |t|
+ t.string "environment"
+ t.string "analytics_id"
+ t.boolean "active", :default => true
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "users", :force => true do |t|
+ t.string "email"
+ t.string "crypted_password", :limit => 128
+ t.string "salt", :limit => 128
+ t.string "remember_token"
+ t.string "remember_token_expires_at"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ t.string "persistence_token"
+ t.string "single_access_token"
+ t.string "perishable_token"
+ t.integer "login_count", :default => 0, :null => false
+ t.integer "failed_login_count", :default => 0, :null => false
+ t.datetime "last_request_at"
+ t.datetime "current_login_at"
+ t.datetime "last_login_at"
+ t.string "current_login_ip"
+ t.string "last_login_ip"
+ t.string "login"
+ t.integer "ship_address_id"
+ t.integer "bill_address_id"
+ t.string "openid_identifier"
+ end
+
+ add_index "users", ["openid_identifier"], :name => "index_users_on_openid_identifier"
+ add_index "users", ["persistence_token"], :name => "index_users_on_persistence_token"
+
+ create_table "variants", :force => true do |t|
+ t.integer "product_id"
+ t.string "sku", :default => "", :null => false
+ t.decimal "price", :precision => 8, :scale => 2, :null => false
+ t.decimal "weight", :precision => 8, :scale => 2
+ t.decimal "height", :precision => 8, :scale => 2
+ t.decimal "width", :precision => 8, :scale => 2
+ t.decimal "depth", :precision => 8, :scale => 2
+ t.datetime "deleted_at"
+ t.boolean "is_master", :default => false
+ t.integer "count_on_hand", :default => 0, :null => false
+ t.decimal "cost_price", :precision => 8, :scale => 2
+ end
+
+ add_index "variants", ["product_id"], :name => "index_variants_on_product_id"
+
+ create_table "zone_members", :force => true do |t|
+ t.integer "zone_id"
+ t.integer "zoneable_id"
+ t.string "zoneable_type"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+ create_table "zones", :force => true do |t|
+ t.string "name"
+ t.string "description"
+ t.datetime "created_at"
+ t.datetime "updated_at"
+ end
+
+end
diff --git a/spec/test_app/db/seeds.rb b/spec/test_app/db/seeds.rb
new file mode 100644
index 0000000..3cc1fda
--- /dev/null
+++ b/spec/test_app/db/seeds.rb
@@ -0,0 +1,3 @@
+# Loads seed data out of default dir
+Rake::Task["db:load_dir"].invoke( "default" )
+puts "Default data has been loaded"
\ No newline at end of file
diff --git a/spec/test_app/db/test.sqlite3 b/spec/test_app/db/test.sqlite3
new file mode 100644
index 0000000..9fce6c5
Binary files /dev/null and b/spec/test_app/db/test.sqlite3 differ
diff --git a/spec/test_app/log/cucumber.log b/spec/test_app/log/cucumber.log
new file mode 100644
index 0000000..9e5a8b6
--- /dev/null
+++ b/spec/test_app/log/cucumber.log
@@ -0,0 +1,1309 @@
+ [1m[36mSQL (0.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m select sqlite_version(*)
+ [1m[36mSQL (30.0ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("schema_migrations")
+ [1m[36mSQL (22.2ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
+ [1m[35mSQL (0.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m SELECT "schema_migrations"."version" FROM "schema_migrations"
+Migrating to CreateQuestions (20090526213535)
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TABLE "questions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "question_category_id" integer, "question" text, "answer" text, "position" integer, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20090526213535')[0m
+Migrating to CreateQuestionCategories (20090526213550)
+ [1m[35mSQL (1.0ms)[0m CREATE TABLE "question_categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20090526213550')
+Migrating to SpreeZeroNineZero (20090823005402)
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.0ms)[0m CREATE TABLE "addresses" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "firstname" varchar(255), "lastname" varchar(255), "address1" varchar(255), "address2" varchar(255), "city" varchar(255), "state_id" integer, "zipcode" varchar(255), "country_id" integer, "phone" varchar(255), "created_at" datetime, "updated_at" datetime, "state_name" varchar(255), "alternative_phone" varchar(255))
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal(8,2) DEFAULT 0.0 NOT NULL, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255), "secondary_type" varchar(255))
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "assets" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "viewable_id" integer, "viewable_type" varchar(50), "attachment_content_type" varchar(255), "attachment_file_name" varchar(255), "attachment_size" integer, "position" integer, "type" varchar(75), "attachment_updated_at" datetime, "attachment_width" integer, "attachment_height" integer)
+ [1m[36mSQL (0.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "calculators" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "calculable_id" integer NOT NULL, "calculable_type" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "checkouts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "email" varchar(255), "ip_address" varchar(255), "special_instructions" text, "bill_address_id" integer, "completed_at" datetime, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "configurations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "type" varchar(50))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("configurations")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "index_configurations_on_name_and_type" ON "configurations" ("name", "type")
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "iso_name" varchar(255), "iso" varchar(255), "name" varchar(255), "iso3" varchar(255), "numcode" integer)
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "coupons" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "code" varchar(255), "description" varchar(255), "usage_limit" integer, "combine" boolean, "expires_at" datetime, "created_at" datetime, "updated_at" datetime, "starts_at" datetime)
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "creditcard_txns" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "creditcard_payment_id" integer, "amount" decimal(8,2) DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "display_number" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "checkout_id" integer)
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "gateway_configurations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "gateway_id" integer, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "gateway_option_values" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "gateway_configuration_id" integer, "gateway_option_id" integer, "value" text, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "gateway_options" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "description" text, "gateway_id" integer, "textarea" boolean DEFAULT 'f', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "gateways" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "clazz" varchar(255), "name" varchar(255), "description" text, "active" boolean, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "inventory_units" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "variant_id" integer, "order_id" integer, "state" varchar(255), "lock_version" integer DEFAULT 0, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "line_items" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "variant_id" integer, "quantity" integer NOT NULL, "price" decimal(8,2) NOT NULL, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("line_items")[0m
+ [1m[35mSQL (0.7ms)[0m CREATE INDEX "index_line_items_on_order_id" ON "line_items" ("order_id")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("line_items")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_line_items_on_order_id')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_line_items_on_variant_id" ON "line_items" ("variant_id")[0m
+ [1m[35mSQL (0.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "option_types" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(100), "presentation" varchar(100), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mCREATE TABLE "option_types_prototypes" ("prototype_id" integer, "option_type_id" integer) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "option_values" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "option_type_id" integer, "name" varchar(255), "position" integer, "presentation" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mCREATE TABLE "option_values_variants" ("variant_id" integer, "option_value_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("option_values_variants")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_option_values_variants_on_variant_id" ON "option_values_variants" ("variant_id")[0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "orders" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "number" varchar(15), "item_total" decimal(8,2) DEFAULT 0.0 NOT NULL, "total" decimal(8,2) DEFAULT 0.0 NOT NULL, "created_at" datetime, "updated_at" datetime, "state" varchar(255), "token" varchar(255), "adjustment_total" decimal(8,2) DEFAULT 0.0 NOT NULL, "credit_total" decimal(8,2) DEFAULT 0.0 NOT NULL) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("orders")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_orders_on_number" ON "orders" ("number")[0m
+ [1m[35mSQL (0.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal(8,2) DEFAULT 0.0 NOT NULL, "creditcard_id" integer, "type" varchar(255)) [0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "attribute" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("preferences")
+ [1m[36mSQL (0.6ms)[0m [1mCREATE UNIQUE INDEX "index_preferences_on_owner_and_attribute_and_preference" ON "preferences" ("owner_id", "owner_type", "attribute", "group_id", "group_type")[0m
+ [1m[35mSQL (0.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "product_option_types" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "product_id" integer, "option_type_id" integer, "position" integer, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (3.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "product_properties" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "product_id" integer, "property_id" integer, "value" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "products" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) DEFAULT '' NOT NULL, "description" text, "created_at" datetime, "updated_at" datetime, "permalink" varchar(255), "available_on" datetime, "tax_category_id" integer, "shipping_category_id" integer, "deleted_at" datetime, "meta_description" varchar(255), "meta_keywords" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("products")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_products_on_available_on" ON "products" ("available_on")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("products")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_on_available_on')[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "index_products_on_deleted_at" ON "products" ("deleted_at")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("products")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_products_on_deleted_at')
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_products_on_available_on')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_products_on_name" ON "products" ("name")
+ [1m[36mSQL (0.3ms)[0m [1mPRAGMA index_list("products")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_products_on_name')
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_products_on_deleted_at')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_products_on_available_on')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_products_on_permalink" ON "products" ("permalink")[0m
+ [1m[35mSQL (0.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mCREATE TABLE "products_taxons" ("product_id" integer, "taxon_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("products_taxons")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_products_taxons_on_product_id" ON "products_taxons" ("product_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("products_taxons")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_taxons_on_product_id')[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "index_products_taxons_on_taxon_id" ON "products_taxons" ("taxon_id")
+ [1m[36mSQL (0.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "properties" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "presentation" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "properties_prototypes" ("prototype_id" integer, "property_id" integer)
+ [1m[36mSQL (0.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "prototypes" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "roles" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255))
+ [1m[36mSQL (0.9ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "roles_users" ("role_id" integer, "user_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("roles_users")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_roles_users_on_role_id" ON "roles_users" ("role_id")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("roles_users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_roles_users_on_role_id')
+ [1m[36mSQL (0.7ms)[0m [1mCREATE INDEX "index_roles_users_on_user_id" ON "roles_users" ("user_id")[0m
+ [1m[35mSQL (0.9ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "shipments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "shipping_method_id" integer, "tracking" varchar(255), "created_at" datetime, "updated_at" datetime, "number" varchar(255), "cost" decimal(8,2), "shipped_at" datetime, "address_id" integer) [0m
+ [1m[35mSQL (0.9ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "shipping_categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.9ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "shipping_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "zone_id" integer, "name" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "state_events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "user_id" integer, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "previous_state" varchar(255)) [0m
+ [1m[35mSQL (0.9ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "states" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "abbr" varchar(255), "country_id" integer) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "tax_categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "description" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "tax_rates" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "zone_id" integer, "amount" decimal(8,4), "created_at" datetime, "updated_at" datetime, "tax_category_id" integer) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "taxonomies" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "taxons" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "taxonomy_id" integer NOT NULL, "parent_id" integer, "position" integer DEFAULT 0, "name" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime, "permalink" varchar(255)) [0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.9ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128) DEFAULT '' NOT NULL, "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer) [0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "variants" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "product_id" integer, "sku" varchar(255) DEFAULT '' NOT NULL, "price" decimal(8,2) NOT NULL, "weight" decimal(8,2), "height" decimal(8,2), "width" decimal(8,2), "depth" decimal(8,2), "deleted_at" datetime, "is_master" boolean DEFAULT 'f') [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("variants")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_variants_on_product_id" ON "variants" ("product_id")[0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "zone_members" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "zone_id" integer, "zoneable_id" integer, "zoneable_type" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "zones" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "description" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20090823005402')[0m
+Migrating to CreateIndexesForInventoryUnits (20090904192342)
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("inventory_units")
+ [1m[36mSQL (0.6ms)[0m [1mCREATE INDEX "index_inventory_units_on_variant_id" ON "inventory_units" ("variant_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("inventory_units")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_inventory_units_on_variant_id')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_inventory_units_on_order_id" ON "inventory_units" ("order_id")
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20090904192342')
+Migrating to AddCountOnHandToVariantsAndProducts (20090923100315)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "variants" ADD "count_on_hand" integer DEFAULT 0 NOT NULL[0m
+ [1m[35mSQL (1.7ms)[0m ALTER TABLE "products" ADD "count_on_hand" integer DEFAULT 0 NOT NULL
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mVariant Load (0.3ms)[0m SELECT "variants".* FROM "variants"
+ [1m[36mProduct Load (0.3ms)[0m [1mSELECT "products".* FROM "products"[0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20090923100315')[0m
+Migrating to ChangeTaxonsToNestedSet (20091007134354)
+ [1m[35mSQL (0.8ms)[0m ALTER TABLE "taxons" ADD "lft" integer
+ [1m[36mSQL (0.5ms)[0m [1mALTER TABLE "taxons" ADD "rgt" integer[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mProperty Load (0.2ms)[0m SELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mTaxon Load (0.3ms)[0m SELECT "taxons".* FROM "taxons" WHERE (parent_id IS NULL) ORDER BY position ASC
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091007134354')
+Migrating to MoveToConfigurableGateways (20091008091614)
+ [1m[36mSQL (0.6ms)[0m [1mDROP TABLE "gateways"[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "gateway_options"
+ [1m[36mSQL (0.4ms)[0m [1mDROP TABLE "gateway_option_values"[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "gateway_configurations"
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "gateways" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "server" varchar(255) DEFAULT 'test', "test_mode" boolean DEFAULT 't', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091008091614')
+Migrating to ProductGroupsAndScopes (20091012120519)
+ [1m[36mSQL (1.2ms)[0m [1mCREATE TABLE "product_groups" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "permalink" varchar(255), "order" varchar(255)) [0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "product_scopes" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "product_group_id" integer, "name" varchar(255), "arguments" text)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("product_groups")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_product_groups_on_name" ON "product_groups" ("name")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("product_groups")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_product_groups_on_name')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_product_groups_on_permalink" ON "product_groups" ("permalink")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("product_scopes")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_product_scopes_on_name" ON "product_scopes" ("name")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("product_scopes")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_product_scopes_on_name')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_product_scopes_on_product_group_id" ON "product_scopes" ("product_group_id")
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091012120519')
+Migrating to AddOpenIdAuthenticationTables (20091015110842)
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.9ms)[0m CREATE TABLE "open_id_authentication_associations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "issued" integer, "lifetime" integer, "handle" varchar(255), "assoc_type" varchar(255), "server_url" blob, "secret" blob)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "open_id_authentication_nonces" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "timestamp" integer NOT NULL, "server_url" varchar(255), "salt" varchar(255) NOT NULL)
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091015110842')
+Migrating to AddOpenidFieldToUsers (20091015153048)
+ [1m[36mSQL (0.8ms)[0m [1mALTER TABLE "users" ADD "openid_identifier" varchar(255)[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")[0m
+ [1m[35mSQL (0.8ms)[0m CREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128) DEFAULT '' NOT NULL, "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")
+ [1m[36mSQL (0.7ms)[0m [1mDROP TABLE "users"[0m
+ [1m[35mSQL (0.8ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128) DEFAULT '' NOT NULL, "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('temp_index_altered_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")
+ [1m[36mSQL (0.6ms)[0m [1mDROP TABLE "altered_users"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128) DEFAULT '' NOT NULL, "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "users"[0m
+ [1m[35mSQL (0.7ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('temp_index_altered_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "altered_users"[0m
+ [1m[35mSQL (1.5ms)[0m CREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")
+ [1m[36mSQL (0.4ms)[0m [1mDROP TABLE "users"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('temp_index_altered_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_users"[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091015153048')[0m
+Migrating to ChangePreferenceValueType (20091016174634)
+ [1m[35mSQL (0.4ms)[0m PRAGMA index_list("preferences")
+ [1m[36mSQL (0.3ms)[0m [1mPRAGMA index_info('index_preferences_on_owner_and_attribute_and_preference')[0m
+ [1m[35mSQL (0.5ms)[0m DROP INDEX "index_preferences_on_owner_and_attribute_and_preference"
+ [1m[36mSQL (2.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "attribute" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("preferences")
+ [1m[36mSQL (0.6ms)[0m [1mDROP TABLE "preferences"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "attribute" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" text(255), "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_preferences")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_preferences"
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.7ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091016174634')
+Migrating to CreateBillingIntegrations (20091017175558)
+ [1m[36mSQL (0.8ms)[0m [1mCREATE TABLE "billing_integrations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (2.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091017175558')[0m
+Migrating to ChargeRefactoring (20091021133257)
+ [1m[35mSQL (1.0ms)[0m ALTER TABLE "orders" ADD "completed_at" datetime
+ [1m[36mChargeRefactoring::Order Load (1.0ms)[0m [1mSELECT "orders".* FROM "orders"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_checkouts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "email" varchar(255), "ip_address" varchar(255), "special_instructions" text, "bill_address_id" integer, "completed_at" datetime, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("checkouts")[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "checkouts"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "checkouts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "email" varchar(255), "ip_address" varchar(255), "special_instructions" text, "bill_address_id" integer, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_checkouts")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_checkouts"[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal DEFAULT 0.0 NOT NULL, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255), "secondary_type" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("adjustments")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255), "secondary_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_adjustments"[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mUPDATE "adjustments" SET type = secondary_type [0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "adjustments" SET type = 'CouponCredit' WHERE (type = 'Credit')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255), "secondary_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "adjustments"[0m
+ [1m[35mSQL (3.1ms)[0m CREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_adjustments")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091021133257')
+Migrating to AddSomeIndexes (20091104151730)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("taxons")[0m
+ [1m[35mSQL (0.6ms)[0m CREATE INDEX "index_taxons_on_permalink" ON "taxons" ("permalink")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("taxons")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_taxons_on_permalink')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_taxons_on_parent_id" ON "taxons" ("parent_id")[0m
+ [1m[35mSQL (0.3ms)[0m PRAGMA index_list("taxons")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_taxons_on_parent_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_taxons_on_permalink')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_taxons_on_taxonomy_id" ON "taxons" ("taxonomy_id")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("assets")
+ [1m[36mSQL (0.5ms)[0m [1mCREATE INDEX "index_assets_on_viewable_id" ON "assets" ("viewable_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("assets")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_assets_on_viewable_id')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_assets_on_viewable_type_and_type" ON "assets" ("viewable_type", "type")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("product_properties")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_product_properties_on_product_id" ON "product_properties" ("product_id")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("option_values_variants")[0m
+ [1m[35mSQL (0.3ms)[0m PRAGMA index_info('index_option_values_variants_on_variant_id')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_option_values_variants_on_variant_id_and_option_value_id" ON "option_values_variants" ("variant_id", "option_value_id")[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091104151730')[0m
+Migrating to CheckoutStateMachine (20091126190904)
+ [1m[35mSQL (0.8ms)[0m ALTER TABLE "checkouts" ADD "state" varchar(255)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091126190904')
+Migrating to StateForShipments (20091209153045)
+ [1m[36mSQL (0.8ms)[0m [1mALTER TABLE "shipments" ADD "state" varchar(255)[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.8ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091209153045')[0m
+Migrating to MakeStateEventsPolymorphic (20091209202200)
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_state_events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "stateful_id" integer, "user_id" integer, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "previous_state" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("state_events")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "state_events"
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TABLE "state_events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "stateful_id" integer, "user_id" integer, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "previous_state" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_state_events")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_state_events"[0m
+ [1m[35mSQL (2.8ms)[0m ALTER TABLE "state_events" ADD "stateful_type" varchar(255)
+ [1m[36mSQL (0.2ms)[0m [1mUPDATE "state_events" SET "stateful_type" = 'Order' [0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091209202200')[0m
+Migrating to ShipAddressIdForCheckouts (20091211203813)
+ [1m[35mSQL (0.8ms)[0m ALTER TABLE "checkouts" ADD "ship_address_id" integer
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091211203813')
+Migrating to ShippingMethodIdForCheckouts (20091212161118)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "checkouts" ADD "shipping_method_id" integer[0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091212161118')[0m
+Migrating to CreditcardLastFourDigits (20091213222815)
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "checkout_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("creditcards")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "creditcards"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "checkout_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_creditcards")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_creditcards"[0m
+ [1m[35mCreditcardLastFourDigits::Creditcard Load (0.3ms)[0m SELECT "creditcards".* FROM "creditcards"
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091213222815')
+Migrating to PopulateLegacyShipmentState (20091214183826)
+ [1m[36mPopulateLegacyShipmentState::Shipment Load (0.4ms)[0m [1mSELECT "shipments".* FROM "shipments"[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091214183826')[0m
+Migrating to AddCostPrice (20100105090147)
+ [1m[35mSQL (1.0ms)[0m ALTER TABLE "variants" ADD "cost_price" decimal(8,2) DEFAULT NULL
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100105090147')
+Migrating to ShipmentIdForInventoryUnits (20100105132138)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "inventory_units" ADD "shipment_id" integer[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("inventory_units")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_inventory_units_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_inventory_units_on_variant_id')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_inventory_units_on_shipment_id" ON "inventory_units" ("shipment_id")[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mShipment Load (0.6ms)[0m [1mSELECT "shipments".* FROM "shipments"[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100105132138')[0m
+Migrating to CimFieldsForCreditcards (20100111205525)
+ [1m[35mSQL (1.1ms)[0m ALTER TABLE "creditcards" ADD "gateway_customer_profile_id" varchar(255)
+ [1m[36mSQL (0.6ms)[0m [1mALTER TABLE "creditcards" ADD "gateway_payment_profile_id" varchar(255)[0m
+ [1m[35mSQL (9.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100111205525')[0m
+Migrating to CreateReturnAuthorizations (20100112151511)
+ [1m[35mSQL (6.1ms)[0m CREATE TABLE "return_authorizations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" varchar(255), "amount" decimal(8,2) DEFAULT 0.0 NOT NULL, "order_id" integer, "reason" text, "state" varchar(255), "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100112151511')
+Migrating to AddReturnAuthorizationToInventoryUnits (20100113090919)
+ [1m[36mSQL (4.2ms)[0m [1mALTER TABLE "inventory_units" ADD "return_authorization_id" integer[0m
+ [1m[35mSQL (1.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100113090919')[0m
+Migrating to CreateTrackers (20100113203104)
+ [1m[35mSQL (0.8ms)[0m CREATE TABLE "trackers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "environment" varchar(255), "analytics_id" varchar(255), "active" boolean DEFAULT 't', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (2.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100113203104')
+Migrating to CreditcardIdForCreditcardTxns (20100121160010)
+ [1m[36mSQL (1.1ms)[0m [1mALTER TABLE "creditcard_txns" ADD "creditcard_id" integer[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100121160010')[0m
+Migrating to OriginalCreditcardTxnIdForCreditcardTxns (20100121183934)
+ [1m[35mSQL (1.1ms)[0m ALTER TABLE "creditcard_txns" ADD "original_creditcard_txn_id" integer
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100121183934')
+Migrating to AddTestModeToBillingIntegration (20100125145351)
+ [1m[36mSQL (1.1ms)[0m [1mALTER TABLE "billing_integrations" ADD "test_mode" boolean DEFAULT 't'[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "billing_integrations" ADD "server" varchar(255) DEFAULT 'test'
+ [1m[36mSQL (2.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100125145351')
+Migrating to CreateProductsProductGroups (20100126103714)
+ [1m[36mSQL (1.0ms)[0m [1mCREATE TABLE "product_groups_products" ("product_id" integer, "product_group_id" integer) [0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100126103714')[0m
+Migrating to CreatePaymentMethods (20100209025806)
+ [1m[35mSQL (0.9ms)[0m CREATE TABLE "payment_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100209025806')
+Migrating to PolymorphicPayments (20100209144531)
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "creditcard_id" integer, "type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.8ms)[0m [1mDROP TABLE "payments"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "creditcard_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payments")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_payments"
+ [1m[36mSQL (3.3ms)[0m [1mCREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "creditcard_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (1.2ms)[0m [1mDROP TABLE "payments"[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payments")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_payments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "payable_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.4ms)[0m [1mDROP TABLE "payments"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "payable_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payments")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_payments"
+ [1m[36mSQL (0.5ms)[0m [1mALTER TABLE "payments" ADD "payable_type" varchar(255)[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "payments" ADD "payment_method" varchar(255)
+ [1m[36mSQL (0.5ms)[0m [1mALTER TABLE "payments" ADD "source_id" integer[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "payments" ADD "source_type" varchar(255)
+ [1m[36mSQL (0.1ms)[0m [1mUPDATE payments SET payable_type = 'Order'[0m
+ [1m[35mCreditcard Load (0.3ms)[0m SELECT "creditcards".* FROM "creditcards"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "checkout_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("creditcards")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "creditcards"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_creditcards")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_creditcards"
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100209144531')
+Migrating to ChangePaymentsPaymentMethodToBelongsTo (20100213103131)
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "payable_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "payment_method" varchar(255), "source_id" integer, "source_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "payments"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "payable_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "source_id" integer, "source_type" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payments")[0m
+ [1m[35mSQL (0.2ms)[0m DROP TABLE "altered_payments"
+ [1m[36mSQL (0.5ms)[0m [1mALTER TABLE "payments" ADD "payment_method_id" integer[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100213103131')[0m
+Migrating to AssignCreditcardTxnsToPayment (20100214212536)
+ [1m[35mSQL (0.9ms)[0m ALTER TABLE "creditcard_txns" ADD "payment_id" integer
+ [1m[36mSQL (0.2ms)[0m [1mSELECT * FROM creditcard_txns[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_creditcard_txns" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "creditcard_payment_id" integer, "amount" decimal DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime, "creditcard_id" integer, "original_creditcard_txn_id" integer, "payment_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("creditcard_txns")[0m
+ [1m[35mSQL (0.7ms)[0m DROP TABLE "creditcard_txns"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "creditcard_txns" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "amount" decimal DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime, "creditcard_id" integer, "original_creditcard_txn_id" integer, "payment_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_creditcard_txns")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_creditcard_txns"[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100214212536')[0m
+Migrating to StiForTransactions (20100223170312)
+ [1m[35mSQL (0.9ms)[0m ALTER TABLE "creditcard_txns" RENAME TO "transactions"
+ [1m[36mSQL (0.6ms)[0m [1mALTER TABLE "transactions" ADD "type" varchar(255)[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TEMPORARY TABLE "altered_transactions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "amount" decimal DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime, "creditcard_id" integer, "original_creditcard_txn_id" integer, "payment_id" integer, "type" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("transactions")[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "transactions"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "transactions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "amount" decimal DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime, "original_creditcard_txn_id" integer, "payment_id" integer, "type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_transactions")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_transactions"[0m
+ [1m[35mSQL (2.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100223170312')[0m
+Migrating to DropBillingIntegrations (20100223183812)
+ [1m[35mSQL (0.7ms)[0m DROP TABLE "billing_integrations"
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100223183812')
+Migrating to DeletedAtForPaymentMethods (20100224153127)
+ [1m[36mSQL (0.8ms)[0m [1mALTER TABLE "payment_methods" ADD "deleted_at" datetime DEFAULT NULL[0m
+ [1m[35mSQL (2.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100224153127')[0m
+Migrating to AddAdjustmentsIndex (20100301163454)
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (1.9ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (3.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100301163454')[0m
+Migrating to FixByPopularity (20100306153445)
+ [1m[35mSQL (0.3ms)[0m UPDATE "product_scopes" SET name='descend_by_popularity' WHERE (name='by_popularity')
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.7ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100306153445')
+Migrating to AddAltTextToImages (20100317120946)
+ [1m[36mSQL (1.5ms)[0m [1mALTER TABLE "assets" ADD "alt" text[0m
+ [1m[35mSQL (1.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100317120946')[0m
+Migrating to AddDisplayToPaymentMethods (20100427121301)
+ [1m[35mSQL (1.6ms)[0m ALTER TABLE "payment_methods" ADD "display" varchar(255) DEFAULT NULL
+ [1m[36mSQL (1.9ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100427121301')
+Migrating to AddAddressesCheckoutsIndexes (20100504142133)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("addresses")[0m
+ [1m[35mSQL (0.6ms)[0m CREATE INDEX "index_addresses_on_firstname" ON "addresses" ("firstname")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("addresses")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_addresses_on_firstname')
+ [1m[36mSQL (0.7ms)[0m [1mCREATE INDEX "index_addresses_on_lastname" ON "addresses" ("lastname")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("checkouts")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_checkouts_on_order_id" ON "checkouts" ("order_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("checkouts")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_checkouts_on_order_id')[0m
+ [1m[35mSQL (0.8ms)[0m CREATE INDEX "index_checkouts_on_bill_address_id" ON "checkouts" ("bill_address_id")
+ [1m[36mSQL (2.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100504142133')
+Migrating to AddIconToTaxons (20100506180619)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "taxons" ADD "icon_file_name" varchar(255)[0m
+ [1m[35mSQL (0.6ms)[0m ALTER TABLE "taxons" ADD "icon_content_type" varchar(255)
+ [1m[36mSQL (0.7ms)[0m [1mALTER TABLE "taxons" ADD "icon_file_size" integer[0m
+ [1m[35mSQL (0.7ms)[0m ALTER TABLE "taxons" ADD "icon_updated_at" datetime
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100506180619')
+Migrating to AddDescriptionToTaxons (20100506185838)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "taxons" ADD "description" text[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100506185838')[0m
+Migrating to IndexForShipmentsNumber (20100528155333)
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("shipments")
+ [1m[36mSQL (0.8ms)[0m [1mCREATE INDEX "index_shipments_on_number" ON "shipments" ("number")[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100528155333')[0m
+Migrating to AddIndexOnUsersPersistenceToken (20100528185820)
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.6ms)[0m CREATE INDEX "index_users_on_persistence_token" ON "users" ("persistence_token")
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100528185820')
+Migrating to AddDefaultToTaxCategories (20100605152042)
+ [1m[36mSQL (1.0ms)[0m [1mALTER TABLE "tax_categories" ADD "is_default" boolean DEFAULT 'f'[0m
+ [1m[35mSQL (1.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100605152042')[0m
+Migrating to AddDisplayToShippingMethods (20100624110730)
+ [1m[35mSQL (0.8ms)[0m ALTER TABLE "shipping_methods" ADD "display_on" varchar(255) DEFAULT NULL
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100624110730')
+Migrating to RenamePaymentMethodDisplay (20100624123336)
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_payment_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "created_at" datetime, "updated_at" datetime, "deleted_at" datetime, "display_on" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payment_methods")
+ [1m[36mSQL (0.9ms)[0m [1mDROP TABLE "payment_methods"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "payment_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "created_at" datetime, "updated_at" datetime, "deleted_at" datetime, "display_on" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payment_methods")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_payment_methods"
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100624123336')
+Migrating to RenamePreferencesField (20100624175547)
+ [1m[36mSQL (0.8ms)[0m [1mCREATE TEMPORARY TABLE "altered_preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" text(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("preferences")
+ [1m[36mSQL (1.5ms)[0m [1mDROP TABLE "preferences"[0m
+ [1m[35mSQL (0.7ms)[0m CREATE TABLE "preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" text(255), "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_preferences")[0m
+ [1m[35mSQL (1.1ms)[0m DROP TABLE "altered_preferences"
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100624175547')
+Migrating to AddGuestFlag (20100811163637)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "users" ADD "guest" boolean[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100811163637')[0m
+Migrating to DropOrderToken (20100811205836)
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_orders" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "number" varchar(15), "item_total" decimal DEFAULT 0.0 NOT NULL, "total" decimal DEFAULT 0.0 NOT NULL, "created_at" datetime, "updated_at" datetime, "state" varchar(255), "token" varchar(255), "adjustment_total" decimal DEFAULT 0.0 NOT NULL, "credit_total" decimal DEFAULT 0.0 NOT NULL, "completed_at" datetime)
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("orders")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_orders_on_number')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_orders")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_orders_on_number" ON "altered_orders" ("number")
+ [1m[36mSQL (0.8ms)[0m [1mDROP TABLE "orders"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "orders" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "number" varchar(15), "item_total" decimal DEFAULT 0.0 NOT NULL, "total" decimal DEFAULT 0.0 NOT NULL, "created_at" datetime, "updated_at" datetime, "state" varchar(255), "adjustment_total" decimal DEFAULT 0.0 NOT NULL, "credit_total" decimal DEFAULT 0.0 NOT NULL, "completed_at" datetime)
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_orders")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('temp_index_altered_orders_on_number')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("orders")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "index_orders_on_number" ON "orders" ("number")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_orders"[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100811205836')[0m
+Migrating to PaymentsStateAndAssignedToOrderOnly (20100812162326)
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "source_id" integer, "source_type" varchar(255), "payment_method_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("payments")[0m
+ [1m[35mSQL (0.8ms)[0m DROP TABLE "payments"
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "source_id" integer, "source_type" varchar(255), "payment_method_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_payments")
+ [1m[36mSQL (0.2ms)[0m [1mDROP TABLE "altered_payments"[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "source_id" integer, "source_type" varchar(255), "payment_method_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("payments")[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "payments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "source_id" integer, "source_type" varchar(255), "payment_method_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_payments")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_payments"[0m
+ [1m[35mSQL (1.1ms)[0m ALTER TABLE "payments" ADD "state" varchar(255)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100812162326')
+Migrating to CreateAddressKeysForOrder (20100813023502)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "orders" ADD "bill_address_id" integer[0m
+ [1m[35mSQL (0.6ms)[0m ALTER TABLE "orders" ADD "ship_address_id" integer
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100813023502')
+Migrating to PaymentTotalForOrders (20100813185745)
+ [1m[36mSQL (0.8ms)[0m [1mALTER TABLE "orders" ADD "payment_total" decimal(8,2) DEFAULT 0.0[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100813185745')[0m
+Migrating to ShippingMethodIdForOrders (20100816212146)
+ [1m[35mSQL (0.9ms)[0m ALTER TABLE "orders" ADD "shipping_method_id" integer
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100816212146')
+Migrating to AddShipmentAndPaymentState (20100817152723)
+ [1m[36mSQL (1.1ms)[0m [1mALTER TABLE "orders" ADD "shipment_state" varchar(255)[0m
+ [1m[35mSQL (0.6ms)[0m ALTER TABLE "orders" ADD "payment_state" varchar(255)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100817152723')
+Migrating to RefactorAdjustments (20100819170125)
+ [1m[36mSQL (1.0ms)[0m [1mALTER TABLE "adjustments" ADD "mandatory" boolean[0m
+ [1m[35mSQL (0.6ms)[0m ALTER TABLE "adjustments" ADD "frozen" boolean
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "adjustment_source_type" varchar(255), "mandatory" boolean, "frozen" boolean) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.7ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "adjustment_source_type" varchar(255), "mandatory" boolean, "frozen" boolean) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.6ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (0.3ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (0.5ms)[0m [1mALTER TABLE "adjustments" ADD "originator_id" integer[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "adjustments" ADD "originator_type" varchar(255)
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.2ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.2ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.2ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100819170125')
+Migrating to ResponseCodeAndAvsResponseForPayments (20100820135707)
+ [1m[36mSQL (0.7ms)[0m [1mALTER TABLE "payments" ADD "response_code" varchar(255)[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "payments" ADD "avs_response" varchar(255)
+ [1m[36mSQL (3.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100820135707')
+Migrating to ChangeGuestFlagToAnonymous (20100901171814)
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255), "anonymous" boolean) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_persistence_token')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_persistence_token" ON "altered_users" ("persistence_token")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('temp_index_altered_users_on_persistence_token')
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")[0m
+ [1m[35mSQL (0.8ms)[0m DROP TABLE "users"
+ [1m[36mSQL (0.8ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255), "anonymous" boolean) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("altered_users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('temp_index_altered_users_on_persistence_token')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_users_on_persistence_token" ON "users" ("persistence_token")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "altered_users"
+ [1m[36mSQL (36.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100901171814')
+Migrating to EmailForOrders (20100903203949)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "orders" ADD "email" varchar(255)[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100903203949')[0m
+Migrating to CreateMailMethods (20100923162011)
+ [1m[35mSQL (0.7ms)[0m CREATE TABLE "mail_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "environment" varchar(255), "active" boolean DEFAULT 't', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100923162011')
+Migrating to RenameFrozenToLocked (20100929151905)
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "locked" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "locked" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (2.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100929151905')
+Migrating to MoveSpecialInstructionsToOrders (20101008190536)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "orders" ADD "special_instructions" text[0m
+ [1m[35mSQL (0.3ms)[0m update orders set special_instructions = (select special_instructions from checkouts where order_id = orders.id)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101008190536')
+Migrating to CreateLogEntries (20101026184700)
+ [1m[36mSQL (0.8ms)[0m [1mCREATE TABLE "log_entries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "source_id" integer, "source_type" varchar(255), "details" text, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184700')[0m
+Migrating to MigrateTransactionsToPaymentState (20101026184714)
+ [1m[35mTransaction Load (0.4ms)[0m select * from transactions group by payment_id having count(payment_id) = 1 and txn_type = 1
+ [1m[36mTransaction Load (0.2ms)[0m [1mselect * from transactions where txn_type=4[0m
+ [1m[35mTransaction Load (0.2ms)[0m select * from transactions where txn_type = 2
+ [1m[36mTransaction Load (0.2ms)[0m [1mselect * from transactions where txn_type = 3[0m
+ [1m[35mTransaction Load (0.2ms)[0m select * from transactions where txn_type = 5
+ [1m[36mSQL (2.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101026184714')
+Migrating to DeleteInProgressOrders (20101026184746)
+ [1m[36mSQL (1.9ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m DELETE FROM "orders" WHERE ("orders"."state" = 'in_progress')
+ [1m[36mSQL (0.3ms)[0m [1mdelete from adjustments where order_id not in (select id from orders)[0m
+ [1m[35mSQL (0.2ms)[0m delete from checkouts where order_id not in (select id from orders)
+ [1m[36mSQL (0.2ms)[0m [1mdelete from shipments where order_id not in (select id from orders)[0m
+ [1m[35mSQL (0.2ms)[0m delete from payments where order_id not in (select id from orders)
+ [1m[36mSQL (0.2ms)[0m [1mdelete from line_items where order_id not in (select id from orders)[0m
+ [1m[35mSQL (0.2ms)[0m delete from inventory_units where order_id not in (select id from orders)
+ [1m[36mSQL (1.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (5.0ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101026184746')
+Migrating to MigrateCheckoutToOrders (20101026184808)
+ [1m[36mOrder Load (0.4ms)[0m [1mSELECT "orders".* FROM "orders" WHERE ("orders"."id" >= 0) ORDER BY orders.id ASC LIMIT 1000[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184808')[0m
+Migrating to MigrateAdjustments (20101026184833)
+ [1m[35mSQL (0.4ms)[0m update adjustments set amount = 0.0 where amount is null
+ [1m[36mSQL (0.2ms)[0m [1mupdate adjustments set mandatory = 'true', locked = 'true'[0m
+ [1m[35mSQL (6.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184833')[0m
+Migrating to RemoveShippedState (20101026184855)
+ [1m[35mOrder Load (0.5ms)[0m SELECT "orders".* FROM "orders" WHERE ("orders"."state" = 'shipped')
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101026184855')
+Migrating to PreventNilPaymentTotal (20101026184916)
+ [1m[36mSQL (0.3ms)[0m [1mupdate orders set payment_total = 0.0 where payment_total is null[0m
+ [1m[35mSQL (2.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184916')[0m
+Migrating to PreventNilEmail (20101026184932)
+ [1m[35mSQL (0.7ms)[0m update orders set email = 'guest@example.com' where email is null
+ [1m[36mSQL (0.3ms)[0m [1mupdate orders set email = 'guest@example.com' where email = ''[0m
+ [1m[35mSQL (2.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184932')[0m
+Migrating to GenerateAnonymousUsers (20101026184959)
+ [1m[35mOrder Load (0.4ms)[0m SELECT "orders".* FROM "orders" WHERE ("orders"."user_id" IS NULL)
+ [1m[36mSQL (14.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.6ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101026184959')
+Migrating to UpdateOrderState (20101026185022)
+ [1m[36mOrder Load (0.4ms)[0m [1mSELECT "orders".* FROM "orders"[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026185022')[0m
+Migrating to CleanupLegacyTables (20101026192225)
+ [1m[35mSQL (0.8ms)[0m DROP TABLE "checkouts"
+ [1m[36mSQL (0.7ms)[0m [1mDROP TABLE "transactions"[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "open_id_authentication_associations"
+ [1m[36mSQL (0.4ms)[0m [1mDROP TABLE "open_id_authentication_nonces"[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026192225')[0m
+Migrating to RemoveNumberAndCvvFromCredicard (20101028151745)
+ [1m[35mSQL (0.6ms)[0m CREATE TEMPORARY TABLE "altered_creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("creditcards")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "creditcards"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_creditcards")
+ [1m[36mSQL (0.2ms)[0m [1mDROP TABLE "altered_creditcards"[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TEMPORARY TABLE "altered_creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("creditcards")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "creditcards"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "month" varchar(255), "year" varchar(255), "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_creditcards")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_creditcards"[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101028151745')[0m
+Migrating to DropAnonymousFieldForUser (20101103212716)
+ [1m[35mSQL (0.6ms)[0m CREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255), "anonymous" boolean)
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_persistence_token')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_users")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_users_on_persistence_token" ON "altered_users" ("persistence_token")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_users_on_persistence_token')[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")
+ [1m[36mSQL (0.8ms)[0m [1mDROP TABLE "users"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('temp_index_altered_users_on_openid_identifier')
+ [1m[36mSQL (0.4ms)[0m [1mPRAGMA index_info('temp_index_altered_users_on_persistence_token')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.6ms)[0m CREATE INDEX "index_users_on_persistence_token" ON "users" ("persistence_token")
+ [1m[36mSQL (0.4ms)[0m [1mDROP TABLE "altered_users"[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101103212716')[0m
+Migrating to RenamedRmaCancelledState (20101111133551)
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mReturnAuthorization Load (0.2ms)[0m [1mSELECT "return_authorizations".* FROM "return_authorizations" WHERE ("return_authorizations"."state" = 'cancelled')[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101111133551')[0m
+Migrating to FixProblematicIndexNames (20101117031806)
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("preferences")
+Index name 'index_preferences_on_index_preferences_on_owner_and_attribute_and_preference' on table 'preferences' does not exist. Skipping.
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("preferences")[0m
+ [1m[35mSQL (0.7ms)[0m CREATE UNIQUE INDEX "ix_prefs_on_owner_attr_pref" ON "preferences" ("owner_id", "owner_type", "name", "group_id", "group_type")
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101117031806')
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations"[0m
+ [1m[35mSQL (2.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("addresses")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_addresses_on_lastname')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_addresses_on_firstname')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("assets")
+ [1m[36mSQL (0.4ms)[0m [1mPRAGMA index_info('index_assets_on_viewable_type_and_type')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_assets_on_viewable_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("calculators")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("configurations")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_configurations_on_name_and_type')[0m
+ [1m[35mSQL (0.3ms)[0m PRAGMA index_list("countries")
+ [1m[36mSQL (0.3ms)[0m [1mPRAGMA index_list("coupons")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("creditcards")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("gateways")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("inventory_units")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_inventory_units_on_shipment_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_inventory_units_on_order_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_inventory_units_on_variant_id')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("line_items")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_line_items_on_variant_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_line_items_on_order_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("log_entries")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("mail_methods")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("option_types")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("option_types_prototypes")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("option_values")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("option_values_variants")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_option_values_variants_on_variant_id_and_option_value_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_option_values_variants_on_variant_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("orders")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_orders_on_number')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("payment_methods")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("preferences")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('ix_prefs_on_owner_attr_pref')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("product_groups")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_product_groups_on_permalink')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_product_groups_on_name')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("product_groups_products")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("product_option_types")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("product_properties")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_product_properties_on_product_id')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("product_scopes")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_product_scopes_on_product_group_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_product_scopes_on_name')
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("products")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_products_on_permalink')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_on_name')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_products_on_deleted_at')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_on_available_on')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("products_taxons")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_taxons_on_taxon_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_products_taxons_on_product_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("properties")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("properties_prototypes")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("prototypes")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("question_categories")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("questions")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("return_authorizations")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("roles")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("roles_users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_roles_users_on_user_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_roles_users_on_role_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("shipments")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_shipments_on_number')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("shipping_categories")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("shipping_methods")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("state_events")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("states")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("tax_categories")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("tax_rates")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("taxonomies")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("taxons")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_taxons_on_taxonomy_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_taxons_on_parent_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_taxons_on_permalink')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("trackers")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_persistence_token')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("variants")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_variants_on_product_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("zone_members")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("zones")[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT "schema_migrations"."version" FROM "schema_migrations"
diff --git a/spec/test_app/log/development.log b/spec/test_app/log/development.log
new file mode 100644
index 0000000..94b81b0
--- /dev/null
+++ b/spec/test_app/log/development.log
@@ -0,0 +1,35 @@
+ [1m[36mSQL (0.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
diff --git a/app/views/faqs/show.rjs b/spec/test_app/log/production.log
similarity index 100%
rename from app/views/faqs/show.rjs
rename to spec/test_app/log/production.log
diff --git a/spec/test_app/log/server.log b/spec/test_app/log/server.log
new file mode 100644
index 0000000..e69de29
diff --git a/spec/test_app/log/test.log b/spec/test_app/log/test.log
new file mode 100644
index 0000000..1177342
--- /dev/null
+++ b/spec/test_app/log/test.log
@@ -0,0 +1,3675 @@
+ [1m[36mSQL (0.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m select sqlite_version(*)
+ [1m[36mSQL (29.6ms)[0m [1mCREATE TABLE "schema_migrations" ("version" varchar(255) NOT NULL) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("schema_migrations")
+ [1m[36mSQL (24.0ms)[0m [1mCREATE UNIQUE INDEX "unique_schema_migrations" ON "schema_migrations" ("version")[0m
+ [1m[35mSQL (0.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m SELECT "schema_migrations"."version" FROM "schema_migrations"
+Migrating to CreateQuestions (20090526213535)
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TABLE "questions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "question_category_id" integer, "question" text, "answer" text, "position" integer, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20090526213535')[0m
+Migrating to CreateQuestionCategories (20090526213550)
+ [1m[35mSQL (0.7ms)[0m CREATE TABLE "question_categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20090526213550')
+Migrating to SpreeZeroNineZero (20090823005402)
+ [1m[36mSQL (0.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.9ms)[0m CREATE TABLE "addresses" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "firstname" varchar(255), "lastname" varchar(255), "address1" varchar(255), "address2" varchar(255), "city" varchar(255), "state_id" integer, "zipcode" varchar(255), "country_id" integer, "phone" varchar(255), "created_at" datetime, "updated_at" datetime, "state_name" varchar(255), "alternative_phone" varchar(255))
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal(8,2) DEFAULT 0.0 NOT NULL, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255), "secondary_type" varchar(255))
+ [1m[36mSQL (0.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.7ms)[0m CREATE TABLE "assets" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "viewable_id" integer, "viewable_type" varchar(50), "attachment_content_type" varchar(255), "attachment_file_name" varchar(255), "attachment_size" integer, "position" integer, "type" varchar(75), "attachment_updated_at" datetime, "attachment_width" integer, "attachment_height" integer)
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m CREATE TABLE "calculators" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "calculable_id" integer NOT NULL, "calculable_type" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "checkouts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "email" varchar(255), "ip_address" varchar(255), "special_instructions" text, "bill_address_id" integer, "completed_at" datetime, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "configurations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "type" varchar(50))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("configurations")[0m
+ [1m[35mSQL (0.5ms)[0m CREATE INDEX "index_configurations_on_name_and_type" ON "configurations" ("name", "type")
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "countries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "iso_name" varchar(255), "iso" varchar(255), "name" varchar(255), "iso3" varchar(255), "numcode" integer)
+ [1m[36mSQL (0.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "coupons" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "code" varchar(255), "description" varchar(255), "usage_limit" integer, "combine" boolean, "expires_at" datetime, "created_at" datetime, "updated_at" datetime, "starts_at" datetime)
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m CREATE TABLE "creditcard_txns" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "creditcard_payment_id" integer, "amount" decimal(8,2) DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "display_number" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "checkout_id" integer)
+ [1m[36mSQL (0.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "gateway_configurations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "gateway_id" integer, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "gateway_option_values" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "gateway_configuration_id" integer, "gateway_option_id" integer, "value" text, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.9ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "gateway_options" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "description" text, "gateway_id" integer, "textarea" boolean DEFAULT 'f', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "gateways" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "clazz" varchar(255), "name" varchar(255), "description" text, "active" boolean, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "inventory_units" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "variant_id" integer, "order_id" integer, "state" varchar(255), "lock_version" integer DEFAULT 0, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "line_items" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "variant_id" integer, "quantity" integer NOT NULL, "price" decimal(8,2) NOT NULL, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("line_items")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "index_line_items_on_order_id" ON "line_items" ("order_id")
+ [1m[36mSQL (0.3ms)[0m [1mPRAGMA index_list("line_items")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_line_items_on_order_id')
+ [1m[36mSQL (0.8ms)[0m [1mCREATE INDEX "index_line_items_on_variant_id" ON "line_items" ("variant_id")[0m
+ [1m[35mSQL (0.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "option_types" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(100), "presentation" varchar(100), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (2.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "option_types_prototypes" ("prototype_id" integer, "option_type_id" integer) [0m
+ [1m[35mSQL (0.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "option_values" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "option_type_id" integer, "name" varchar(255), "position" integer, "presentation" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mCREATE TABLE "option_values_variants" ("variant_id" integer, "option_value_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("option_values_variants")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_option_values_variants_on_variant_id" ON "option_values_variants" ("variant_id")[0m
+ [1m[35mSQL (0.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "orders" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "number" varchar(15), "item_total" decimal(8,2) DEFAULT 0.0 NOT NULL, "total" decimal(8,2) DEFAULT 0.0 NOT NULL, "created_at" datetime, "updated_at" datetime, "state" varchar(255), "token" varchar(255), "adjustment_total" decimal(8,2) DEFAULT 0.0 NOT NULL, "credit_total" decimal(8,2) DEFAULT 0.0 NOT NULL) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("orders")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_orders_on_number" ON "orders" ("number")[0m
+ [1m[35mSQL (0.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal(8,2) DEFAULT 0.0 NOT NULL, "creditcard_id" integer, "type" varchar(255)) [0m
+ [1m[35mSQL (0.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "attribute" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("preferences")
+ [1m[36mSQL (0.6ms)[0m [1mCREATE UNIQUE INDEX "index_preferences_on_owner_and_attribute_and_preference" ON "preferences" ("owner_id", "owner_type", "attribute", "group_id", "group_type")[0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "product_option_types" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "product_id" integer, "option_type_id" integer, "position" integer, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "product_properties" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "product_id" integer, "property_id" integer, "value" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "products" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) DEFAULT '' NOT NULL, "description" text, "created_at" datetime, "updated_at" datetime, "permalink" varchar(255), "available_on" datetime, "tax_category_id" integer, "shipping_category_id" integer, "deleted_at" datetime, "meta_description" varchar(255), "meta_keywords" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("products")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_products_on_available_on" ON "products" ("available_on")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("products")
+ [1m[36mSQL (0.3ms)[0m [1mPRAGMA index_info('index_products_on_available_on')[0m
+ [1m[35mSQL (0.5ms)[0m CREATE INDEX "index_products_on_deleted_at" ON "products" ("deleted_at")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("products")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_products_on_deleted_at')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_on_available_on')[0m
+ [1m[35mSQL (0.6ms)[0m CREATE INDEX "index_products_on_name" ON "products" ("name")
+ [1m[36mSQL (0.3ms)[0m [1mPRAGMA index_list("products")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_products_on_name')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_on_deleted_at')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_products_on_available_on')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_products_on_permalink" ON "products" ("permalink")[0m
+ [1m[35mSQL (0.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "products_taxons" ("product_id" integer, "taxon_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("products_taxons")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_products_taxons_on_product_id" ON "products_taxons" ("product_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("products_taxons")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_products_taxons_on_product_id')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_products_taxons_on_taxon_id" ON "products_taxons" ("taxon_id")
+ [1m[36mSQL (0.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "properties" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "presentation" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "properties_prototypes" ("prototype_id" integer, "property_id" integer)
+ [1m[36mSQL (0.9ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "prototypes" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.0ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "roles" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255))
+ [1m[36mSQL (1.0ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "roles_users" ("role_id" integer, "user_id" integer)
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("roles_users")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_roles_users_on_role_id" ON "roles_users" ("role_id")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("roles_users")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_roles_users_on_role_id')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_roles_users_on_user_id" ON "roles_users" ("user_id")[0m
+ [1m[35mSQL (0.9ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "shipments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "shipping_method_id" integer, "tracking" varchar(255), "created_at" datetime, "updated_at" datetime, "number" varchar(255), "cost" decimal(8,2), "shipped_at" datetime, "address_id" integer) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "shipping_categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "shipping_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "zone_id" integer, "name" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "state_events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "user_id" integer, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "previous_state" varchar(255)) [0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "states" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "abbr" varchar(255), "country_id" integer) [0m
+ [1m[35mSQL (0.9ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "tax_categories" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "description" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (2.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "tax_rates" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "zone_id" integer, "amount" decimal(8,4), "created_at" datetime, "updated_at" datetime, "tax_category_id" integer) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "taxonomies" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.8ms)[0m [1mCREATE TABLE "taxons" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "taxonomy_id" integer NOT NULL, "parent_id" integer, "position" integer DEFAULT 0, "name" varchar(255) NOT NULL, "created_at" datetime, "updated_at" datetime, "permalink" varchar(255)) [0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128) DEFAULT '' NOT NULL, "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer) [0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "variants" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "product_id" integer, "sku" varchar(255) DEFAULT '' NOT NULL, "price" decimal(8,2) NOT NULL, "weight" decimal(8,2), "height" decimal(8,2), "width" decimal(8,2), "depth" decimal(8,2), "deleted_at" datetime, "is_master" boolean DEFAULT 'f') [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("variants")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_variants_on_product_id" ON "variants" ("product_id")[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "zone_members" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "zone_id" integer, "zoneable_id" integer, "zoneable_type" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "zones" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "description" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20090823005402')[0m
+Migrating to CreateIndexesForInventoryUnits (20090904192342)
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("inventory_units")
+ [1m[36mSQL (0.6ms)[0m [1mCREATE INDEX "index_inventory_units_on_variant_id" ON "inventory_units" ("variant_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("inventory_units")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_inventory_units_on_variant_id')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_inventory_units_on_order_id" ON "inventory_units" ("order_id")
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20090904192342')
+Migrating to AddCountOnHandToVariantsAndProducts (20090923100315)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "variants" ADD "count_on_hand" integer DEFAULT 0 NOT NULL[0m
+ [1m[35mSQL (0.6ms)[0m ALTER TABLE "products" ADD "count_on_hand" integer DEFAULT 0 NOT NULL
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mVariant Load (0.2ms)[0m SELECT "variants".* FROM "variants"
+ [1m[36mProduct Load (0.2ms)[0m [1mSELECT "products".* FROM "products"[0m
+ [1m[35mSQL (1.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20090923100315')[0m
+Migrating to ChangeTaxonsToNestedSet (20091007134354)
+ [1m[35mSQL (0.8ms)[0m ALTER TABLE "taxons" ADD "lft" integer
+ [1m[36mSQL (0.5ms)[0m [1mALTER TABLE "taxons" ADD "rgt" integer[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mProperty Load (0.2ms)[0m SELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mTaxon Load (0.3ms)[0m SELECT "taxons".* FROM "taxons" WHERE (parent_id IS NULL) ORDER BY position ASC
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.1ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091007134354')
+Migrating to MoveToConfigurableGateways (20091008091614)
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "gateways"[0m
+ [1m[35mSQL (0.7ms)[0m DROP TABLE "gateway_options"
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "gateway_option_values"[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "gateway_configurations"
+ [1m[36mSQL (1.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "gateways" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "server" varchar(255) DEFAULT 'test', "test_mode" boolean DEFAULT 't', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091008091614')
+Migrating to ProductGroupsAndScopes (20091012120519)
+ [1m[36mSQL (0.8ms)[0m [1mCREATE TABLE "product_groups" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(255), "permalink" varchar(255), "order" varchar(255)) [0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "product_scopes" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "product_group_id" integer, "name" varchar(255), "arguments" text)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("product_groups")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_product_groups_on_name" ON "product_groups" ("name")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("product_groups")[0m
+ [1m[35mSQL (0.6ms)[0m PRAGMA index_info('index_product_groups_on_name')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_product_groups_on_permalink" ON "product_groups" ("permalink")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("product_scopes")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_product_scopes_on_name" ON "product_scopes" ("name")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("product_scopes")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_product_scopes_on_name')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_product_scopes_on_product_group_id" ON "product_scopes" ("product_group_id")
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091012120519')
+Migrating to AddOpenIdAuthenticationTables (20091015110842)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.7ms)[0m CREATE TABLE "open_id_authentication_associations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "issued" integer, "lifetime" integer, "handle" varchar(255), "assoc_type" varchar(255), "server_url" blob, "secret" blob)
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "open_id_authentication_nonces" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "timestamp" integer NOT NULL, "server_url" varchar(255), "salt" varchar(255) NOT NULL)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091015110842')
+Migrating to AddOpenidFieldToUsers (20091015153048)
+ [1m[36mSQL (1.0ms)[0m [1mALTER TABLE "users" ADD "openid_identifier" varchar(255)[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.5ms)[0m [1mCREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")[0m
+ [1m[35mSQL (2.0ms)[0m CREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128) DEFAULT '' NOT NULL, "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")
+ [1m[36mSQL (0.7ms)[0m [1mDROP TABLE "users"[0m
+ [1m[35mSQL (1.8ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128) DEFAULT '' NOT NULL, "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('temp_index_altered_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.7ms)[0m CREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")
+ [1m[36mSQL (1.5ms)[0m [1mDROP TABLE "altered_users"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128) DEFAULT '' NOT NULL, "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "users"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('temp_index_altered_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_users"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128) DEFAULT '' NOT NULL, "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")
+ [1m[36mSQL (0.4ms)[0m [1mDROP TABLE "users"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('temp_index_altered_users_on_openid_identifier')
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_users"[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091015153048')[0m
+Migrating to ChangePreferenceValueType (20091016174634)
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("preferences")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_preferences_on_owner_and_attribute_and_preference')[0m
+ [1m[35mSQL (0.5ms)[0m DROP INDEX "index_preferences_on_owner_and_attribute_and_preference"
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TEMPORARY TABLE "altered_preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "attribute" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" varchar(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("preferences")
+ [1m[36mSQL (0.6ms)[0m [1mDROP TABLE "preferences"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "attribute" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" text(255), "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_preferences")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "altered_preferences"
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091016174634')
+Migrating to CreateBillingIntegrations (20091017175558)
+ [1m[36mSQL (1.0ms)[0m [1mCREATE TABLE "billing_integrations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091017175558')[0m
+Migrating to ChargeRefactoring (20091021133257)
+ [1m[35mSQL (2.0ms)[0m ALTER TABLE "orders" ADD "completed_at" datetime
+ [1m[36mChargeRefactoring::Order Load (0.3ms)[0m [1mSELECT "orders".* FROM "orders"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_checkouts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "email" varchar(255), "ip_address" varchar(255), "special_instructions" text, "bill_address_id" integer, "completed_at" datetime, "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("checkouts")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "checkouts"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "checkouts" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "email" varchar(255), "ip_address" varchar(255), "special_instructions" text, "bill_address_id" integer, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_checkouts")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_checkouts"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal DEFAULT 0.0 NOT NULL, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255), "secondary_type" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("adjustments")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255), "secondary_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (1.6ms)[0m [1mDROP TABLE "altered_adjustments"[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mUPDATE "adjustments" SET type = secondary_type [0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "adjustments" SET type = 'CouponCredit' WHERE (type = 'Credit')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255), "secondary_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "adjustments"[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "adjustment_source_id" integer, "adjustment_source_type" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_adjustments")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091021133257')
+Migrating to AddSomeIndexes (20091104151730)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("taxons")[0m
+ [1m[35mSQL (0.6ms)[0m CREATE INDEX "index_taxons_on_permalink" ON "taxons" ("permalink")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("taxons")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_taxons_on_permalink')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_taxons_on_parent_id" ON "taxons" ("parent_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("taxons")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_taxons_on_parent_id')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_taxons_on_permalink')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_taxons_on_taxonomy_id" ON "taxons" ("taxonomy_id")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("assets")
+ [1m[36mSQL (4.9ms)[0m [1mCREATE INDEX "index_assets_on_viewable_id" ON "assets" ("viewable_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("assets")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_assets_on_viewable_id')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_assets_on_viewable_type_and_type" ON "assets" ("viewable_type", "type")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("product_properties")[0m
+ [1m[35mSQL (0.5ms)[0m CREATE INDEX "index_product_properties_on_product_id" ON "product_properties" ("product_id")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("option_values_variants")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_option_values_variants_on_variant_id')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_option_values_variants_on_variant_id_and_option_value_id" ON "option_values_variants" ("variant_id", "option_value_id")[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091104151730')[0m
+Migrating to CheckoutStateMachine (20091126190904)
+ [1m[35mSQL (1.0ms)[0m ALTER TABLE "checkouts" ADD "state" varchar(255)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091126190904')
+Migrating to StateForShipments (20091209153045)
+ [1m[36mSQL (1.0ms)[0m [1mALTER TABLE "shipments" ADD "state" varchar(255)[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091209153045')[0m
+Migrating to MakeStateEventsPolymorphic (20091209202200)
+ [1m[35mSQL (0.4ms)[0m CREATE TEMPORARY TABLE "altered_state_events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "stateful_id" integer, "user_id" integer, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "previous_state" varchar(255))
+ [1m[36mSQL (0.7ms)[0m [1mPRAGMA index_list("state_events")[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "state_events"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "state_events" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "stateful_id" integer, "user_id" integer, "name" varchar(255), "created_at" datetime, "updated_at" datetime, "previous_state" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_state_events")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_state_events"[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "state_events" ADD "stateful_type" varchar(255)
+ [1m[36mSQL (0.2ms)[0m [1mUPDATE "state_events" SET "stateful_type" = 'Order' [0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091209202200')[0m
+Migrating to ShipAddressIdForCheckouts (20091211203813)
+ [1m[35mSQL (0.8ms)[0m ALTER TABLE "checkouts" ADD "ship_address_id" integer
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091211203813')
+Migrating to ShippingMethodIdForCheckouts (20091212161118)
+ [1m[36mSQL (1.0ms)[0m [1mALTER TABLE "checkouts" ADD "shipping_method_id" integer[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091212161118')[0m
+Migrating to CreditcardLastFourDigits (20091213222815)
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "checkout_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("creditcards")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "creditcards"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "checkout_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_creditcards")
+ [1m[36mSQL (0.2ms)[0m [1mDROP TABLE "altered_creditcards"[0m
+ [1m[35mCreditcardLastFourDigits::Creditcard Load (0.3ms)[0m SELECT "creditcards".* FROM "creditcards"
+ [1m[36mSQL (2.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20091213222815')
+Migrating to PopulateLegacyShipmentState (20091214183826)
+ [1m[36mPopulateLegacyShipmentState::Shipment Load (0.4ms)[0m [1mSELECT "shipments".* FROM "shipments"[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20091214183826')[0m
+Migrating to AddCostPrice (20100105090147)
+ [1m[35mSQL (1.0ms)[0m ALTER TABLE "variants" ADD "cost_price" decimal(8,2) DEFAULT NULL
+ [1m[36mSQL (3.0ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100105090147')
+Migrating to ShipmentIdForInventoryUnits (20100105132138)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "inventory_units" ADD "shipment_id" integer[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("inventory_units")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_inventory_units_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_inventory_units_on_variant_id')
+ [1m[36mSQL (0.6ms)[0m [1mCREATE INDEX "index_inventory_units_on_shipment_id" ON "inventory_units" ("shipment_id")[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mShipment Load (0.3ms)[0m [1mSELECT "shipments".* FROM "shipments"[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100105132138')[0m
+Migrating to CimFieldsForCreditcards (20100111205525)
+ [1m[35mSQL (1.0ms)[0m ALTER TABLE "creditcards" ADD "gateway_customer_profile_id" varchar(255)
+ [1m[36mSQL (1.3ms)[0m [1mALTER TABLE "creditcards" ADD "gateway_payment_profile_id" varchar(255)[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100111205525')[0m
+Migrating to CreateReturnAuthorizations (20100112151511)
+ [1m[35mSQL (1.9ms)[0m CREATE TABLE "return_authorizations" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" varchar(255), "amount" decimal(8,2) DEFAULT 0.0 NOT NULL, "order_id" integer, "reason" text, "state" varchar(255), "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100112151511')
+Migrating to AddReturnAuthorizationToInventoryUnits (20100113090919)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "inventory_units" ADD "return_authorization_id" integer[0m
+ [1m[35mSQL (2.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100113090919')[0m
+Migrating to CreateTrackers (20100113203104)
+ [1m[35mSQL (1.3ms)[0m CREATE TABLE "trackers" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "environment" varchar(255), "analytics_id" varchar(255), "active" boolean DEFAULT 't', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100113203104')
+Migrating to CreditcardIdForCreditcardTxns (20100121160010)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "creditcard_txns" ADD "creditcard_id" integer[0m
+ [1m[35mSQL (1.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100121160010')[0m
+Migrating to OriginalCreditcardTxnIdForCreditcardTxns (20100121183934)
+ [1m[35mSQL (1.0ms)[0m ALTER TABLE "creditcard_txns" ADD "original_creditcard_txn_id" integer
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100121183934')
+Migrating to AddTestModeToBillingIntegration (20100125145351)
+ [1m[36mSQL (1.2ms)[0m [1mALTER TABLE "billing_integrations" ADD "test_mode" boolean DEFAULT 't'[0m
+ [1m[35mSQL (0.9ms)[0m ALTER TABLE "billing_integrations" ADD "server" varchar(255) DEFAULT 'test'
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100125145351')
+Migrating to CreateProductsProductGroups (20100126103714)
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TABLE "product_groups_products" ("product_id" integer, "product_group_id" integer) [0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100126103714')[0m
+Migrating to CreatePaymentMethods (20100209025806)
+ [1m[35mSQL (0.8ms)[0m CREATE TABLE "payment_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100209025806')
+Migrating to PolymorphicPayments (20100209144531)
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "creditcard_id" integer, "type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "payments"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "creditcard_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payments")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_payments"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "creditcard_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.6ms)[0m [1mDROP TABLE "payments"[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payments")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "altered_payments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "payable_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.4ms)[0m [1mDROP TABLE "payments"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "payable_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payments")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_payments"
+ [1m[36mSQL (0.7ms)[0m [1mALTER TABLE "payments" ADD "payable_type" varchar(255)[0m
+ [1m[35mSQL (0.7ms)[0m ALTER TABLE "payments" ADD "payment_method" varchar(255)
+ [1m[36mSQL (0.6ms)[0m [1mALTER TABLE "payments" ADD "source_id" integer[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "payments" ADD "source_type" varchar(255)
+ [1m[36mSQL (0.1ms)[0m [1mUPDATE payments SET payable_type = 'Order'[0m
+ [1m[35mCreditcard Load (0.3ms)[0m SELECT "creditcards".* FROM "creditcards"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "checkout_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("creditcards")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "creditcards"[0m
+ [1m[35mSQL (0.7ms)[0m CREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_creditcards")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_creditcards"
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100209144531')
+Migrating to ChangePaymentsPaymentMethodToBelongsTo (20100213103131)
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "payable_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "payment_method" varchar(255), "source_id" integer, "source_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.6ms)[0m [1mDROP TABLE "payments"[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "payable_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "source_id" integer, "source_type" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payments")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_payments"
+ [1m[36mSQL (0.6ms)[0m [1mALTER TABLE "payments" ADD "payment_method_id" integer[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100213103131')[0m
+Migrating to AssignCreditcardTxnsToPayment (20100214212536)
+ [1m[35mSQL (0.8ms)[0m ALTER TABLE "creditcard_txns" ADD "payment_id" integer
+ [1m[36mSQL (0.2ms)[0m [1mSELECT * FROM creditcard_txns[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_creditcard_txns" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "creditcard_payment_id" integer, "amount" decimal DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime, "creditcard_id" integer, "original_creditcard_txn_id" integer, "payment_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("creditcard_txns")[0m
+ [1m[35mSQL (0.7ms)[0m DROP TABLE "creditcard_txns"
+ [1m[36mSQL (1.6ms)[0m [1mCREATE TABLE "creditcard_txns" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "amount" decimal DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime, "creditcard_id" integer, "original_creditcard_txn_id" integer, "payment_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_creditcard_txns")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_creditcard_txns"[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100214212536')[0m
+Migrating to StiForTransactions (20100223170312)
+ [1m[35mSQL (0.9ms)[0m ALTER TABLE "creditcard_txns" RENAME TO "transactions"
+ [1m[36mSQL (0.6ms)[0m [1mALTER TABLE "transactions" ADD "type" varchar(255)[0m
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_transactions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "amount" decimal DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime, "creditcard_id" integer, "original_creditcard_txn_id" integer, "payment_id" integer, "type" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("transactions")[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "transactions"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "transactions" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "amount" decimal DEFAULT 0.0 NOT NULL, "txn_type" integer, "response_code" varchar(255), "avs_response" text, "cvv_response" text, "created_at" datetime, "updated_at" datetime, "original_creditcard_txn_id" integer, "payment_id" integer, "type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_transactions")
+ [1m[36mSQL (0.2ms)[0m [1mDROP TABLE "altered_transactions"[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100223170312')[0m
+Migrating to DropBillingIntegrations (20100223183812)
+ [1m[35mSQL (0.7ms)[0m DROP TABLE "billing_integrations"
+ [1m[36mSQL (2.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100223183812')
+Migrating to DeletedAtForPaymentMethods (20100224153127)
+ [1m[36mSQL (1.1ms)[0m [1mALTER TABLE "payment_methods" ADD "deleted_at" datetime DEFAULT NULL[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100224153127')[0m
+Migrating to AddAdjustmentsIndex (20100301163454)
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.7ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100301163454')[0m
+Migrating to FixByPopularity (20100306153445)
+ [1m[35mSQL (0.3ms)[0m UPDATE "product_scopes" SET name='descend_by_popularity' WHERE (name='by_popularity')
+ [1m[36mSQL (3.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100306153445')
+Migrating to AddAltTextToImages (20100317120946)
+ [1m[36mSQL (1.0ms)[0m [1mALTER TABLE "assets" ADD "alt" text[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100317120946')[0m
+Migrating to AddDisplayToPaymentMethods (20100427121301)
+ [1m[35mSQL (1.1ms)[0m ALTER TABLE "payment_methods" ADD "display" varchar(255) DEFAULT NULL
+ [1m[36mSQL (2.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.5ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100427121301')
+Migrating to AddAddressesCheckoutsIndexes (20100504142133)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("addresses")[0m
+ [1m[35mSQL (0.8ms)[0m CREATE INDEX "index_addresses_on_firstname" ON "addresses" ("firstname")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("addresses")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_addresses_on_firstname')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_addresses_on_lastname" ON "addresses" ("lastname")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("checkouts")
+ [1m[36mSQL (1.5ms)[0m [1mCREATE INDEX "index_checkouts_on_order_id" ON "checkouts" ("order_id")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("checkouts")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_checkouts_on_order_id')[0m
+ [1m[35mSQL (0.6ms)[0m CREATE INDEX "index_checkouts_on_bill_address_id" ON "checkouts" ("bill_address_id")
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100504142133')
+Migrating to AddIconToTaxons (20100506180619)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "taxons" ADD "icon_file_name" varchar(255)[0m
+ [1m[35mSQL (0.6ms)[0m ALTER TABLE "taxons" ADD "icon_content_type" varchar(255)
+ [1m[36mSQL (0.7ms)[0m [1mALTER TABLE "taxons" ADD "icon_file_size" integer[0m
+ [1m[35mSQL (0.7ms)[0m ALTER TABLE "taxons" ADD "icon_updated_at" datetime
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100506180619')
+Migrating to AddDescriptionToTaxons (20100506185838)
+ [1m[36mSQL (1.9ms)[0m [1mALTER TABLE "taxons" ADD "description" text[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100506185838')[0m
+Migrating to IndexForShipmentsNumber (20100528155333)
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("shipments")
+ [1m[36mSQL (0.5ms)[0m [1mCREATE INDEX "index_shipments_on_number" ON "shipments" ("number")[0m
+ [1m[35mSQL (2.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100528155333')[0m
+Migrating to AddIndexOnUsersPersistenceToken (20100528185820)
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.8ms)[0m CREATE INDEX "index_users_on_persistence_token" ON "users" ("persistence_token")
+ [1m[36mSQL (3.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100528185820')
+Migrating to AddDefaultToTaxCategories (20100605152042)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "tax_categories" ADD "is_default" boolean DEFAULT 'f'[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100605152042')[0m
+Migrating to AddDisplayToShippingMethods (20100624110730)
+ [1m[35mSQL (0.9ms)[0m ALTER TABLE "shipping_methods" ADD "display_on" varchar(255) DEFAULT NULL
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100624110730')
+Migrating to RenamePaymentMethodDisplay (20100624123336)
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_payment_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "created_at" datetime, "updated_at" datetime, "deleted_at" datetime, "display_on" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payment_methods")
+ [1m[36mSQL (0.5ms)[0m [1mDROP TABLE "payment_methods"[0m
+ [1m[35mSQL (1.0ms)[0m CREATE TABLE "payment_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "type" varchar(255), "name" varchar(255), "description" text, "active" boolean DEFAULT 't', "environment" varchar(255) DEFAULT 'development', "created_at" datetime, "updated_at" datetime, "deleted_at" datetime, "display_on" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_payment_methods")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_payment_methods"
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100624123336')
+Migrating to RenamePreferencesField (20100624175547)
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" text(255), "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("preferences")
+ [1m[36mSQL (0.6ms)[0m [1mDROP TABLE "preferences"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "preferences" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "name" varchar(100) NOT NULL, "owner_id" integer(30) NOT NULL, "owner_type" varchar(50) NOT NULL, "group_id" integer, "group_type" varchar(50), "value" text(255), "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_preferences")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_preferences"
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100624175547')
+Migrating to AddGuestFlag (20100811163637)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "users" ADD "guest" boolean[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100811163637')[0m
+Migrating to DropOrderToken (20100811205836)
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_orders" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "number" varchar(15), "item_total" decimal DEFAULT 0.0 NOT NULL, "total" decimal DEFAULT 0.0 NOT NULL, "created_at" datetime, "updated_at" datetime, "state" varchar(255), "token" varchar(255), "adjustment_total" decimal DEFAULT 0.0 NOT NULL, "credit_total" decimal DEFAULT 0.0 NOT NULL, "completed_at" datetime)
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("orders")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_orders_on_number')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_orders")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_orders_on_number" ON "altered_orders" ("number")
+ [1m[36mSQL (0.7ms)[0m [1mDROP TABLE "orders"[0m
+ [1m[35mSQL (0.6ms)[0m CREATE TABLE "orders" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "user_id" integer, "number" varchar(15), "item_total" decimal DEFAULT 0.0 NOT NULL, "total" decimal DEFAULT 0.0 NOT NULL, "created_at" datetime, "updated_at" datetime, "state" varchar(255), "adjustment_total" decimal DEFAULT 0.0 NOT NULL, "credit_total" decimal DEFAULT 0.0 NOT NULL, "completed_at" datetime)
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_orders")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('temp_index_altered_orders_on_number')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("orders")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "index_orders_on_number" ON "orders" ("number")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_orders"[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100811205836')[0m
+Migrating to PaymentsStateAndAssignedToOrderOnly (20100812162326)
+ [1m[35mSQL (0.4ms)[0m CREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "source_id" integer, "source_type" varchar(255), "payment_method_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("payments")[0m
+ [1m[35mSQL (1.2ms)[0m DROP TABLE "payments"
+ [1m[36mSQL (1.0ms)[0m [1mCREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "source_id" integer, "source_type" varchar(255), "payment_method_id" integer) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_payments")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_payments"[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TEMPORARY TABLE "altered_payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "payable_type" varchar(255), "source_id" integer, "source_type" varchar(255), "payment_method_id" integer)
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("payments")[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "payments"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "payments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "created_at" datetime, "updated_at" datetime, "amount" decimal DEFAULT 0.0 NOT NULL, "source_id" integer, "source_type" varchar(255), "payment_method_id" integer) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("altered_payments")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_payments"[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "payments" ADD "state" varchar(255)
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100812162326')
+Migrating to CreateAddressKeysForOrder (20100813023502)
+ [1m[36mSQL (0.8ms)[0m [1mALTER TABLE "orders" ADD "bill_address_id" integer[0m
+ [1m[35mSQL (0.8ms)[0m ALTER TABLE "orders" ADD "ship_address_id" integer
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100813023502')
+Migrating to PaymentTotalForOrders (20100813185745)
+ [1m[36mSQL (0.8ms)[0m [1mALTER TABLE "orders" ADD "payment_total" decimal(8,2) DEFAULT 0.0[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100813185745')[0m
+Migrating to ShippingMethodIdForOrders (20100816212146)
+ [1m[35mSQL (0.9ms)[0m ALTER TABLE "orders" ADD "shipping_method_id" integer
+ [1m[36mSQL (1.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100816212146')
+Migrating to AddShipmentAndPaymentState (20100817152723)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "orders" ADD "shipment_state" varchar(255)[0m
+ [1m[35mSQL (0.7ms)[0m ALTER TABLE "orders" ADD "payment_state" varchar(255)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100817152723')
+Migrating to RefactorAdjustments (20100819170125)
+ [1m[36mSQL (0.9ms)[0m [1mALTER TABLE "adjustments" ADD "mandatory" boolean[0m
+ [1m[35mSQL (1.3ms)[0m ALTER TABLE "adjustments" ADD "frozen" boolean
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "adjustment_source_type" varchar(255), "mandatory" boolean, "frozen" boolean) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.8ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "adjustment_source_type" varchar(255), "mandatory" boolean, "frozen" boolean) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (0.5ms)[0m [1mALTER TABLE "adjustments" ADD "originator_id" integer[0m
+ [1m[35mSQL (0.5ms)[0m ALTER TABLE "adjustments" ADD "originator_type" varchar(255)
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "type" varchar(255), "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "description" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.2ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "position" integer, "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.4ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "frozen" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100819170125')
+Migrating to ResponseCodeAndAvsResponseForPayments (20100820135707)
+ [1m[36mSQL (0.8ms)[0m [1mALTER TABLE "payments" ADD "response_code" varchar(255)[0m
+ [1m[35mSQL (0.6ms)[0m ALTER TABLE "payments" ADD "avs_response" varchar(255)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100820135707')
+Migrating to ChangeGuestFlagToAnonymous (20100901171814)
+ [1m[36mSQL (0.6ms)[0m [1mCREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255), "anonymous" boolean) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_persistence_token')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_persistence_token" ON "altered_users" ("persistence_token")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('temp_index_altered_users_on_persistence_token')
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")[0m
+ [1m[35mSQL (0.7ms)[0m DROP TABLE "users"
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255), "anonymous" boolean) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("altered_users")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('temp_index_altered_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('temp_index_altered_users_on_persistence_token')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_users_on_openid_identifier')
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_users_on_persistence_token" ON "users" ("persistence_token")[0m
+ [1m[35mSQL (0.4ms)[0m DROP TABLE "altered_users"
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100901171814')
+Migrating to EmailForOrders (20100903203949)
+ [1m[36mSQL (1.2ms)[0m [1mALTER TABLE "orders" ADD "email" varchar(255)[0m
+ [1m[35mSQL (2.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20100903203949')[0m
+Migrating to CreateMailMethods (20100923162011)
+ [1m[35mSQL (0.7ms)[0m CREATE TABLE "mail_methods" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "environment" varchar(255), "active" boolean DEFAULT 't', "created_at" datetime, "updated_at" datetime)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100923162011')
+Migrating to RenameFrozenToLocked (20100929151905)
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TEMPORARY TABLE "altered_adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "locked" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.3ms)[0m [1mCREATE INDEX "temp_index_altered_adjustments_on_order_id" ON "altered_adjustments" ("order_id")[0m
+ [1m[35mSQL (0.7ms)[0m DROP TABLE "adjustments"
+ [1m[36mSQL (0.7ms)[0m [1mCREATE TABLE "adjustments" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "order_id" integer, "amount" decimal, "label" varchar(255), "created_at" datetime, "updated_at" datetime, "source_id" integer, "source_type" varchar(255), "mandatory" boolean, "locked" boolean, "originator_id" integer, "originator_type" varchar(255)) [0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("altered_adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_adjustments_on_order_id" ON "adjustments" ("order_id")[0m
+ [1m[35mSQL (0.3ms)[0m DROP TABLE "altered_adjustments"
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20100929151905')
+Migrating to MoveSpecialInstructionsToOrders (20101008190536)
+ [1m[36mSQL (1.1ms)[0m [1mALTER TABLE "orders" ADD "special_instructions" text[0m
+ [1m[35mSQL (0.2ms)[0m update orders set special_instructions = (select special_instructions from checkouts where order_id = orders.id)
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101008190536')
+Migrating to CreateLogEntries (20101026184700)
+ [1m[36mSQL (0.8ms)[0m [1mCREATE TABLE "log_entries" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "source_id" integer, "source_type" varchar(255), "details" text, "created_at" datetime, "updated_at" datetime) [0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184700')[0m
+Migrating to MigrateTransactionsToPaymentState (20101026184714)
+ [1m[35mTransaction Load (0.4ms)[0m select * from transactions group by payment_id having count(payment_id) = 1 and txn_type = 1
+ [1m[36mTransaction Load (0.4ms)[0m [1mselect * from transactions where txn_type=4[0m
+ [1m[35mTransaction Load (1.9ms)[0m select * from transactions where txn_type = 2
+ [1m[36mTransaction Load (0.2ms)[0m [1mselect * from transactions where txn_type = 3[0m
+ [1m[35mTransaction Load (0.2ms)[0m select * from transactions where txn_type = 5
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101026184714')
+Migrating to DeleteInProgressOrders (20101026184746)
+ [1m[36mSQL (1.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m DELETE FROM "orders" WHERE ("orders"."state" = 'in_progress')
+ [1m[36mSQL (0.2ms)[0m [1mdelete from adjustments where order_id not in (select id from orders)[0m
+ [1m[35mSQL (0.2ms)[0m delete from checkouts where order_id not in (select id from orders)
+ [1m[36mSQL (0.2ms)[0m [1mdelete from shipments where order_id not in (select id from orders)[0m
+ [1m[35mSQL (0.4ms)[0m delete from payments where order_id not in (select id from orders)
+ [1m[36mSQL (0.2ms)[0m [1mdelete from line_items where order_id not in (select id from orders)[0m
+ [1m[35mSQL (0.2ms)[0m delete from inventory_units where order_id not in (select id from orders)
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101026184746')
+Migrating to MigrateCheckoutToOrders (20101026184808)
+ [1m[36mOrder Load (0.5ms)[0m [1mSELECT "orders".* FROM "orders" WHERE ("orders"."id" >= 0) ORDER BY orders.id ASC LIMIT 1000[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184808')[0m
+Migrating to MigrateAdjustments (20101026184833)
+ [1m[35mSQL (1.8ms)[0m update adjustments set amount = 0.0 where amount is null
+ [1m[36mSQL (0.2ms)[0m [1mupdate adjustments set mandatory = 'true', locked = 'true'[0m
+ [1m[35mSQL (1.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184833')[0m
+Migrating to RemoveShippedState (20101026184855)
+ [1m[35mOrder Load (0.4ms)[0m SELECT "orders".* FROM "orders" WHERE ("orders"."state" = 'shipped')
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101026184855')
+Migrating to PreventNilPaymentTotal (20101026184916)
+ [1m[36mSQL (0.3ms)[0m [1mupdate orders set payment_total = 0.0 where payment_total is null[0m
+ [1m[35mSQL (2.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184916')[0m
+Migrating to PreventNilEmail (20101026184932)
+ [1m[35mSQL (0.3ms)[0m update orders set email = 'guest@example.com' where email is null
+ [1m[36mSQL (0.2ms)[0m [1mupdate orders set email = 'guest@example.com' where email = ''[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026184932')[0m
+Migrating to GenerateAnonymousUsers (20101026184959)
+ [1m[35mOrder Load (0.5ms)[0m SELECT "orders".* FROM "orders" WHERE ("orders"."user_id" IS NULL)
+ [1m[36mSQL (2.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101026184959')
+Migrating to UpdateOrderState (20101026185022)
+ [1m[36mOrder Load (0.4ms)[0m [1mSELECT "orders".* FROM "orders"[0m
+ [1m[35mSQL (1.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026185022')[0m
+Migrating to CleanupLegacyTables (20101026192225)
+ [1m[35mSQL (0.8ms)[0m DROP TABLE "checkouts"
+ [1m[36mSQL (0.7ms)[0m [1mDROP TABLE "transactions"[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "open_id_authentication_associations"
+ [1m[36mSQL (2.4ms)[0m [1mDROP TABLE "open_id_authentication_nonces"[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101026192225')[0m
+Migrating to RemoveNumberAndCvvFromCredicard (20101028151745)
+ [1m[35mSQL (0.5ms)[0m CREATE TEMPORARY TABLE "altered_creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "number" text, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("creditcards")[0m
+ [1m[35mSQL (0.5ms)[0m DROP TABLE "creditcards"
+ [1m[36mSQL (0.8ms)[0m [1mCREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_creditcards")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_creditcards"[0m
+ [1m[35mSQL (0.4ms)[0m CREATE TEMPORARY TABLE "altered_creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "month" varchar(255), "year" varchar(255), "verification_value" text, "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255))
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("creditcards")[0m
+ [1m[35mSQL (0.6ms)[0m DROP TABLE "creditcards"
+ [1m[36mSQL (0.5ms)[0m [1mCREATE TABLE "creditcards" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "month" varchar(255), "year" varchar(255), "cc_type" varchar(255), "last_digits" varchar(255), "first_name" varchar(255), "last_name" varchar(255), "created_at" datetime, "updated_at" datetime, "start_month" varchar(255), "start_year" varchar(255), "issue_number" varchar(255), "address_id" integer, "gateway_customer_profile_id" varchar(255), "gateway_payment_profile_id" varchar(255)) [0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_creditcards")
+ [1m[36mSQL (0.3ms)[0m [1mDROP TABLE "altered_creditcards"[0m
+ [1m[35mSQL (2.0ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101028151745')[0m
+Migrating to DropAnonymousFieldForUser (20101103212716)
+ [1m[35mSQL (0.6ms)[0m CREATE TEMPORARY TABLE "altered_users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255), "anonymous" boolean)
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.5ms)[0m PRAGMA index_info('index_users_on_persistence_token')
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("altered_users")
+ [1m[36mSQL (0.5ms)[0m [1mCREATE INDEX "temp_index_altered_users_on_persistence_token" ON "altered_users" ("persistence_token")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("altered_users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_users_on_persistence_token')[0m
+ [1m[35mSQL (0.3ms)[0m CREATE INDEX "temp_index_altered_users_on_openid_identifier" ON "altered_users" ("openid_identifier")
+ [1m[36mSQL (1.1ms)[0m [1mDROP TABLE "users"[0m
+ [1m[35mSQL (1.1ms)[0m CREATE TABLE "users" ("id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, "email" varchar(255), "crypted_password" varchar(128), "salt" varchar(128), "remember_token" varchar(255), "remember_token_expires_at" varchar(255), "created_at" datetime, "updated_at" datetime, "persistence_token" varchar(255), "single_access_token" varchar(255), "perishable_token" varchar(255), "login_count" integer DEFAULT 0 NOT NULL, "failed_login_count" integer DEFAULT 0 NOT NULL, "last_request_at" datetime, "current_login_at" datetime, "last_login_at" datetime, "current_login_ip" varchar(255), "last_login_ip" varchar(255), "login" varchar(255), "ship_address_id" integer, "bill_address_id" integer, "openid_identifier" varchar(255))
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("altered_users")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('temp_index_altered_users_on_openid_identifier')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('temp_index_altered_users_on_persistence_token')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.4ms)[0m [1mCREATE INDEX "index_users_on_openid_identifier" ON "users" ("openid_identifier")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.4ms)[0m CREATE INDEX "index_users_on_persistence_token" ON "users" ("persistence_token")
+ [1m[36mSQL (0.4ms)[0m [1mDROP TABLE "altered_users"[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101103212716')[0m
+Migrating to RenamedRmaCancelledState (20101111133551)
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mReturnAuthorization Load (0.2ms)[0m [1mSELECT "return_authorizations".* FROM "return_authorizations" WHERE ("return_authorizations"."state" = 'cancelled')[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "schema_migrations" ("version") VALUES ('20101111133551')[0m
+Migrating to FixProblematicIndexNames (20101117031806)
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("preferences")
+Index name 'index_preferences_on_index_preferences_on_owner_and_attribute_and_preference' on table 'preferences' does not exist. Skipping.
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("preferences")[0m
+ [1m[35mSQL (0.7ms)[0m CREATE UNIQUE INDEX "ix_prefs_on_owner_attr_pref" ON "preferences" ("owner_id", "owner_type", "name", "group_id", "group_type")
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "schema_migrations" ("version") VALUES ('20101117031806')
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (2.7ms)[0m [1mSELECT "schema_migrations"."version" FROM "schema_migrations"[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("addresses")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_addresses_on_lastname')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_addresses_on_firstname')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("adjustments")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_adjustments_on_order_id')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("assets")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_assets_on_viewable_type_and_type')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_assets_on_viewable_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("calculators")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("configurations")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_configurations_on_name_and_type')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("countries")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("coupons")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("creditcards")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("gateways")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("inventory_units")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_inventory_units_on_shipment_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_inventory_units_on_order_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_inventory_units_on_variant_id')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("line_items")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_line_items_on_variant_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_line_items_on_order_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("log_entries")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("mail_methods")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("option_types")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("option_types_prototypes")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("option_values")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("option_values_variants")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_info('index_option_values_variants_on_variant_id_and_option_value_id')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_info('index_option_values_variants_on_variant_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("orders")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_orders_on_number')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("payment_methods")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("payments")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("preferences")[0m
+ [1m[35mSQL (0.3ms)[0m PRAGMA index_info('ix_prefs_on_owner_attr_pref')
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("product_groups")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_product_groups_on_permalink')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_product_groups_on_name')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("product_groups_products")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("product_option_types")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("product_properties")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_product_properties_on_product_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("product_scopes")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_product_scopes_on_product_group_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_product_scopes_on_name')
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("products")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_products_on_permalink')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_on_name')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_products_on_deleted_at')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_on_available_on')[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("products_taxons")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_products_taxons_on_taxon_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_products_taxons_on_product_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("properties")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("properties_prototypes")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("prototypes")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("question_categories")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("questions")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("return_authorizations")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("roles")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("roles_users")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_roles_users_on_user_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_roles_users_on_role_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("shipments")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_shipments_on_number')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("shipping_categories")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("shipping_methods")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("state_events")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("states")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("tax_categories")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("tax_rates")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("taxonomies")[0m
+ [1m[35mSQL (0.2ms)[0m PRAGMA index_list("taxons")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_taxons_on_taxonomy_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_taxons_on_parent_id')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_taxons_on_permalink')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("trackers")
+ [1m[36mSQL (0.2ms)[0m [1mPRAGMA index_list("users")[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_info('index_users_on_persistence_token')
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_users_on_openid_identifier')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("variants")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_info('index_variants_on_product_id')[0m
+ [1m[35mSQL (0.1ms)[0m PRAGMA index_list("zone_members")
+ [1m[36mSQL (0.1ms)[0m [1mPRAGMA index_list("zones")[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT "schema_migrations"."version" FROM "schema_migrations"
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.3ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mAppConfiguration Load (0.3ms)[0m [1mSELECT "configurations"."id" FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1[0m
+ [1m[35mSQL (0.5ms)[0m INSERT INTO "configurations" ("created_at", "name", "type", "updated_at") VALUES ('2010-11-22 20:50:57.375758', 'Default configuration', 'AppConfiguration', '2010-11-22 20:50:57.375758')
+ [1m[36mPreference Load (0.4ms)[0m [1mSELECT "preferences".* FROM "preferences" WHERE ("preferences".owner_id = 1 AND "preferences".owner_type = 'Configuration')[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.418228', 'foo', 1, '2010-11-22 20:50:58.418228')
+ [1m[36mQuestion Load (0.3ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:50:58.432221', 1, 'value for question', 1, '2010-11-22 20:50:58.432221')
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.443573', 'foo', 1, '2010-11-22 20:50:58.443573')[0m
+ [1m[35mQuestion Load (0.3ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:50:58.448474', 1, 'value for question', 1, '2010-11-22 20:50:58.448474')[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE ("question_categories"."id" = 1) LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.461357', 'foo', 1, '2010-11-22 20:50:58.461357')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.495537', 'foo', 1, '2010-11-22 20:50:58.495537')
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.510502', 'foo', 1, '2010-11-22 20:50:58.510502')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.524455', 'foo', 1, '2010-11-22 20:50:58.524455')
+ [1m[36mQuestion Load (0.2ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:50:58.529992', 1, 'value for question', 1, '2010-11-22 20:50:58.529992')
+ [1m[36mQuestion Load (0.3ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:50:58.534925', 2, 'value for question', 1, '2010-11-22 20:50:58.534925')
+ [1m[36mSQL (0.2ms)[0m [1mUPDATE "questions" SET position = (position - 1) WHERE (1 = 1 AND position > 1)[0m
+ [1m[35mQuestion Load (0.3ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1 AND id != 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mUPDATE "questions" SET "position" = 2, "updated_at" = '2010-11-22 20:50:58.540340' WHERE ("questions"."id" = 1)[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.549611', 'value for name', 1, '2010-11-22 20:50:58.549611')
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (1.1ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.695720', 'value for name', 1, '2010-11-22 20:50:58.695720')[0m
+ [1m[35mQuestion Load (0.2ms)[0m SELECT "questions".* FROM "questions" WHERE ("questions".question_category_id = 1)
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" IS NULL) LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" IS NULL) LIMIT 1
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'test') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.720977', 'test', 1, '2010-11-22 20:50:58.720977')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.727687', 'value for name', 2, '2010-11-22 20:50:58.727687')
+ [1m[36mSQL (0.2ms)[0m [1mUPDATE "question_categories" SET position = (position - 1) WHERE (1 = 1 AND position > 1)[0m
+ [1m[35mQuestionCategory Load (0.4ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1 AND id != 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mUPDATE "question_categories" SET "position" = 2, "updated_at" = '2010-11-22 20:50:58.733619' WHERE ("question_categories"."id" = 1)[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:50:58.743788', 'value for name', 1, '2010-11-22 20:50:58.743788')
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mSQL (4.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.6ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.213834', 'foo', 1, '2010-11-22 20:51:12.213834')[0m
+ [1m[35mQuestion Load (0.3ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:51:12.233776', 1, 'value for question', 1, '2010-11-22 20:51:12.233776')[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.244290', 'foo', 1, '2010-11-22 20:51:12.244290')
+ [1m[36mQuestion Load (0.2ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:51:12.249038', 1, 'value for question', 1, '2010-11-22 20:51:12.249038')
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE ("question_categories"."id" = 1) LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.261560', 'foo', 1, '2010-11-22 20:51:12.261560')
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.295066', 'foo', 1, '2010-11-22 20:51:12.295066')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.308867', 'foo', 1, '2010-11-22 20:51:12.308867')
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.322691', 'foo', 1, '2010-11-22 20:51:12.322691')[0m
+ [1m[35mQuestion Load (0.2ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:51:12.327618', 1, 'value for question', 1, '2010-11-22 20:51:12.327618')[0m
+ [1m[35mQuestion Load (0.5ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:51:12.332831', 2, 'value for question', 1, '2010-11-22 20:51:12.332831')[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "questions" SET position = (position - 1) WHERE (1 = 1 AND position > 1)
+ [1m[36mQuestion Load (0.3ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1 AND id != 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "questions" SET "position" = 2, "updated_at" = '2010-11-22 20:51:12.338028' WHERE ("questions"."id" = 1)
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.347364', 'value for name', 1, '2010-11-22 20:51:12.347364')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.356039', 'value for name', 1, '2010-11-22 20:51:12.356039')
+ [1m[36mQuestion Load (0.2ms)[0m [1mSELECT "questions".* FROM "questions" WHERE ("questions".question_category_id = 1)[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" IS NULL) LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" IS NULL) LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'test') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (2.0ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.379206', 'test', 1, '2010-11-22 20:51:12.379206')
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.524332', 'value for name', 2, '2010-11-22 20:51:12.524332')[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "question_categories" SET position = (position - 1) WHERE (1 = 1 AND position > 1)
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1 AND id != 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "question_categories" SET "position" = 2, "updated_at" = '2010-11-22 20:51:12.529778' WHERE ("question_categories"."id" = 1)
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:51:12.539123', 'value for name', 1, '2010-11-22 20:51:12.539123')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[36mSQL (4.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.9ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (3.8ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (2.9ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.6ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.6ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.093789', 'foo', 1, '2010-11-22 20:53:56.093789')[0m
+ [1m[35mQuestion Load (0.3ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:53:56.111482', 1, 'value for question', 1, '2010-11-22 20:53:56.111482')[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.122013', 'foo', 1, '2010-11-22 20:53:56.122013')
+ [1m[36mQuestion Load (0.3ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:53:56.127002', 1, 'value for question', 1, '2010-11-22 20:53:56.127002')
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE ("question_categories"."id" = 1) LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.139955', 'foo', 1, '2010-11-22 20:53:56.139955')
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.173649', 'foo', 1, '2010-11-22 20:53:56.173649')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.187679', 'foo', 1, '2010-11-22 20:53:56.187679')
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.203276', 'foo', 1, '2010-11-22 20:53:56.203276')[0m
+ [1m[35mQuestion Load (0.2ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:53:56.208168', 1, 'value for question', 1, '2010-11-22 20:53:56.208168')[0m
+ [1m[35mQuestion Load (0.3ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:53:56.213502', 2, 'value for question', 1, '2010-11-22 20:53:56.213502')[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "questions" SET position = (position - 1) WHERE (1 = 1 AND position > 1)
+ [1m[36mQuestion Load (0.4ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1 AND id != 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "questions" SET "position" = 2, "updated_at" = '2010-11-22 20:53:56.218767' WHERE ("questions"."id" = 1)
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.370293', 'value for name', 1, '2010-11-22 20:53:56.370293')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.379458', 'value for name', 1, '2010-11-22 20:53:56.379458')
+ [1m[36mQuestion Load (0.2ms)[0m [1mSELECT "questions".* FROM "questions" WHERE ("questions".question_category_id = 1)[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" IS NULL) LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" IS NULL) LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'test') LIMIT 1
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.406891', 'test', 1, '2010-11-22 20:53:56.406891')
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.413445', 'value for name', 2, '2010-11-22 20:53:56.413445')[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "question_categories" SET position = (position - 1) WHERE (1 = 1 AND position > 1)
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1 AND id != 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "question_categories" SET "position" = 2, "updated_at" = '2010-11-22 20:53:56.418637' WHERE ("question_categories"."id" = 1)
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:53:56.428043', 'value for name', 1, '2010-11-22 20:53:56.428043')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (2.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.4ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (2.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.6ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.6ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (2.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.9ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (4.8ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.9ms)
+Completed 200 OK in 165ms (Views: 13.6ms | ActiveRecord: 23.7ms)
+ Processing by FaqsController#show as HTML
+ Parameters: {"id"=>1}
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+Completed in 5ms
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (4.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.9ms)
+Completed 200 OK in 168ms (Views: 13.5ms | ActiveRecord: 24.6ms)
+ Processing by FaqsController#show as HTML
+ Parameters: {"id"=>1}
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+Completed in 5ms
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (4.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.4ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (2.1ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (1.1ms)
+Completed 200 OK in 167ms (Views: 13.7ms | ActiveRecord: 25.0ms)
+ Processing by FaqsController#show as HTML
+ Parameters: {"id"=>1}
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+Completed in 5ms
+ [1m[35mSQL (1.7ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (4.7ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.9ms)
+Completed 200 OK in 164ms (Views: 13.2ms | ActiveRecord: 23.8ms)
+ Processing by FaqsController#show as HTML
+ Parameters: {"id"=>1}
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+Completed in 5ms
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.5ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.9ms)
+Completed 200 OK in 166ms (Views: 13.2ms | ActiveRecord: 24.9ms)
+ Processing by FaqsController#show as HTML
+ Parameters: {"id"=>1}
+Completed in 7ms
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (2.5ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.9ms)
+Completed 200 OK in 172ms (Views: 13.2ms | ActiveRecord: 24.0ms)
+ Processing by FaqsController#show as HTML
+ Parameters: {"id"=>1}
+Completed in 6ms
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.8ms)
+Completed 200 OK in 166ms (Views: 13.2ms | ActiveRecord: 22.5ms)
+ Processing by FaqsController#show as HTML
+ Parameters: {"id"=>1}
+Completed in 6ms
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.3ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.9ms)
+Completed 200 OK in 165ms (Views: 13.4ms | ActiveRecord: 23.5ms)
+ Processing by FaqsController#show as HTML
+ Parameters: {"id"=>1}
+Completed in 7ms
+ [1m[36mSQL (4.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.9ms)
+Completed 200 OK in 168ms (Views: 14.0ms | ActiveRecord: 23.2ms)
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[36mSQL (5.1ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.2ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.2ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ Processing by FaqsController#index as HTML
+Rendered /home/josh/Playground/spree-faq/app/views/faqs/index.html.erb within layouts/spree_application (0.9ms)
+Completed 200 OK in 172ms (Views: 13.3ms | ActiveRecord: 23.5ms)
+ [1m[36mSQL (4.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mMailMethod Load (0.3ms)[0m [1mSELECT "mail_methods".* FROM "mail_methods" WHERE ("mail_methods"."environment" = 'test') LIMIT 1[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.5ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.4ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.4ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mSQL (1.3ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mProperty Load (0.2ms)[0m [1mSELECT "properties".* FROM "properties" WHERE ("properties"."name" = 'brand') LIMIT 1[0m
+ [1m[35mSQL (1.2ms)[0m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+ [1m[36mSQL (1.3ms)[0m [1m SELECT name
+ FROM sqlite_master
+ WHERE type = 'table' AND NOT name = 'sqlite_sequence'
+[0m
+ [1m[35mAppConfiguration Load (0.4ms)[0m SELECT "configurations".* FROM "configurations" WHERE ("configurations"."type" = 'AppConfiguration') AND ("configurations"."name" = 'Default configuration') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.5ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.610166', 'foo', 1, '2010-11-22 20:59:18.610166')[0m
+ [1m[35mQuestion Load (0.3ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:59:18.627996', 1, 'value for question', 1, '2010-11-22 20:59:18.627996')[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.639009', 'foo', 1, '2010-11-22 20:59:18.639009')
+ [1m[36mQuestion Load (0.3ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m INSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:59:18.644030', 1, 'value for question', 1, '2010-11-22 20:59:18.644030')
+ [1m[36mQuestionCategory Load (0.3ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE ("question_categories"."id" = 1) LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.657110', 'foo', 1, '2010-11-22 20:59:18.657110')
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.691921', 'foo', 1, '2010-11-22 20:59:18.691921')[0m
+ [1m[35mQuestionCategory Load (0.4ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.707682', 'foo', 1, '2010-11-22 20:59:18.707682')
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'foo') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.721783', 'foo', 1, '2010-11-22 20:59:18.721783')[0m
+ [1m[35mQuestion Load (0.3ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:59:18.727169', 1, 'value for question', 1, '2010-11-22 20:59:18.727169')[0m
+ [1m[35mQuestion Load (0.3ms)[0m SELECT "questions".* FROM "questions" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "questions" ("answer", "created_at", "position", "question", "question_category_id", "updated_at") VALUES ('value for answer', '2010-11-22 20:59:18.732898', 2, 'value for question', 1, '2010-11-22 20:59:18.732898')[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "questions" SET position = (position - 1) WHERE (1 = 1 AND position > 1)
+ [1m[36mQuestion Load (0.3ms)[0m [1mSELECT "questions".* FROM "questions" WHERE (1 = 1 AND id != 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "questions" SET "position" = 2, "updated_at" = '2010-11-22 20:59:18.738437' WHERE ("questions"."id" = 1)
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.3ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.748093', 'value for name', 1, '2010-11-22 20:59:18.748093')[0m
+ [1m[35mQuestionCategory Load (0.3ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.4ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.756895', 'value for name', 1, '2010-11-22 20:59:18.756895')
+ [1m[36mQuestion Load (0.2ms)[0m [1mSELECT "questions".* FROM "questions" WHERE ("questions".question_category_id = 1)[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" IS NULL) LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" IS NULL) LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'test') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.3ms)[0m INSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.780543', 'test', 1, '2010-11-22 20:59:18.780543')
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.4ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.2ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.786953', 'value for name', 2, '2010-11-22 20:59:18.786953')[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "question_categories" SET position = (position - 1) WHERE (1 = 1 AND position > 1)
+ [1m[36mQuestionCategory Load (0.4ms)[0m [1mSELECT "question_categories".* FROM "question_categories" WHERE (1 = 1 AND id != 1) ORDER BY position DESC LIMIT 1[0m
+ [1m[35mSQL (0.2ms)[0m UPDATE "question_categories" SET "position" = 2, "updated_at" = '2010-11-22 20:59:18.794062' WHERE ("question_categories"."id" = 1)
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories".* FROM "question_categories" WHERE (1 = 1) ORDER BY position DESC LIMIT 1
+ [1m[36mSQL (0.4ms)[0m [1mINSERT INTO "question_categories" ("created_at", "name", "position", "updated_at") VALUES ('2010-11-22 20:59:18.802791', 'value for name', 1, '2010-11-22 20:59:18.802791')[0m
+ [1m[35mQuestionCategory Load (0.2ms)[0m SELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1
+ [1m[36mQuestionCategory Load (0.2ms)[0m [1mSELECT "question_categories"."id" FROM "question_categories" WHERE ("question_categories"."name" = 'value for name') LIMIT 1[0m
+ Processing by FaqsController#index as HTML
+Completed 200 OK in 15ms (Views: 12.7ms | ActiveRecord: 38.3ms)
diff --git a/spec/test_app/public/404.html b/spec/test_app/public/404.html
new file mode 100644
index 0000000..9a48320
--- /dev/null
+++ b/spec/test_app/public/404.html
@@ -0,0 +1,26 @@
+
+
+
+
The page you were looking for doesn't exist (404)
+
+
+
+
+
+
+
The page you were looking for doesn't exist.
+
You may have mistyped the address or the page may have moved.
+
+
+
diff --git a/spec/test_app/public/422.html b/spec/test_app/public/422.html
new file mode 100644
index 0000000..83660ab
--- /dev/null
+++ b/spec/test_app/public/422.html
@@ -0,0 +1,26 @@
+
+
+
+
The change you wanted was rejected (422)
+
+
+
+
+
+
+
The change you wanted was rejected.
+
Maybe you tried to change something you didn't have access to.
+
+
+
diff --git a/spec/test_app/public/500.html b/spec/test_app/public/500.html
new file mode 100644
index 0000000..b80307f
--- /dev/null
+++ b/spec/test_app/public/500.html
@@ -0,0 +1,26 @@
+
+
+
+
We're sorry, but something went wrong (500)
+
+
+
+
+
+
+
We're sorry, but something went wrong.
+
We've been notified about this issue and we'll take a look at it shortly.
+
+
+
diff --git a/spec/test_app/public/favicon.ico b/spec/test_app/public/favicon.ico
new file mode 100644
index 0000000..e69de29
diff --git a/spec/test_app/public/images/add-to-cart.png b/spec/test_app/public/images/add-to-cart.png
new file mode 100644
index 0000000..4cccc77
Binary files /dev/null and b/spec/test_app/public/images/add-to-cart.png differ
diff --git a/spec/test_app/public/images/admin/bg/active-tab.png b/spec/test_app/public/images/admin/bg/active-tab.png
new file mode 100644
index 0000000..8024634
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/active-tab.png differ
diff --git a/spec/test_app/public/images/admin/bg/admin_tab_back.png b/spec/test_app/public/images/admin/bg/admin_tab_back.png
new file mode 100644
index 0000000..143bc52
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/admin_tab_back.png differ
diff --git a/spec/test_app/public/images/admin/bg/admin_tab_selected_back.png b/spec/test_app/public/images/admin/bg/admin_tab_selected_back.png
new file mode 100644
index 0000000..ed63dc2
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/admin_tab_selected_back.png differ
diff --git a/spec/test_app/public/images/admin/bg/content-back-blue.png b/spec/test_app/public/images/admin/bg/content-back-blue.png
new file mode 100644
index 0000000..140aa48
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/content-back-blue.png differ
diff --git a/spec/test_app/public/images/admin/bg/content-back-green.png b/spec/test_app/public/images/admin/bg/content-back-green.png
new file mode 100644
index 0000000..394070f
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/content-back-green.png differ
diff --git a/spec/test_app/public/images/admin/bg/content-back.png b/spec/test_app/public/images/admin/bg/content-back.png
new file mode 100644
index 0000000..eb44ace
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/content-back.png differ
diff --git a/spec/test_app/public/images/admin/bg/flash-error.png b/spec/test_app/public/images/admin/bg/flash-error.png
new file mode 100644
index 0000000..486cdc4
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/flash-error.png differ
diff --git a/spec/test_app/public/images/admin/bg/flash-notice.png b/spec/test_app/public/images/admin/bg/flash-notice.png
new file mode 100644
index 0000000..729fb38
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/flash-notice.png differ
diff --git a/spec/test_app/public/images/admin/bg/green-stripes.gif b/spec/test_app/public/images/admin/bg/green-stripes.gif
new file mode 100644
index 0000000..7efafcf
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/green-stripes.gif differ
diff --git a/spec/test_app/public/images/admin/bg/green-stripes.png b/spec/test_app/public/images/admin/bg/green-stripes.png
new file mode 100644
index 0000000..6459eb6
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/green-stripes.png differ
diff --git a/spec/test_app/public/images/admin/bg/grid_header_back.png b/spec/test_app/public/images/admin/bg/grid_header_back.png
new file mode 100644
index 0000000..a3774a0
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/grid_header_back.png differ
diff --git a/spec/test_app/public/images/admin/bg/grid_header_back_green.png b/spec/test_app/public/images/admin/bg/grid_header_back_green.png
new file mode 100644
index 0000000..51694de
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/grid_header_back_green.png differ
diff --git a/spec/test_app/public/images/admin/bg/header-bg.png b/spec/test_app/public/images/admin/bg/header-bg.png
new file mode 100644
index 0000000..2b70cbb
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/header-bg.png differ
diff --git a/spec/test_app/public/images/admin/bg/header.png b/spec/test_app/public/images/admin/bg/header.png
new file mode 100644
index 0000000..5eba367
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/header.png differ
diff --git a/spec/test_app/public/images/admin/bg/header_bg.jpg b/spec/test_app/public/images/admin/bg/header_bg.jpg
new file mode 100755
index 0000000..fdb3073
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/header_bg.jpg differ
diff --git a/spec/test_app/public/images/admin/bg/menu-current.png b/spec/test_app/public/images/admin/bg/menu-current.png
new file mode 100644
index 0000000..5ad3169
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/menu-current.png differ
diff --git a/spec/test_app/public/images/admin/bg/red-stripes.gif b/spec/test_app/public/images/admin/bg/red-stripes.gif
new file mode 100644
index 0000000..9658243
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/red-stripes.gif differ
diff --git a/spec/test_app/public/images/admin/bg/red-stripes.png b/spec/test_app/public/images/admin/bg/red-stripes.png
new file mode 100644
index 0000000..aab5cfc
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/red-stripes.png differ
diff --git a/spec/test_app/public/images/admin/bg/spree_50.png b/spec/test_app/public/images/admin/bg/spree_50.png
new file mode 100644
index 0000000..8d1ade4
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/spree_50.png differ
diff --git a/spec/test_app/public/images/admin/bg/subnav-divider.png b/spec/test_app/public/images/admin/bg/subnav-divider.png
new file mode 100644
index 0000000..79014f4
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/subnav-divider.png differ
diff --git a/spec/test_app/public/images/admin/bg/subnav.png b/spec/test_app/public/images/admin/bg/subnav.png
new file mode 100644
index 0000000..f686445
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/subnav.png differ
diff --git a/spec/test_app/public/images/admin/bg/tab-back.png b/spec/test_app/public/images/admin/bg/tab-back.png
new file mode 100644
index 0000000..bd859aa
Binary files /dev/null and b/spec/test_app/public/images/admin/bg/tab-back.png differ
diff --git a/spec/test_app/public/images/admin/buttons/blue/left_01.png b/spec/test_app/public/images/admin/buttons/blue/left_01.png
new file mode 100644
index 0000000..07d494e
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/blue/left_01.png differ
diff --git a/spec/test_app/public/images/admin/buttons/blue/right_01.png b/spec/test_app/public/images/admin/buttons/blue/right_01.png
new file mode 100644
index 0000000..f49cd29
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/blue/right_01.png differ
diff --git a/spec/test_app/public/images/admin/buttons/drag-handle-green.png b/spec/test_app/public/images/admin/buttons/drag-handle-green.png
new file mode 100644
index 0000000..43f2d55
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/drag-handle-green.png differ
diff --git a/spec/test_app/public/images/admin/buttons/green/left_01.png b/spec/test_app/public/images/admin/buttons/green/left_01.png
new file mode 100644
index 0000000..c23c722
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/green/left_01.png differ
diff --git a/spec/test_app/public/images/admin/buttons/green/right_01.png b/spec/test_app/public/images/admin/buttons/green/right_01.png
new file mode 100644
index 0000000..7faa92f
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/green/right_01.png differ
diff --git a/spec/test_app/public/images/admin/buttons/left_01.png b/spec/test_app/public/images/admin/buttons/left_01.png
new file mode 100644
index 0000000..ae846e4
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/left_01.png differ
diff --git a/spec/test_app/public/images/admin/buttons/left_01_small.png b/spec/test_app/public/images/admin/buttons/left_01_small.png
new file mode 100644
index 0000000..d294f31
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/left_01_small.png differ
diff --git a/spec/test_app/public/images/admin/buttons/orange/left_03.png b/spec/test_app/public/images/admin/buttons/orange/left_03.png
new file mode 100644
index 0000000..c9bb3a6
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/orange/left_03.png differ
diff --git a/spec/test_app/public/images/admin/buttons/orange/right_03.png b/spec/test_app/public/images/admin/buttons/orange/right_03.png
new file mode 100644
index 0000000..7559031
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/orange/right_03.png differ
diff --git a/spec/test_app/public/images/admin/buttons/right_01.png b/spec/test_app/public/images/admin/buttons/right_01.png
new file mode 100644
index 0000000..6593e13
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/right_01.png differ
diff --git a/spec/test_app/public/images/admin/buttons/right_01_small.png b/spec/test_app/public/images/admin/buttons/right_01_small.png
new file mode 100644
index 0000000..7801efa
Binary files /dev/null and b/spec/test_app/public/images/admin/buttons/right_01_small.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/1.png b/spec/test_app/public/images/admin/icons/16x16/1.png
new file mode 100644
index 0000000..c67d6f1
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/1.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/10.png b/spec/test_app/public/images/admin/icons/16x16/10.png
new file mode 100644
index 0000000..0634e58
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/10.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/2.png b/spec/test_app/public/images/admin/icons/16x16/2.png
new file mode 100644
index 0000000..c88cbcd
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/2.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/3.png b/spec/test_app/public/images/admin/icons/16x16/3.png
new file mode 100644
index 0000000..b2b8ee1
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/3.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/4.png b/spec/test_app/public/images/admin/icons/16x16/4.png
new file mode 100644
index 0000000..6024879
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/4.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/5.png b/spec/test_app/public/images/admin/icons/16x16/5.png
new file mode 100644
index 0000000..fe88298
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/5.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/6.png b/spec/test_app/public/images/admin/icons/16x16/6.png
new file mode 100644
index 0000000..0976c6b
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/6.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/7.png b/spec/test_app/public/images/admin/icons/16x16/7.png
new file mode 100644
index 0000000..557dcd6
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/7.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/8.png b/spec/test_app/public/images/admin/icons/16x16/8.png
new file mode 100644
index 0000000..4b7f308
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/8.png differ
diff --git a/spec/test_app/public/images/admin/icons/16x16/9.png b/spec/test_app/public/images/admin/icons/16x16/9.png
new file mode 100644
index 0000000..2e4e494
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/16x16/9.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/1.png b/spec/test_app/public/images/admin/icons/32x32/1.png
new file mode 100644
index 0000000..f5a30f0
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/1.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/10.png b/spec/test_app/public/images/admin/icons/32x32/10.png
new file mode 100644
index 0000000..0cd609a
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/10.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/11.png b/spec/test_app/public/images/admin/icons/32x32/11.png
new file mode 100644
index 0000000..39d6e64
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/11.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/2.png b/spec/test_app/public/images/admin/icons/32x32/2.png
new file mode 100644
index 0000000..9c6459c
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/2.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/3.png b/spec/test_app/public/images/admin/icons/32x32/3.png
new file mode 100644
index 0000000..9dc32eb
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/3.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/4.png b/spec/test_app/public/images/admin/icons/32x32/4.png
new file mode 100644
index 0000000..dcdc539
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/4.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/5.png b/spec/test_app/public/images/admin/icons/32x32/5.png
new file mode 100644
index 0000000..a3a165d
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/5.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/6.png b/spec/test_app/public/images/admin/icons/32x32/6.png
new file mode 100644
index 0000000..06b22dd
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/6.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/7.png b/spec/test_app/public/images/admin/icons/32x32/7.png
new file mode 100644
index 0000000..7b37fef
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/7.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/8.png b/spec/test_app/public/images/admin/icons/32x32/8.png
new file mode 100644
index 0000000..2dced96
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/8.png differ
diff --git a/spec/test_app/public/images/admin/icons/32x32/9.png b/spec/test_app/public/images/admin/icons/32x32/9.png
new file mode 100644
index 0000000..c16ccfd
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/32x32/9.png differ
diff --git a/spec/test_app/public/images/admin/icons/accept.png b/spec/test_app/public/images/admin/icons/accept.png
new file mode 100755
index 0000000..89c8129
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/accept.png differ
diff --git a/spec/test_app/public/images/admin/icons/add.gif b/spec/test_app/public/images/admin/icons/add.gif
new file mode 100644
index 0000000..ee70e1a
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/add.gif differ
diff --git a/spec/test_app/public/images/admin/icons/add.png b/spec/test_app/public/images/admin/icons/add.png
new file mode 100755
index 0000000..6332fef
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/add.png differ
diff --git a/spec/test_app/public/images/admin/icons/arrow-down.gif b/spec/test_app/public/images/admin/icons/arrow-down.gif
new file mode 100644
index 0000000..a967b9f
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/arrow-down.gif differ
diff --git a/spec/test_app/public/images/admin/icons/cross.png b/spec/test_app/public/images/admin/icons/cross.png
new file mode 100755
index 0000000..1514d51
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/cross.png differ
diff --git a/spec/test_app/public/images/admin/icons/delete.gif b/spec/test_app/public/images/admin/icons/delete.gif
new file mode 100644
index 0000000..72523e3
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/delete.gif differ
diff --git a/spec/test_app/public/images/admin/icons/delete.png b/spec/test_app/public/images/admin/icons/delete.png
new file mode 100755
index 0000000..1514d51
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/delete.png differ
diff --git a/spec/test_app/public/images/admin/icons/drag.gif b/spec/test_app/public/images/admin/icons/drag.gif
new file mode 100644
index 0000000..77e8a4d
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/drag.gif differ
diff --git a/spec/test_app/public/images/admin/icons/edit.gif b/spec/test_app/public/images/admin/icons/edit.gif
new file mode 100644
index 0000000..e1b9afd
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/edit.gif differ
diff --git a/spec/test_app/public/images/admin/icons/edit.png b/spec/test_app/public/images/admin/icons/edit.png
new file mode 100755
index 0000000..0bfecd5
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/edit.png differ
diff --git a/spec/test_app/public/images/admin/icons/email.png b/spec/test_app/public/images/admin/icons/email.png
new file mode 100755
index 0000000..7348aed
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/email.png differ
diff --git a/spec/test_app/public/images/admin/icons/error.png b/spec/test_app/public/images/admin/icons/error.png
new file mode 100755
index 0000000..628cf2d
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/error.png differ
diff --git a/spec/test_app/public/images/admin/icons/exclamation.png b/spec/test_app/public/images/admin/icons/exclamation.png
new file mode 100755
index 0000000..c37bd06
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/exclamation.png differ
diff --git a/spec/test_app/public/images/admin/icons/feed.png b/spec/test_app/public/images/admin/icons/feed.png
new file mode 100755
index 0000000..315c4f4
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/feed.png differ
diff --git a/spec/test_app/public/images/admin/icons/pdf.png b/spec/test_app/public/images/admin/icons/pdf.png
new file mode 100755
index 0000000..8f8095e
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/pdf.png differ
diff --git a/spec/test_app/public/images/admin/icons/reorder.gif b/spec/test_app/public/images/admin/icons/reorder.gif
new file mode 100644
index 0000000..1cbd306
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/reorder.gif differ
diff --git a/spec/test_app/public/images/admin/icons/search.gif b/spec/test_app/public/images/admin/icons/search.gif
new file mode 100644
index 0000000..6d5f4c7
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/search.gif differ
diff --git a/spec/test_app/public/images/admin/icons/send-email.png b/spec/test_app/public/images/admin/icons/send-email.png
new file mode 100755
index 0000000..4a6c5d3
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/send-email.png differ
diff --git a/spec/test_app/public/images/admin/icons/stop.png b/spec/test_app/public/images/admin/icons/stop.png
new file mode 100755
index 0000000..08f2493
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/stop.png differ
diff --git a/spec/test_app/public/images/admin/icons/tick.png b/spec/test_app/public/images/admin/icons/tick.png
new file mode 100755
index 0000000..a9925a0
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/tick.png differ
diff --git a/spec/test_app/public/images/admin/icons/up.gif b/spec/test_app/public/images/admin/icons/up.gif
new file mode 100644
index 0000000..3fe4851
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/up.gif differ
diff --git a/spec/test_app/public/images/admin/icons/xls.png b/spec/test_app/public/images/admin/icons/xls.png
new file mode 100755
index 0000000..b977d7e
Binary files /dev/null and b/spec/test_app/public/images/admin/icons/xls.png differ
diff --git a/spec/test_app/public/images/admin/tabs/off-left.png b/spec/test_app/public/images/admin/tabs/off-left.png
new file mode 100644
index 0000000..201e23c
Binary files /dev/null and b/spec/test_app/public/images/admin/tabs/off-left.png differ
diff --git a/spec/test_app/public/images/admin/tabs/off-right.png b/spec/test_app/public/images/admin/tabs/off-right.png
new file mode 100644
index 0000000..d41182d
Binary files /dev/null and b/spec/test_app/public/images/admin/tabs/off-right.png differ
diff --git a/spec/test_app/public/images/admin/tabs/on-left.png b/spec/test_app/public/images/admin/tabs/on-left.png
new file mode 100644
index 0000000..1e65102
Binary files /dev/null and b/spec/test_app/public/images/admin/tabs/on-left.png differ
diff --git a/spec/test_app/public/images/admin/tabs/on-right.png b/spec/test_app/public/images/admin/tabs/on-right.png
new file mode 100644
index 0000000..e178f27
Binary files /dev/null and b/spec/test_app/public/images/admin/tabs/on-right.png differ
diff --git a/spec/test_app/public/images/ajax_loader.gif b/spec/test_app/public/images/ajax_loader.gif
new file mode 100644
index 0000000..d42f72c
Binary files /dev/null and b/spec/test_app/public/images/ajax_loader.gif differ
diff --git a/spec/test_app/public/images/amex_cid.gif b/spec/test_app/public/images/amex_cid.gif
new file mode 100644
index 0000000..13d91de
Binary files /dev/null and b/spec/test_app/public/images/amex_cid.gif differ
diff --git a/spec/test_app/public/images/bg-button-hover.png b/spec/test_app/public/images/bg-button-hover.png
new file mode 100644
index 0000000..82457c0
Binary files /dev/null and b/spec/test_app/public/images/bg-button-hover.png differ
diff --git a/spec/test_app/public/images/bg-button-pressed.png b/spec/test_app/public/images/bg-button-pressed.png
new file mode 100644
index 0000000..c6c7e8f
Binary files /dev/null and b/spec/test_app/public/images/bg-button-pressed.png differ
diff --git a/spec/test_app/public/images/bg-button.gif b/spec/test_app/public/images/bg-button.gif
new file mode 100755
index 0000000..4cdb876
Binary files /dev/null and b/spec/test_app/public/images/bg-button.gif differ
diff --git a/spec/test_app/public/images/bg-button.png b/spec/test_app/public/images/bg-button.png
new file mode 100644
index 0000000..83183d3
Binary files /dev/null and b/spec/test_app/public/images/bg-button.png differ
diff --git a/spec/test_app/public/images/blue/left_01.png b/spec/test_app/public/images/blue/left_01.png
new file mode 100755
index 0000000..07d494e
Binary files /dev/null and b/spec/test_app/public/images/blue/left_01.png differ
diff --git a/spec/test_app/public/images/blue/right_01.png b/spec/test_app/public/images/blue/right_01.png
new file mode 100755
index 0000000..f49cd29
Binary files /dev/null and b/spec/test_app/public/images/blue/right_01.png differ
diff --git a/spec/test_app/public/images/body-back.png b/spec/test_app/public/images/body-back.png
new file mode 100644
index 0000000..f1bf777
Binary files /dev/null and b/spec/test_app/public/images/body-back.png differ
diff --git a/spec/test_app/public/images/bottom_shine.png b/spec/test_app/public/images/bottom_shine.png
new file mode 100755
index 0000000..160a8cb
Binary files /dev/null and b/spec/test_app/public/images/bottom_shine.png differ
diff --git a/spec/test_app/public/images/breadcrumb.gif b/spec/test_app/public/images/breadcrumb.gif
new file mode 100644
index 0000000..0364808
Binary files /dev/null and b/spec/test_app/public/images/breadcrumb.gif differ
diff --git a/spec/test_app/public/images/button-dark-hover.png b/spec/test_app/public/images/button-dark-hover.png
new file mode 100644
index 0000000..5d3e6fb
Binary files /dev/null and b/spec/test_app/public/images/button-dark-hover.png differ
diff --git a/spec/test_app/public/images/button-dark.png b/spec/test_app/public/images/button-dark.png
new file mode 100644
index 0000000..92b60e8
Binary files /dev/null and b/spec/test_app/public/images/button-dark.png differ
diff --git a/spec/test_app/public/images/buttons/bg-button-hover.png b/spec/test_app/public/images/buttons/bg-button-hover.png
new file mode 100644
index 0000000..82457c0
Binary files /dev/null and b/spec/test_app/public/images/buttons/bg-button-hover.png differ
diff --git a/spec/test_app/public/images/buttons/bg-button-pressed.png b/spec/test_app/public/images/buttons/bg-button-pressed.png
new file mode 100644
index 0000000..c6c7e8f
Binary files /dev/null and b/spec/test_app/public/images/buttons/bg-button-pressed.png differ
diff --git a/spec/test_app/public/images/buttons/bg-button.gif b/spec/test_app/public/images/buttons/bg-button.gif
new file mode 100755
index 0000000..4cdb876
Binary files /dev/null and b/spec/test_app/public/images/buttons/bg-button.gif differ
diff --git a/spec/test_app/public/images/buttons/bg-button.png b/spec/test_app/public/images/buttons/bg-button.png
new file mode 100644
index 0000000..83183d3
Binary files /dev/null and b/spec/test_app/public/images/buttons/bg-button.png differ
diff --git a/spec/test_app/public/images/buttons/blue/left_01.png b/spec/test_app/public/images/buttons/blue/left_01.png
new file mode 100755
index 0000000..07d494e
Binary files /dev/null and b/spec/test_app/public/images/buttons/blue/left_01.png differ
diff --git a/spec/test_app/public/images/buttons/blue/right_01.png b/spec/test_app/public/images/buttons/blue/right_01.png
new file mode 100755
index 0000000..f49cd29
Binary files /dev/null and b/spec/test_app/public/images/buttons/blue/right_01.png differ
diff --git a/spec/test_app/public/images/buttons/button-dark-hover.png b/spec/test_app/public/images/buttons/button-dark-hover.png
new file mode 100644
index 0000000..5d3e6fb
Binary files /dev/null and b/spec/test_app/public/images/buttons/button-dark-hover.png differ
diff --git a/spec/test_app/public/images/buttons/button-dark.png b/spec/test_app/public/images/buttons/button-dark.png
new file mode 100644
index 0000000..92b60e8
Binary files /dev/null and b/spec/test_app/public/images/buttons/button-dark.png differ
diff --git a/spec/test_app/public/images/buttons/drag-handle-green.png b/spec/test_app/public/images/buttons/drag-handle-green.png
new file mode 100755
index 0000000..43f2d55
Binary files /dev/null and b/spec/test_app/public/images/buttons/drag-handle-green.png differ
diff --git a/spec/test_app/public/images/buttons/green/left_01.png b/spec/test_app/public/images/buttons/green/left_01.png
new file mode 100755
index 0000000..c23c722
Binary files /dev/null and b/spec/test_app/public/images/buttons/green/left_01.png differ
diff --git a/spec/test_app/public/images/buttons/green/right_01.png b/spec/test_app/public/images/buttons/green/right_01.png
new file mode 100755
index 0000000..7faa92f
Binary files /dev/null and b/spec/test_app/public/images/buttons/green/right_01.png differ
diff --git a/spec/test_app/public/images/buttons/left_01.png b/spec/test_app/public/images/buttons/left_01.png
new file mode 100755
index 0000000..ae846e4
Binary files /dev/null and b/spec/test_app/public/images/buttons/left_01.png differ
diff --git a/spec/test_app/public/images/buttons/left_01_small.png b/spec/test_app/public/images/buttons/left_01_small.png
new file mode 100755
index 0000000..cb1363f
Binary files /dev/null and b/spec/test_app/public/images/buttons/left_01_small.png differ
diff --git a/spec/test_app/public/images/buttons/orange/left_03.png b/spec/test_app/public/images/buttons/orange/left_03.png
new file mode 100755
index 0000000..c9bb3a6
Binary files /dev/null and b/spec/test_app/public/images/buttons/orange/left_03.png differ
diff --git a/spec/test_app/public/images/buttons/orange/right_03.png b/spec/test_app/public/images/buttons/orange/right_03.png
new file mode 100755
index 0000000..7559031
Binary files /dev/null and b/spec/test_app/public/images/buttons/orange/right_03.png differ
diff --git a/spec/test_app/public/images/buttons/right_01.png b/spec/test_app/public/images/buttons/right_01.png
new file mode 100755
index 0000000..6593e13
Binary files /dev/null and b/spec/test_app/public/images/buttons/right_01.png differ
diff --git a/spec/test_app/public/images/buttons/right_01_small.png b/spec/test_app/public/images/buttons/right_01_small.png
new file mode 100755
index 0000000..91196ba
Binary files /dev/null and b/spec/test_app/public/images/buttons/right_01_small.png differ
diff --git a/spec/test_app/public/images/buttons/sxsw-ribbon-v1.png b/spec/test_app/public/images/buttons/sxsw-ribbon-v1.png
new file mode 100644
index 0000000..03fcbf2
Binary files /dev/null and b/spec/test_app/public/images/buttons/sxsw-ribbon-v1.png differ
diff --git a/spec/test_app/public/images/buttons/top-shine.png b/spec/test_app/public/images/buttons/top-shine.png
new file mode 100644
index 0000000..7617808
Binary files /dev/null and b/spec/test_app/public/images/buttons/top-shine.png differ
diff --git a/spec/test_app/public/images/calendar_date_select/calendar.gif b/spec/test_app/public/images/calendar_date_select/calendar.gif
new file mode 100644
index 0000000..6b7b7ca
Binary files /dev/null and b/spec/test_app/public/images/calendar_date_select/calendar.gif differ
diff --git a/spec/test_app/public/images/cart-empty.png b/spec/test_app/public/images/cart-empty.png
new file mode 100644
index 0000000..df1a37a
Binary files /dev/null and b/spec/test_app/public/images/cart-empty.png differ
diff --git a/spec/test_app/public/images/cart-empty_x32.png b/spec/test_app/public/images/cart-empty_x32.png
new file mode 100644
index 0000000..0f2b511
Binary files /dev/null and b/spec/test_app/public/images/cart-empty_x32.png differ
diff --git a/spec/test_app/public/images/cart-full.png b/spec/test_app/public/images/cart-full.png
new file mode 100644
index 0000000..6d9f2dc
Binary files /dev/null and b/spec/test_app/public/images/cart-full.png differ
diff --git a/spec/test_app/public/images/cart-full_x32.png b/spec/test_app/public/images/cart-full_x32.png
new file mode 100644
index 0000000..8b038bc
Binary files /dev/null and b/spec/test_app/public/images/cart-full_x32.png differ
diff --git a/spec/test_app/public/images/checkout.png b/spec/test_app/public/images/checkout.png
new file mode 100644
index 0000000..41dcb70
Binary files /dev/null and b/spec/test_app/public/images/checkout.png differ
diff --git a/spec/test_app/public/images/creditcard.gif b/spec/test_app/public/images/creditcard.gif
new file mode 100644
index 0000000..5c0ec44
Binary files /dev/null and b/spec/test_app/public/images/creditcard.gif differ
diff --git a/spec/test_app/public/images/datepicker/backstripes.gif b/spec/test_app/public/images/datepicker/backstripes.gif
new file mode 100644
index 0000000..63f1403
Binary files /dev/null and b/spec/test_app/public/images/datepicker/backstripes.gif differ
diff --git a/spec/test_app/public/images/datepicker/bg_header.jpg b/spec/test_app/public/images/datepicker/bg_header.jpg
new file mode 100644
index 0000000..10dbd74
Binary files /dev/null and b/spec/test_app/public/images/datepicker/bg_header.jpg differ
diff --git a/spec/test_app/public/images/datepicker/bullet1.gif b/spec/test_app/public/images/datepicker/bullet1.gif
new file mode 100644
index 0000000..ae352c2
Binary files /dev/null and b/spec/test_app/public/images/datepicker/bullet1.gif differ
diff --git a/spec/test_app/public/images/datepicker/bullet2.gif b/spec/test_app/public/images/datepicker/bullet2.gif
new file mode 100644
index 0000000..04b293d
Binary files /dev/null and b/spec/test_app/public/images/datepicker/bullet2.gif differ
diff --git a/spec/test_app/public/images/datepicker/cal.gif b/spec/test_app/public/images/datepicker/cal.gif
new file mode 100644
index 0000000..8526cf5
Binary files /dev/null and b/spec/test_app/public/images/datepicker/cal.gif differ
diff --git a/spec/test_app/public/images/datepicker/gradient-e5e5e5-ffffff.gif b/spec/test_app/public/images/datepicker/gradient-e5e5e5-ffffff.gif
new file mode 100644
index 0000000..72a0d3e
Binary files /dev/null and b/spec/test_app/public/images/datepicker/gradient-e5e5e5-ffffff.gif differ
diff --git a/spec/test_app/public/images/discover_cid.gif b/spec/test_app/public/images/discover_cid.gif
new file mode 100644
index 0000000..097c75b
Binary files /dev/null and b/spec/test_app/public/images/discover_cid.gif differ
diff --git a/spec/test_app/public/images/drag-handle-green.png b/spec/test_app/public/images/drag-handle-green.png
new file mode 100755
index 0000000..43f2d55
Binary files /dev/null and b/spec/test_app/public/images/drag-handle-green.png differ
diff --git a/spec/test_app/public/images/favicon.ico b/spec/test_app/public/images/favicon.ico
new file mode 100644
index 0000000..b5b89e3
Binary files /dev/null and b/spec/test_app/public/images/favicon.ico differ
diff --git a/spec/test_app/public/images/green/left_01.png b/spec/test_app/public/images/green/left_01.png
new file mode 100755
index 0000000..c23c722
Binary files /dev/null and b/spec/test_app/public/images/green/left_01.png differ
diff --git a/spec/test_app/public/images/green/right_01.png b/spec/test_app/public/images/green/right_01.png
new file mode 100755
index 0000000..7faa92f
Binary files /dev/null and b/spec/test_app/public/images/green/right_01.png differ
diff --git a/spec/test_app/public/images/grid.png b/spec/test_app/public/images/grid.png
new file mode 100644
index 0000000..129d4a2
Binary files /dev/null and b/spec/test_app/public/images/grid.png differ
diff --git a/spec/test_app/public/images/left_01.png b/spec/test_app/public/images/left_01.png
new file mode 100755
index 0000000..ae846e4
Binary files /dev/null and b/spec/test_app/public/images/left_01.png differ
diff --git a/spec/test_app/public/images/left_01_small.png b/spec/test_app/public/images/left_01_small.png
new file mode 100755
index 0000000..cb1363f
Binary files /dev/null and b/spec/test_app/public/images/left_01_small.png differ
diff --git a/spec/test_app/public/images/master_cid.jpg b/spec/test_app/public/images/master_cid.jpg
new file mode 100644
index 0000000..b6b77e7
Binary files /dev/null and b/spec/test_app/public/images/master_cid.jpg differ
diff --git a/spec/test_app/public/images/menu-current.png b/spec/test_app/public/images/menu-current.png
new file mode 100644
index 0000000..9b73247
Binary files /dev/null and b/spec/test_app/public/images/menu-current.png differ
diff --git a/spec/test_app/public/images/menu-hover.png b/spec/test_app/public/images/menu-hover.png
new file mode 100644
index 0000000..f061455
Binary files /dev/null and b/spec/test_app/public/images/menu-hover.png differ
diff --git a/spec/test_app/public/images/noimage/mini.jpg b/spec/test_app/public/images/noimage/mini.jpg
new file mode 100644
index 0000000..3538aa6
Binary files /dev/null and b/spec/test_app/public/images/noimage/mini.jpg differ
diff --git a/spec/test_app/public/images/noimage/product.jpg b/spec/test_app/public/images/noimage/product.jpg
new file mode 100644
index 0000000..76b2d41
Binary files /dev/null and b/spec/test_app/public/images/noimage/product.jpg differ
diff --git a/spec/test_app/public/images/noimage/small.jpg b/spec/test_app/public/images/noimage/small.jpg
new file mode 100644
index 0000000..b636e84
Binary files /dev/null and b/spec/test_app/public/images/noimage/small.jpg differ
diff --git a/spec/test_app/public/images/openid-inputicon.gif b/spec/test_app/public/images/openid-inputicon.gif
new file mode 100644
index 0000000..cde836c
Binary files /dev/null and b/spec/test_app/public/images/openid-inputicon.gif differ
diff --git a/spec/test_app/public/images/orange/left_03.png b/spec/test_app/public/images/orange/left_03.png
new file mode 100755
index 0000000..c9bb3a6
Binary files /dev/null and b/spec/test_app/public/images/orange/left_03.png differ
diff --git a/spec/test_app/public/images/orange/right_03.png b/spec/test_app/public/images/orange/right_03.png
new file mode 100755
index 0000000..7559031
Binary files /dev/null and b/spec/test_app/public/images/orange/right_03.png differ
diff --git a/spec/test_app/public/images/progress.gif b/spec/test_app/public/images/progress.gif
new file mode 100644
index 0000000..e0deaaa
Binary files /dev/null and b/spec/test_app/public/images/progress.gif differ
diff --git a/spec/test_app/public/images/right_01.png b/spec/test_app/public/images/right_01.png
new file mode 100755
index 0000000..6593e13
Binary files /dev/null and b/spec/test_app/public/images/right_01.png differ
diff --git a/spec/test_app/public/images/right_01_small.png b/spec/test_app/public/images/right_01_small.png
new file mode 100755
index 0000000..91196ba
Binary files /dev/null and b/spec/test_app/public/images/right_01_small.png differ
diff --git a/spec/test_app/public/images/separator.png b/spec/test_app/public/images/separator.png
new file mode 100644
index 0000000..c137258
Binary files /dev/null and b/spec/test_app/public/images/separator.png differ
diff --git a/spec/test_app/public/images/shadow-top.png b/spec/test_app/public/images/shadow-top.png
new file mode 100644
index 0000000..0c1dd93
Binary files /dev/null and b/spec/test_app/public/images/shadow-top.png differ
diff --git a/spec/test_app/public/images/shadow_top.png b/spec/test_app/public/images/shadow_top.png
new file mode 100755
index 0000000..53fc5f5
Binary files /dev/null and b/spec/test_app/public/images/shadow_top.png differ
diff --git a/spec/test_app/public/images/spinner.gif b/spec/test_app/public/images/spinner.gif
new file mode 100644
index 0000000..274b4fd
Binary files /dev/null and b/spec/test_app/public/images/spinner.gif differ
diff --git a/spec/test_app/public/images/spree.jpg b/spec/test_app/public/images/spree.jpg
new file mode 100644
index 0000000..237c19c
Binary files /dev/null and b/spec/test_app/public/images/spree.jpg differ
diff --git a/spec/test_app/public/images/spree/progress.gif b/spec/test_app/public/images/spree/progress.gif
new file mode 100644
index 0000000..9cf90cf
Binary files /dev/null and b/spec/test_app/public/images/spree/progress.gif differ
diff --git a/spec/test_app/public/images/spree/spinner.gif b/spec/test_app/public/images/spree/spinner.gif
new file mode 100644
index 0000000..e24bb17
Binary files /dev/null and b/spec/test_app/public/images/spree/spinner.gif differ
diff --git a/spec/test_app/public/images/spree/spree.jpg b/spec/test_app/public/images/spree/spree.jpg
new file mode 100644
index 0000000..237c19c
Binary files /dev/null and b/spec/test_app/public/images/spree/spree.jpg differ
diff --git a/spec/test_app/public/images/step-progress/completed-completed.gif b/spec/test_app/public/images/step-progress/completed-completed.gif
new file mode 100644
index 0000000..6b1136e
Binary files /dev/null and b/spec/test_app/public/images/step-progress/completed-completed.gif differ
diff --git a/spec/test_app/public/images/step-progress/completed-current.gif b/spec/test_app/public/images/step-progress/completed-current.gif
new file mode 100644
index 0000000..6a1ba68
Binary files /dev/null and b/spec/test_app/public/images/step-progress/completed-current.gif differ
diff --git a/spec/test_app/public/images/step-progress/completed-first.gif b/spec/test_app/public/images/step-progress/completed-first.gif
new file mode 100644
index 0000000..a43f825
Binary files /dev/null and b/spec/test_app/public/images/step-progress/completed-first.gif differ
diff --git a/spec/test_app/public/images/step-progress/current-first.gif b/spec/test_app/public/images/step-progress/current-first.gif
new file mode 100644
index 0000000..9aef49a
Binary files /dev/null and b/spec/test_app/public/images/step-progress/current-first.gif differ
diff --git a/spec/test_app/public/images/step-progress/current-incomplete.gif b/spec/test_app/public/images/step-progress/current-incomplete.gif
new file mode 100644
index 0000000..0972228
Binary files /dev/null and b/spec/test_app/public/images/step-progress/current-incomplete.gif differ
diff --git a/spec/test_app/public/images/step-progress/current-right.gif b/spec/test_app/public/images/step-progress/current-right.gif
new file mode 100644
index 0000000..a2c652d
Binary files /dev/null and b/spec/test_app/public/images/step-progress/current-right.gif differ
diff --git a/spec/test_app/public/images/step-progress/incomplete-incomplete.gif b/spec/test_app/public/images/step-progress/incomplete-incomplete.gif
new file mode 100644
index 0000000..9637b7f
Binary files /dev/null and b/spec/test_app/public/images/step-progress/incomplete-incomplete.gif differ
diff --git a/spec/test_app/public/images/step-progress/incomplete-right.gif b/spec/test_app/public/images/step-progress/incomplete-right.gif
new file mode 100644
index 0000000..ae59e23
Binary files /dev/null and b/spec/test_app/public/images/step-progress/incomplete-right.gif differ
diff --git a/spec/test_app/public/images/steps/1.png b/spec/test_app/public/images/steps/1.png
new file mode 100644
index 0000000..f7cffbc
Binary files /dev/null and b/spec/test_app/public/images/steps/1.png differ
diff --git a/spec/test_app/public/images/steps/1_small.png b/spec/test_app/public/images/steps/1_small.png
new file mode 100644
index 0000000..5543197
Binary files /dev/null and b/spec/test_app/public/images/steps/1_small.png differ
diff --git a/spec/test_app/public/images/steps/2.png b/spec/test_app/public/images/steps/2.png
new file mode 100644
index 0000000..a9fe83a
Binary files /dev/null and b/spec/test_app/public/images/steps/2.png differ
diff --git a/spec/test_app/public/images/steps/2_small.png b/spec/test_app/public/images/steps/2_small.png
new file mode 100644
index 0000000..98674eb
Binary files /dev/null and b/spec/test_app/public/images/steps/2_small.png differ
diff --git a/spec/test_app/public/images/steps/3.png b/spec/test_app/public/images/steps/3.png
new file mode 100644
index 0000000..e884e3e
Binary files /dev/null and b/spec/test_app/public/images/steps/3.png differ
diff --git a/spec/test_app/public/images/steps/3_small.png b/spec/test_app/public/images/steps/3_small.png
new file mode 100644
index 0000000..45ca1f3
Binary files /dev/null and b/spec/test_app/public/images/steps/3_small.png differ
diff --git a/spec/test_app/public/images/steps/4.png b/spec/test_app/public/images/steps/4.png
new file mode 100644
index 0000000..3134b5e
Binary files /dev/null and b/spec/test_app/public/images/steps/4.png differ
diff --git a/spec/test_app/public/images/steps/4_small.png b/spec/test_app/public/images/steps/4_small.png
new file mode 100644
index 0000000..fb582a9
Binary files /dev/null and b/spec/test_app/public/images/steps/4_small.png differ
diff --git a/spec/test_app/public/images/steps/5.png b/spec/test_app/public/images/steps/5.png
new file mode 100644
index 0000000..df211c2
Binary files /dev/null and b/spec/test_app/public/images/steps/5.png differ
diff --git a/spec/test_app/public/images/steps/5_small.png b/spec/test_app/public/images/steps/5_small.png
new file mode 100644
index 0000000..2c24d43
Binary files /dev/null and b/spec/test_app/public/images/steps/5_small.png differ
diff --git a/spec/test_app/public/images/steps/6.png b/spec/test_app/public/images/steps/6.png
new file mode 100644
index 0000000..8d5378c
Binary files /dev/null and b/spec/test_app/public/images/steps/6.png differ
diff --git a/spec/test_app/public/images/steps/6_small.png b/spec/test_app/public/images/steps/6_small.png
new file mode 100644
index 0000000..e579440
Binary files /dev/null and b/spec/test_app/public/images/steps/6_small.png differ
diff --git a/spec/test_app/public/images/sxsw-ribbon-v1.png b/spec/test_app/public/images/sxsw-ribbon-v1.png
new file mode 100644
index 0000000..03fcbf2
Binary files /dev/null and b/spec/test_app/public/images/sxsw-ribbon-v1.png differ
diff --git a/spec/test_app/public/images/tab_bottom.gif b/spec/test_app/public/images/tab_bottom.gif
new file mode 100644
index 0000000..da70aaf
Binary files /dev/null and b/spec/test_app/public/images/tab_bottom.gif differ
diff --git a/spec/test_app/public/images/tile-header.png b/spec/test_app/public/images/tile-header.png
new file mode 100644
index 0000000..8365cf3
Binary files /dev/null and b/spec/test_app/public/images/tile-header.png differ
diff --git a/spec/test_app/public/images/tile-slider.png b/spec/test_app/public/images/tile-slider.png
new file mode 100644
index 0000000..6ab3f95
Binary files /dev/null and b/spec/test_app/public/images/tile-slider.png differ
diff --git a/spec/test_app/public/images/top-shine.png b/spec/test_app/public/images/top-shine.png
new file mode 100644
index 0000000..7617808
Binary files /dev/null and b/spec/test_app/public/images/top-shine.png differ
diff --git a/spec/test_app/public/images/tree-nav-icons/bullet.gif b/spec/test_app/public/images/tree-nav-icons/bullet.gif
new file mode 100644
index 0000000..6305bae
Binary files /dev/null and b/spec/test_app/public/images/tree-nav-icons/bullet.gif differ
diff --git a/spec/test_app/public/images/tree-nav-icons/minus.gif b/spec/test_app/public/images/tree-nav-icons/minus.gif
new file mode 100644
index 0000000..154e45a
Binary files /dev/null and b/spec/test_app/public/images/tree-nav-icons/minus.gif differ
diff --git a/spec/test_app/public/images/tree-nav-icons/plus.gif b/spec/test_app/public/images/tree-nav-icons/plus.gif
new file mode 100644
index 0000000..93d2ade
Binary files /dev/null and b/spec/test_app/public/images/tree-nav-icons/plus.gif differ
diff --git a/spec/test_app/public/images/tree-nav-icons/treeview-loading.gif b/spec/test_app/public/images/tree-nav-icons/treeview-loading.gif
new file mode 100644
index 0000000..0bbf3bc
Binary files /dev/null and b/spec/test_app/public/images/tree-nav-icons/treeview-loading.gif differ
diff --git a/spec/test_app/public/images/tree-nav-icons/treeview-sprite.gif b/spec/test_app/public/images/tree-nav-icons/treeview-sprite.gif
new file mode 100644
index 0000000..a04eff6
Binary files /dev/null and b/spec/test_app/public/images/tree-nav-icons/treeview-sprite.gif differ
diff --git a/spec/test_app/public/images/update.png b/spec/test_app/public/images/update.png
new file mode 100644
index 0000000..4c5a58d
Binary files /dev/null and b/spec/test_app/public/images/update.png differ
diff --git a/spec/test_app/public/images/visa_cid.gif b/spec/test_app/public/images/visa_cid.gif
new file mode 100644
index 0000000..2dc5403
Binary files /dev/null and b/spec/test_app/public/images/visa_cid.gif differ
diff --git a/spec/test_app/public/images/wrapper-back-2.png b/spec/test_app/public/images/wrapper-back-2.png
new file mode 100644
index 0000000..b2df535
Binary files /dev/null and b/spec/test_app/public/images/wrapper-back-2.png differ
diff --git a/spec/test_app/public/images/wrapper-back.png b/spec/test_app/public/images/wrapper-back.png
new file mode 100644
index 0000000..6006636
Binary files /dev/null and b/spec/test_app/public/images/wrapper-back.png differ
diff --git a/spec/test_app/public/images/yui-menubaritem_submenuindicator.png b/spec/test_app/public/images/yui-menubaritem_submenuindicator.png
new file mode 100644
index 0000000..030941c
Binary files /dev/null and b/spec/test_app/public/images/yui-menubaritem_submenuindicator.png differ
diff --git a/spec/test_app/public/images/yui-menubaritem_submenuindicator_disabled.png b/spec/test_app/public/images/yui-menubaritem_submenuindicator_disabled.png
new file mode 100644
index 0000000..6c16122
Binary files /dev/null and b/spec/test_app/public/images/yui-menubaritem_submenuindicator_disabled.png differ
diff --git a/spec/test_app/public/images/yui-menuitem_checkbox.png b/spec/test_app/public/images/yui-menuitem_checkbox.png
new file mode 100644
index 0000000..1437a4f
Binary files /dev/null and b/spec/test_app/public/images/yui-menuitem_checkbox.png differ
diff --git a/spec/test_app/public/images/yui-menuitem_checkbox_disabled.png b/spec/test_app/public/images/yui-menuitem_checkbox_disabled.png
new file mode 100644
index 0000000..5d5b998
Binary files /dev/null and b/spec/test_app/public/images/yui-menuitem_checkbox_disabled.png differ
diff --git a/spec/test_app/public/images/yui-menuitem_submenuindicator.png b/spec/test_app/public/images/yui-menuitem_submenuindicator.png
new file mode 100644
index 0000000..ea4f660
Binary files /dev/null and b/spec/test_app/public/images/yui-menuitem_submenuindicator.png differ
diff --git a/spec/test_app/public/images/yui-menuitem_submenuindicator_disabled.png b/spec/test_app/public/images/yui-menuitem_submenuindicator_disabled.png
new file mode 100644
index 0000000..427d60a
Binary files /dev/null and b/spec/test_app/public/images/yui-menuitem_submenuindicator_disabled.png differ
diff --git a/spec/test_app/public/images/yui-sprite.png b/spec/test_app/public/images/yui-sprite.png
new file mode 100644
index 0000000..afd65e0
Binary files /dev/null and b/spec/test_app/public/images/yui-sprite.png differ
diff --git a/spec/test_app/public/javascripts/additional-methods.js b/spec/test_app/public/javascripts/additional-methods.js
new file mode 100644
index 0000000..49abf4c
--- /dev/null
+++ b/spec/test_app/public/javascripts/additional-methods.js
@@ -0,0 +1,236 @@
+jQuery.validator.addMethod("maxWords", function(value, element, params) {
+ return this.optional(element) || value.match(/\b\w+\b/g).length < params;
+}, jQuery.validator.format("Please enter {0} words or less."));
+
+jQuery.validator.addMethod("minWords", function(value, element, params) {
+ return this.optional(element) || value.match(/\b\w+\b/g).length >= params;
+}, jQuery.validator.format("Please enter at least {0} words."));
+
+jQuery.validator.addMethod("rangeWords", function(value, element, params) {
+ return this.optional(element) || value.match(/\b\w+\b/g).length >= params[0] && value.match(/bw+b/g).length < params[1];
+}, jQuery.validator.format("Please enter between {0} and {1} words."));
+
+
+jQuery.validator.addMethod("letterswithbasicpunc", function(value, element) {
+ return this.optional(element) || /^[a-z-.,()'\"\s]+$/i.test(value);
+}, "Letters or punctuation only please");
+
+jQuery.validator.addMethod("alphanumeric", function(value, element) {
+ return this.optional(element) || /^\w+$/i.test(value);
+}, "Letters, numbers, spaces or underscores only please");
+
+jQuery.validator.addMethod("lettersonly", function(value, element) {
+ return this.optional(element) || /^[a-z]+$/i.test(value);
+}, "Letters only please");
+
+jQuery.validator.addMethod("nowhitespace", function(value, element) {
+ return this.optional(element) || /^\S+$/i.test(value);
+}, "No white space please");
+
+jQuery.validator.addMethod("ziprange", function(value, element) {
+ return this.optional(element) || /^90[2-5]\d\{2}-\d{4}$/.test(value);
+}, "Your ZIP-code must be in the range 902xx-xxxx to 905-xx-xxxx");
+
+/**
+* Return true, if the value is a valid vehicle identification number (VIN).
+*
+* Works with all kind of text inputs.
+*
+* @example
+* @desc Declares a required input element whose value must be a valid vehicle identification number.
+*
+* @name jQuery.validator.methods.vinUS
+* @type Boolean
+* @cat Plugins/Validate/Methods
+*/
+jQuery.validator.addMethod(
+ "vinUS",
+ function(v){
+ if (v.length != 17)
+ return false;
+ var i, n, d, f, cd, cdv;
+ var LL = ["A","B","C","D","E","F","G","H","J","K","L","M","N","P","R","S","T","U","V","W","X","Y","Z"];
+ var VL = [1,2,3,4,5,6,7,8,1,2,3,4,5,7,9,2,3,4,5,6,7,8,9];
+ var FL = [8,7,6,5,4,3,2,10,0,9,8,7,6,5,4,3,2];
+ var rs = 0;
+ for(i = 0; i < 17; i++){
+ f = FL[i];
+ d = v.slice(i,i+1);
+ if(i == 8){
+ cdv = d;
+ }
+ if(!isNaN(d)){
+ d *= f;
+ }
+ else{
+ for(n = 0; n < LL.length; n++){
+ if(d.toUpperCase() === LL[n]){
+ d = VL[n];
+ d *= f;
+ if(isNaN(cdv) && n == 8){
+ cdv = LL[n];
+ }
+ break;
+ }
+ }
+ }
+ rs += d;
+ }
+ cd = rs % 11;
+ if(cd == 10){cd = "X";}
+ if(cd == cdv){return true;}
+ return false;
+ },
+ "The specified vehicle identification number (VIN) is invalid."
+);
+
+/**
+ * Return true, if the value is a valid date, also making this formal check dd/mm/yyyy.
+ *
+ * @example jQuery.validator.methods.date("01/01/1900")
+ * @result true
+ *
+ * @example jQuery.validator.methods.date("01/13/1990")
+ * @result false
+ *
+ * @example jQuery.validator.methods.date("01.01.1900")
+ * @result false
+ *
+ * @example
+ * @desc Declares an optional input element whose value must be a valid date.
+ *
+ * @name jQuery.validator.methods.dateITA
+ * @type Boolean
+ * @cat Plugins/Validate/Methods
+ */
+jQuery.validator.addMethod(
+ "dateITA",
+ function(value, element) {
+ var check = false;
+ var re = /^\d{1,2}\/\d{1,2}\/\d{4}$/
+ if( re.test(value)){
+ var adata = value.split('/');
+ var gg = parseInt(adata[0],10);
+ var mm = parseInt(adata[1],10);
+ var aaaa = parseInt(adata[2],10);
+ var xdata = new Date(aaaa,mm-1,gg);
+ if ( ( xdata.getFullYear() == aaaa ) && ( xdata.getMonth () == mm - 1 ) && ( xdata.getDate() == gg ) )
+ check = true;
+ else
+ check = false;
+ } else
+ check = false;
+ return this.optional(element) || check;
+ },
+ "Please enter a correct date"
+);
+
+jQuery.validator.addMethod("dateNL", function(value, element) {
+ return this.optional(element) || /^\d\d?[\.\/-]\d\d?[\.\/-]\d\d\d?\d?$/.test(value);
+ }, "Vul hier een geldige datum in."
+);
+
+jQuery.validator.addMethod("time", function(value, element) {
+ return this.optional(element) || /^([01][0-9])|(2[0123]):([0-5])([0-9])$/.test(value);
+ }, "Please enter a valid time, between 00:00 and 23:59"
+);
+
+/**
+ * matches US phone number format
+ *
+ * where the area code may not start with 1 and the prefix may not start with 1
+ * allows '-' or ' ' as a separator and allows parens around area code
+ * some people may want to put a '1' in front of their number
+ *
+ * 1(212)-999-2345
+ * or
+ * 212 999 2344
+ * or
+ * 212-999-0983
+ *
+ * but not
+ * 111-123-5434
+ * and not
+ * 212 123 4567
+ */
+jQuery.validator.addMethod("phone", function(phone_number, element) {
+ phone_number = phone_number.replace(/\s+/g, "");
+ return this.optional(element) || phone_number.length > 9 &&
+ phone_number.match(/^(1-?)?(\([2-9]\d{2}\)|[2-9]\d{2})-?[2-9]\d{2}-?\d{4}$/);
+}, "Please specify a valid phone number");
+
+// TODO check if value starts with <, otherwise don't try stripping anything
+jQuery.validator.addMethod("strippedminlength", function(value, element, param) {
+ return jQuery(value).text().length >= param;
+}, jQuery.validator.format("Please enter at least {0} characters"));
+
+// same as email, but TLD is optional
+jQuery.validator.addMethod("email2", function(value, element, param) {
+ return this.optional(element) || /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
+}, jQuery.validator.messages.email);
+
+// same as url, but TLD is optional
+jQuery.validator.addMethod("url2", function(value, element, param) {
+ return this.optional(element) || /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)*(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
+}, jQuery.validator.messages.url);
+
+// NOTICE: Modified version of Castle.Components.Validator.CreditCardValidator
+// Redistributed under the the Apache License 2.0 at http://www.apache.org/licenses/LICENSE-2.0
+// Valid Types: mastercard, visa, amex, dinersclub, enroute, discover, jcb, unknown, all (overrides all other settings)
+jQuery.validator.addMethod("creditcardtypes", function(value, element, param) {
+
+ if (/[^0-9-]+/.test(value))
+ return false;
+
+ value = value.replace(/\D/g, "");
+
+ var validTypes = 0x0000;
+
+ if (param.mastercard)
+ validTypes |= 0x0001;
+ if (param.visa)
+ validTypes |= 0x0002;
+ if (param.amex)
+ validTypes |= 0x0004;
+ if (param.dinersclub)
+ validTypes |= 0x0008;
+ if (param.enroute)
+ validTypes |= 0x0010;
+ if (param.discover)
+ validTypes |= 0x0020;
+ if (param.jcb)
+ validTypes |= 0x0040;
+ if (param.unknown)
+ validTypes |= 0x0080;
+ if (param.all)
+ validTypes = 0x0001 | 0x0002 | 0x0004 | 0x0008 | 0x0010 | 0x0020 | 0x0040 | 0x0080;
+
+ if (validTypes & 0x0001 && /^(51|52|53|54|55)/.test(value)) { //mastercard
+ return value.length == 16;
+ }
+ if (validTypes & 0x0002 && /^(4)/.test(value)) { //visa
+ return value.length == 16;
+ }
+ if (validTypes & 0x0004 && /^(34|37)/.test(value)) { //amex
+ return value.length == 15;
+ }
+ if (validTypes & 0x0008 && /^(300|301|302|303|304|305|36|38)/.test(value)) { //dinersclub
+ return value.length == 14;
+ }
+ if (validTypes & 0x0010 && /^(2014|2149)/.test(value)) { //enroute
+ return value.length == 15;
+ }
+ if (validTypes & 0x0020 && /^(6011)/.test(value)) { //discover
+ return value.length == 16;
+ }
+ if (validTypes & 0x0040 && /^(3)/.test(value)) { //jcb
+ return value.length == 16;
+ }
+ if (validTypes & 0x0040 && /^(2131|1800)/.test(value)) { //jcb
+ return value.length == 15;
+ }
+ if (validTypes & 0x0080) { //unknown
+ return true;
+ }
+ return false;
+}, "Please enter a valid credit card number.");
diff --git a/spec/test_app/public/javascripts/admin.js b/spec/test_app/public/javascripts/admin.js
new file mode 100644
index 0000000..761ca61
--- /dev/null
+++ b/spec/test_app/public/javascripts/admin.js
@@ -0,0 +1,226 @@
+/**
+This is a collection of javascript functions and whatnot
+under the spree namespace that do stuff we find helpful.
+Hopefully, this will evolve into a propper class.
+**/
+
+var spree;
+if (!spree) spree = {};
+
+jQuery.noConflict() ;
+
+jQuery(document).ajaxStart(function(){
+ jQuery("#progress").slideDown();
+});
+
+jQuery(document).ajaxStop(function(){
+ jQuery("#progress").slideUp();
+});
+
+jQuery.fn.visible = function(cond) { this[cond ? 'show' : 'hide' ]() };
+
+// Apply to individual radio button that makes another element visible when checked
+jQuery.fn.radioControlsVisibilityOfElement = function(dependentElementSelector){
+ if(!this.get(0)){ return }
+ showValue = this.get(0).value;
+ radioGroup = $("input[name='" + this.get(0).name + "']");
+ radioGroup.each(function(){
+ jQuery(this).click(function(){
+ jQuery(dependentElementSelector).visible(this.checked && this.value == showValue)
+ });
+ if(this.checked){ this.click() }
+ });
+}
+
+var request = function(options) {
+ jQuery.ajax(jQuery.extend({ dataType: 'script', url: options.url, type: 'get' }, options));
+ return false;
+};
+
+// remote links handler
+jQuery('a[data-remote=true]').live('click', function() {
+ if(confirm_msg = jQuery(this).attr("data-confirm")){
+ if (!confirm(confirm_msg)) return false;
+ }
+ if(method = jQuery(this).attr("data-method")){
+ return request({ url: this.href, type: 'POST', data: {'_method': method} });
+ } else {
+ update_target = jQuery(this).attr("data-update");
+ link_container = jQuery(this).parent();
+ if (update_target) {
+ if ($("#"+update_target).length == 0) {
+ if ($("#"+update_target.replace('_', '-')).length > 0) {
+ update_target = update_target.replace('_', '-')
+ } else {
+ alert("
not found, add it to view to allow AJAX request.");
+ return true;
+ }
+ }
+ }
+ jQuery.ajax({ dataType: 'script', url: this.href, type: 'get',
+ success: function(data){
+ if (update_target) {
+ $("#"+update_target).html(data);
+ link_container.hide();
+ }
+ }
+ });
+ return false;
+ }
+});
+
+// remote forms handler
+jQuery('form[data-remote=true]').live('submit', function() {
+ return request({ url : this.action, type : this.method, data : jQuery(this).serialize() });
+});
+
+
+
+
+// Product autocompletion
+image_html = function(item){
+ return "
";
+}
+
+format_autocomplete = function(data){
+ var html = "";
+
+ var product = data['product'];
+
+ if(data['variant']==undefined){
+ // product
+
+ if(product['images'].length!=0){
+ html = image_html(product);
+ }
+
+ html += "
" + product['name'] + " ";
+ html += "Sku: " + product['master']['sku'] + " ";
+ html += "On Hand: " + product['count_on_hand'] + "";
+ }else{
+ // variant
+ var variant = data['variant'];
+ var name = product['name'];
+
+ if(variant['images'].length!=0){
+ html = image_html(variant);
+ }else{
+ if(product['images'].length!=0){
+ html = image_html(product);
+ }
+ }
+
+ name += " - " + $.map(variant['option_values'], function(option_value){
+ return option_value["option_type"]["presentation"] + ": " + option_value['name'];
+ }).join(", ")
+
+ html += "
" + name + " ";
+ html += "Sku: " + variant['sku'] + " ";
+ html += "On Hand: " + variant['count_on_hand'] + "";
+ }
+
+
+ return html
+}
+
+
+prep_autocomplete_data = function(data){
+ return $.map(eval(data), function(row) {
+
+ var product = row['product'];
+
+ if(product['variants'].length>0 && expand_variants){
+ //variants
+ return $.map(product['variants'], function(variant){
+
+ var name = product['name'];
+ name += " - " + $.map(variant['option_values'], function(option_value){
+ return option_value["option_type"]["presentation"] + ": " + option_value['name'];
+ }).join(", ");
+
+ return {
+ data: {product: product, variant: variant},
+ value: name,
+ result: name
+ }
+ });
+ }else{
+ return {
+ data: {product: product},
+ value: product['name'],
+ result: product['name']
+ }
+ }
+ });
+}
+
+jQuery.fn.product_autocomplete = function(){
+ $(this).autocomplete("/admin/products.json?authenticity_token=" + $('meta[name=csrf-token]').attr("content"), {
+ parse: prep_autocomplete_data,
+ formatItem: function(item) {
+ return format_autocomplete(item);
+ }
+ }).result(function(event, data, formatted) {
+ if (data){
+ if(data['variant']==undefined){
+ // product
+ $('#add_variant_id').val(data['product']['master']['id']);
+ }else{
+ // variant
+ $('#add_variant_id').val(data['variant']['id']);
+ }
+ }
+ });
+}
+
+
+
+jQuery.fn.objectPicker = function(url){
+ jQuery(this).tokenInput(url + "&authenticity_token=" + AUTH_TOKEN, {
+ searchDelay : 600,
+ hintText : strings.type_to_search,
+ noResultsText : strings.no_results,
+ searchingText : strings.searching,
+ prePopulateFromInput : true
+ });
+};
+
+jQuery.fn.productPicker = function(){
+ jQuery(this).objectPicker(ajax_urls.product_search_basic_json);
+}
+jQuery.fn.userPicker = function(){
+ jQuery(this).objectPicker(ajax_urls.user_search_basic_json);
+}
+
+jQuery(document).ready(function() {
+
+ jQuery('.tokeninput.products').productPicker();
+ jQuery('.tokeninput.users').userPicker();
+
+});
+
+function add_fields(target, association, content) {
+ var new_id = new Date().getTime();
+ var regexp = new RegExp("new_" + association, "g");
+ $(target).append(content.replace(regexp, new_id));
+}
+
+jQuery('a.remove_fields').live('click', function() {
+ $(this).prev("input[type=hidden]").val("1");
+ $(this).closest(".fields").hide();
+ return false;
+});
+
+jQuery(".observe_field").live('change', function() {
+ target = $(this).attr("data-update");
+ ajax_indicator = $(this).attr("data-ajax-indicator") || '#busy_indicator';
+ $(target).hide();
+ $(ajax_indicator).show();
+ $.get($(this).attr("data-base-url")+encodeURIComponent($(this).val()),
+ function(data) {
+ $(target).html(data);
+ $(ajax_indicator).hide();
+ $(target).show();
+ }
+ );
+});
diff --git a/spec/test_app/public/javascripts/admin/address_states.js b/spec/test_app/public/javascripts/admin/address_states.js
new file mode 100644
index 0000000..56ddff6
--- /dev/null
+++ b/spec/test_app/public/javascripts/admin/address_states.js
@@ -0,0 +1,25 @@
+var update_state = function(region) {
+ var country = $('span#' + region + 'country :only-child').val();
+ var states = state_mapper[country];
+
+ var state_select = $('span#' + region + 'state select');
+ var state_input = $('span#' + region + 'state input');
+
+ if(states) {
+ state_select.html('');
+ var states_with_blank = [["",""]].concat(states);
+ $.each(states_with_blank, function(pos,id_nm) {
+ var opt = $(document.createElement('option'))
+ .attr('value', id_nm[0])
+ .html(id_nm[1]);
+ state_select.append(opt);
+ });
+ state_select.enable().show();;
+ state_input.hide().disable();
+
+ } else {
+ state_input.enable().show();
+ state_select.hide().disable();
+ }
+
+};
\ No newline at end of file
diff --git a/spec/test_app/public/javascripts/admin/checkouts/edit.js b/spec/test_app/public/javascripts/admin/checkouts/edit.js
new file mode 100644
index 0000000..25cbc38
--- /dev/null
+++ b/spec/test_app/public/javascripts/admin/checkouts/edit.js
@@ -0,0 +1,129 @@
+jQuery(document).ready(function(){
+ add_address = function(addr){
+ var html = "";
+ if(addr!=undefined){
+ html += addr['firstname'] + " " + addr['lastname'] + ", ";
+ html += addr['address1'] + ", " + addr['address2'] + ", ";
+ html += addr['city'] + ", ";
+
+ if(addr['state_id']!=null){
+ html += addr['state']['name'] + ", ";
+ }else{
+ html += addr['state_name'] + ", ";
+ }
+
+ html += addr['country']['name'];
+ }
+ return html;
+ }
+
+ format_autocomplete = function(data){
+ var html = "
" + data['email'] +" ";
+ html += "
Billing: ";
+ html += add_address(data['bill_address']);
+ html += "";
+
+ html += "
Shipping: ";
+ html += add_address(data['ship_address']);
+ html += "";
+
+ return html
+ }
+
+ prep_autocomplete_data = function(data){
+ return $.map(eval(data), function(row) {
+ return {
+ data: row['user'],
+ value: row['user']['email'],
+ result: row['user']['email']
+ }
+ });
+ }
+
+ $("#customer_search").autocomplete("/admin/users.json?authenticity_token=" + $('meta[name=csrf-token]').attr("content"), {
+ minChars: 5,
+ delay: 1500,
+ parse: prep_autocomplete_data,
+ formatItem: function(item) {
+ return format_autocomplete(item);
+ }
+ }).result(function(event, data, formatted) {
+ $('#user_id').val(data['id']);
+ $('#guest_checkout_true').removeAttr("checked");
+ $('#guest_checkout_false').attr("checked", "checked");
+ $('#guest_checkout_false').removeAttr("disabled");
+ $('#checkout_email').val(data['email']);
+
+ var addr = data['bill_address'];
+ if(addr!=undefined){
+ $('#checkout_bill_address_attributes_firstname').val(addr['firstname']);
+ $('#checkout_bill_address_attributes_lastname').val(addr['lastname']);
+ $('#checkout_bill_address_attributes_address1').val(addr['address1']);
+ $('#checkout_bill_address_attributes_address2').val(addr['address2']);
+ $('#checkout_bill_address_attributes_city').val(addr['city']);
+ $('#checkout_bill_address_attributes_zipcode').val(addr['zipcode']);
+ $('#checkout_bill_address_attributes_state_id').val(addr['state_id']);
+ $('#checkout_bill_address_attributes_country_id').val(addr['country_id']);
+ $('#checkout_bill_address_attributes_phone').val(addr['phone']);
+ }
+
+ var addr = data['ship_address'];
+ if(addr!=undefined){
+ $('#checkout_ship_address_attributes_firstname').val(addr['firstname']);
+ $('#checkout_ship_address_attributes_lastname').val(addr['lastname']);
+ $('#checkout_ship_address_attributes_address1').val(addr['address1']);
+ $('#checkout_ship_address_attributes_address2').val(addr['address2']);
+ $('#checkout_ship_address_attributes_city').val(addr['city']);
+ $('#checkout_ship_address_attributes_zipcode').val(addr['zipcode']);
+ $('#checkout_ship_address_attributes_state_id').val(addr['state_id']);
+ $('#checkout_ship_address_attributes_country_id').val(addr['country_id']);
+ $('#checkout_ship_address_attributes_phone').val(addr['phone']);
+ }
+ });
+
+
+ $('input#checkout_use_billing').click(function() {
+ show_billing(!this.checked);
+ });
+
+ $('#guest_checkout_true').change(function() {
+ $('#customer_search').val("");
+ $('#user_id').val("");
+ $('#checkout_email').val("");
+ $('#guest_checkout_false').attr("disabled", "true");
+
+ $('#checkout_bill_address_attributes_firstname').val("");
+ $('#checkout_bill_address_attributes_lastname').val("");
+ $('#checkout_bill_address_attributes_address1').val("");
+ $('#checkout_bill_address_attributes_address2').val("");
+ $('#checkout_bill_address_attributes_city').val("");
+ $('#checkout_bill_address_attributes_zipcode').val("");
+ $('#checkout_bill_address_attributes_state_id').val("");
+ $('#checkout_bill_address_attributes_country_id').val("");
+ $('#checkout_bill_address_attributes_phone').val("");
+
+ $('#checkout_ship_address_attributes_firstname').val("");
+ $('#checkout_ship_address_attributes_lastname').val("");
+ $('#checkout_ship_address_attributes_address1').val("");
+ $('#checkout_ship_address_attributes_address2').val("");
+ $('#checkout_ship_address_attributes_city').val("");
+ $('#checkout_ship_address_attributes_zipcode').val("");
+ $('#checkout_ship_address_attributes_state_id').val("");
+ $('#checkout_ship_address_attributes_country_id').val("");
+ $('#checkout_ship_address_attributes_phone').val("");
+ });
+
+ var show_billing = function(show) {
+ if(show) {
+ $('#shipping').show();
+ $('#shipping input').removeAttr('disabled', 'disabled');
+ $('#shipping select').removeAttr('disabled', 'disabled');
+ } else {
+ $('#shipping').hide();
+ $('#shipping input').attr('disabled', 'disabled');
+ $('#shipping select').attr('disabled', 'disabled');
+ }
+ }
+
+});
+
diff --git a/spec/test_app/public/javascripts/admin/orders/edit.js b/spec/test_app/public/javascripts/admin/orders/edit.js
new file mode 100644
index 0000000..90f5508
--- /dev/null
+++ b/spec/test_app/public/javascripts/admin/orders/edit.js
@@ -0,0 +1,23 @@
+jQuery(document).ready(function(){
+
+ $("#add_product_name").product_autocomplete();
+
+ $("#add_line_item_to_order").live("click", function(){
+ if($('#add_variant_id').val() == ''){ return false; }
+ update_target = jQuery(this).attr("data-update");
+ jQuery.ajax({ dataType: 'script', url: this.href, type: "POST",
+ data: {"line_item[variant_id]": $('#add_variant_id').val(),
+ "line_item[quantity]": $('#add_quantity').val()},
+ success: function(data){
+ $("#"+update_target).html(data);
+ $('#add_product_name').val('');
+ $('#add_variant_id').val('');
+ $('#add_quantity').val(1)
+ }
+ });
+ return false;
+ });
+
+});
+
+
diff --git a/spec/test_app/public/javascripts/admin/orders/edit_form.js b/spec/test_app/public/javascripts/admin/orders/edit_form.js
new file mode 100644
index 0000000..114de45
--- /dev/null
+++ b/spec/test_app/public/javascripts/admin/orders/edit_form.js
@@ -0,0 +1,15 @@
+ $.each($('td.qty input'), function(i, inpt){
+ $(inpt).delayedObserver(0.5, function(object, value) {
+
+ var id = object.attr('id').replace("order_line_items_attributes_", "").replace("_quantity", "");
+ id = "#order_line_items_attributes_" + id + "_id";
+
+ jQuery.ajax({
+ type: "POST",
+ url: "/admin/orders/" + $('input#order_number').val() + "/line_items/" + $(id).val(),
+ data: ({_method: "put", "line_item[quantity]": value}),
+ success: function(html){ $('#order-form-wrapper').html(html)}
+ });
+
+ });
+ });
diff --git a/spec/test_app/public/javascripts/admin/payments/new.js b/spec/test_app/public/javascripts/admin/payments/new.js
new file mode 100644
index 0000000..bf164dd
--- /dev/null
+++ b/spec/test_app/public/javascripts/admin/payments/new.js
@@ -0,0 +1,9 @@
+$(document).ready(function(){
+
+ $("#card_new").radioControlsVisibilityOfElement('#card_form');
+
+ $('select.jump_menu').change(function(){
+ window.location = this.options[this.selectedIndex].value;
+ });
+
+});
\ No newline at end of file
diff --git a/spec/test_app/public/javascripts/admin/unobtrusive_handlers.js b/spec/test_app/public/javascripts/admin/unobtrusive_handlers.js
new file mode 100644
index 0000000..7b8ff31
--- /dev/null
+++ b/spec/test_app/public/javascripts/admin/unobtrusive_handlers.js
@@ -0,0 +1,15 @@
+$(document).ready(function(){
+
+ $(".select_properties_from_prototype").live("click", function(){
+ $("#busy_indicator").show();
+ var clicked_link = $(this);
+ jQuery.ajax({ dataType: 'script', url: clicked_link.attr("href"), type: 'get',
+ success: function(data){
+ clicked_link.parent("td").parent("tr").hide();
+ $("#busy_indicator").hide();
+ }
+ });
+ return false;
+ });
+
+});
diff --git a/spec/test_app/public/javascripts/application.js b/spec/test_app/public/javascripts/application.js
new file mode 100644
index 0000000..ca62ff5
--- /dev/null
+++ b/spec/test_app/public/javascripts/application.js
@@ -0,0 +1,12 @@
+(function($){
+ $(document).ready(function(){
+
+ // Remove an item from the cart by setting its quantity to zero and posting the update form
+ $('form#updatecart a.delete').show().click(function(){
+ $(this).parents('tr').find('input.line_item_quantity').val(0);
+ $(this).parents('form').submit();
+ return false;
+ });
+
+ });
+})(jQuery);
diff --git a/spec/test_app/public/javascripts/calculator.js b/spec/test_app/public/javascripts/calculator.js
new file mode 100644
index 0000000..cfad998
--- /dev/null
+++ b/spec/test_app/public/javascripts/calculator.js
@@ -0,0 +1,15 @@
+$j(function() {
+ var original_calc_type = $j('#calc-type').attr('value');
+ $j('div#calculator-settings-warning').hide();
+ $j('#calc-type').change(function() {
+ if ($j('#calc-type').attr('value') == original_calc_type) {
+ $j('div.calculator-settings').show();
+ $j('div#calculator-settings-warning').hide();
+ $j('.calculator-settings input').removeAttr('disabled');
+ } else {
+ $j('div.calculator-settings').hide();
+ $j('div#calculator-settings-warning').show();
+ $j('.calculator-settings input').attr('disabled', 'disabled');
+ }
+ });
+})
diff --git a/spec/test_app/public/javascripts/checkout.js b/spec/test_app/public/javascripts/checkout.js
new file mode 100644
index 0000000..02dce4c
--- /dev/null
+++ b/spec/test_app/public/javascripts/checkout.js
@@ -0,0 +1,75 @@
+(function($){
+ $(document).ready(function(){
+
+ $('#checkout_form_address').validate();
+
+ var get_states = function(region){
+ var country = $('span#' + region + 'country :only-child').val();
+ return state_mapper[country];
+ }
+
+ var update_state = function(region) {
+ var states = get_states(region);
+
+ var state_select = $('span#' + region + 'state select');
+ var state_input = $('span#' + region + 'state input');
+
+ if(states) {
+ var selected = state_select.val();
+ state_select.html('');
+ var states_with_blank = [["",""]].concat(states);
+ $.each(states_with_blank, function(pos,id_nm) {
+ var opt = $(document.createElement('option'))
+ .attr('value', id_nm[0])
+ .html(id_nm[1]);
+ if(selected==id_nm[0]){
+ opt.attr('selected', 'selected');
+ }
+ state_select.append(opt);
+ });
+ state_select.removeAttr('disabled').show();
+ state_input.hide().attr('disabled', 'disabled');
+
+ } else {
+ state_input.removeAttr('disabled').show();
+ state_select.hide().attr('disabled', 'disabled');
+ }
+
+ };
+
+ // Show fields for the selected payment method
+ $("input[type='radio'][name='order[payments_attributes][][payment_method_id]']").click(function(){
+ $('#payment-methods li').hide();
+ if(this.checked){ $('#payment_method_'+this.value).show(); }
+ }).triggerHandler('click');
+
+ $('span#bcountry select').change(function() { update_state('b'); });
+ $('span#scountry select').change(function() { update_state('s'); });
+ update_state('b');
+ update_state('s');
+
+ $('input#order_use_billing').click(function() {
+ if($(this).is(':checked')) {
+ $('#shipping .inner input, #shipping .inner select, #shipping .inner label, #shipping .inner .req').hide();
+ $('#shipping .inner input, #shipping .inner select').attr('disabled', 'disabled');
+ } else {
+ $('#shipping .inner input, #shipping .inner select, #shipping .inner label, #shipping .inner .req').show();
+ $('#shipping .inner input, #shipping .inner select').removeAttr('disabled', 'disabled');
+
+ //only want to enable relevant field
+ if(get_states('s')){
+ $('span#sstate input').hide().attr('disabled', 'disabled');
+ }else{
+ $('span#sstate select').hide().attr('disabled', 'disabled');
+ }
+
+ }
+ }).triggerHandler('click');
+
+ $('form.edit_checkout').submit(function() {
+ $(this).find(':submit, :image').attr('disabled', true).removeClass('primary').addClass('disabled');
+ });
+
+
+ });
+})(jQuery);
diff --git a/spec/test_app/public/javascripts/datepicker.js b/spec/test_app/public/javascripts/datepicker.js
new file mode 100644
index 0000000..a62a010
--- /dev/null
+++ b/spec/test_app/public/javascripts/datepicker.js
@@ -0,0 +1,1445 @@
+/*
+ DatePicker v4.4 by frequency-decoder.com
+
+ Released under a creative commons Attribution-ShareAlike 2.5 license (http://creativecommons.org/licenses/by-sa/2.5/)
+
+ Please credit frequency-decoder in any derivative work - thanks.
+
+ You are free:
+
+ * to copy, distribute, display, and perform the work
+ * to make derivative works
+ * to make commercial use of the work
+
+ Under the following conditions:
+
+ by Attribution.
+ --------------
+ You must attribute the work in the manner specified by the author or licensor.
+
+ sa
+ --
+ Share Alike. If you alter, transform, or build upon this work, you may distribute the resulting work only under a license identical to this one.
+
+ * For any reuse or distribution, you must make clear to others the license terms of this work.
+ * Any of these conditions can be waived if you get permission from the copyright holder.
+*/
+var datePickerController;
+
+(function() {
+
+// Detect the browser language
+datePicker.languageinfo = navigator.language ? navigator.language : navigator.userLanguage;
+datePicker.languageinfo = datePicker.languageinfo ? datePicker.languageinfo.toLowerCase().replace(/-[a-z]+$/, "") : 'en';
+
+// Load the appropriate language file
+var scriptFiles = document.getElementsByTagName('head')[0].getElementsByTagName('script');
+var loc = scriptFiles[scriptFiles.length - 1].src.substr(0, scriptFiles[scriptFiles.length - 1].src.lastIndexOf("/")) + "/lang/" + datePicker.languageinfo + ".js";
+
+var script = document.createElement('script');
+script.type = "text/javascript";
+script.src = loc;
+script.setAttribute("charset", "utf-8");
+/*@cc_on
+/*@if(@_win32)
+ var bases = document.getElementsByTagName('base');
+ if (bases.length && bases[0].childNodes.length) {
+ bases[0].appendChild(script);
+ } else {
+ document.getElementsByTagName('head')[0].appendChild(script);
+ };
+@else @*/
+document.getElementsByTagName('head')[0].appendChild(script);
+/*@end
+@*/
+script = null;
+
+// Defaults should the locale file not load
+datePicker.months = ["January","February","March","April","May","June","July","August","September","October","November","December"];
+datePicker.fullDay = ["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"];
+datePicker.titles = ["Previous month","Next month","Previous year","Next year", "Today", "Show Calendar"];
+
+datePicker.getDaysPerMonth = function(nMonth, nYear) {
+ nMonth = (nMonth + 12) % 12;
+ return (((0 == (nYear%4)) && ((0 != (nYear%100)) || (0 == (nYear%400)))) && nMonth == 1) ? 29: [31,28,31,30,31,30,31,31,30,31,30,31][nMonth];
+};
+
+function datePicker(options) {
+
+ this.defaults = {};
+ for(opt in options) { this[opt] = this.defaults[opt] = options[opt]; };
+
+ this.date = new Date();
+ this.yearinc = 1;
+ this.timer = null;
+ this.pause = 1000;
+ this.timerSet = false;
+ this.fadeTimer = null;
+ this.interval = new Date();
+ this.firstDayOfWeek = this.defaults.firstDayOfWeek = this.dayInc = this.monthInc = this.yearInc = this.opacity = this.opacityTo = 0;
+ this.dateSet = null;
+ this.visible = false;
+ this.disabledDates = [];
+ this.enabledDates = [];
+ this.nbsp = String.fromCharCode( 160 );
+ var o = this;
+
+ o.events = {
+ onblur:function(e) {
+ o.removeKeyboardEvents();
+ },
+ onfocus:function(e) {
+ o.addKeyboardEvents();
+ },
+ onkeydown: function (e) {
+ o.stopTimer();
+ if(!o.visible) return false;
+
+ if(e == null) e = document.parentWindow.event;
+ var kc = e.keyCode ? e.keyCode : e.charCode;
+
+ if( kc == 13 ) {
+ // close (return)
+ var td = document.getElementById(o.id + "-date-picker-hover");
+ if(!td || td.className.search(/out-of-range|day-disabled/) != -1) return o.killEvent(e);
+ o.returnFormattedDate();
+ o.hide();
+ return o.killEvent(e);
+ } else if(kc == 27) {
+ // close (esc)
+ o.hide();
+ return o.killEvent(e);
+ } else if(kc == 32 || kc == 0) {
+ // today (space)
+ o.date = new Date();
+ o.updateTable();
+ return o.killEvent(e);
+ };
+
+ // Internet Explorer fires the keydown event faster than the JavaScript engine can
+ // update the interface. The following attempts to fix this.
+ /*@cc_on
+ @if(@_win32)
+ if(new Date().getTime() - o.interval.getTime() < 100) return o.killEvent(e);
+ o.interval = new Date();
+ @end
+ @*/
+
+ if ((kc > 49 && kc < 56) || (kc > 97 && kc < 104)) {
+ if (kc > 96) kc -= (96-48);
+ kc -= 49;
+ o.firstDayOfWeek = (o.firstDayOfWeek + kc) % 7;
+ o.updateTable();
+ return o.killEvent(e);
+ };
+
+ if ( kc < 37 || kc > 40 ) return true;
+
+ var d = new Date( o.date ).valueOf();
+
+ if ( kc == 37 ) {
+ // ctrl + left = previous month
+ if( e.ctrlKey ) {
+ d = new Date( o.date );
+ d.setDate( Math.min(d.getDate(), datePicker.getDaysPerMonth(d.getMonth() - 1,d.getFullYear())) );
+ d.setMonth( d.getMonth() - 1 );
+ } else {
+ d = new Date( o.date.getFullYear(), o.date.getMonth(), o.date.getDate() - 1 );
+ };
+ } else if ( kc == 39 ) {
+ // ctrl + right = next month
+ if( e.ctrlKey ) {
+ d = new Date( o.date );
+ d.setDate( Math.min(d.getDate(), datePicker.getDaysPerMonth(d.getMonth() + 1,d.getFullYear())) );
+ d.setMonth( d.getMonth() + 1 );
+ } else {
+ d = new Date( o.date.getFullYear(), o.date.getMonth(), o.date.getDate() + 1 );
+ };
+ } else if ( kc == 38 ) {
+ // ctrl + up = next year
+ if( e.ctrlKey ) {
+ d = new Date( o.date );
+ d.setDate( Math.min(d.getDate(), datePicker.getDaysPerMonth(d.getMonth(),d.getFullYear() + 1)) );
+ d.setFullYear( d.getFullYear() + 1 );
+ } else {
+ d = new Date( o.date.getFullYear(), o.date.getMonth(), o.date.getDate() - 7 );
+ };
+ } else if ( kc == 40 ) {
+ // ctrl + down = prev year
+ if( e.ctrlKey ) {
+ d = new Date( o.date );
+ d.setDate( Math.min(d.getDate(), datePicker.getDaysPerMonth(d.getMonth(),d.getFullYear() - 1)) );
+ d.setFullYear( d.getFullYear() - 1 );
+ } else {
+ d = new Date( o.date.getFullYear(), o.date.getMonth(), o.date.getDate() + 7 );
+ };
+ };
+
+ var tmpDate = new Date(d);
+
+ if(o.outOfRange(tmpDate)) return o.killEvent(e);
+
+ var cacheDate = new Date(o.date);
+ o.date = tmpDate;
+
+ if(cacheDate.getFullYear() != o.date.getFullYear() || cacheDate.getMonth() != o.date.getMonth()) o.updateTable();
+ else {
+ o.disableTodayButton();
+ var tds = o.table.getElementsByTagName('td');
+ var txt;
+ var start = o.date.getDate() - 6;
+ if(start < 0) start = 0;
+
+ for(var i = start, td; td = tds[i]; i++) {
+ txt = Number(td.firstChild.nodeValue);
+ if(isNaN(txt) || txt != o.date.getDate()) continue;
+ o.removeHighlight();
+ td.id = o.id + "-date-picker-hover";
+ td.className = td.className.replace(/date-picker-hover/g, "") + " date-picker-hover";
+ };
+ };
+ return o.killEvent(e);
+ },
+ gotoToday: function(e) {
+ o.date = new Date();
+ o.updateTable();
+ return o.killEvent(e);
+ },
+ onmousedown: function(e) {
+ if ( e == null ) e = document.parentWindow.event;
+ var el = e.target != null ? e.target : e.srcElement;
+
+ var found = false;
+ while(el.parentNode) {
+ if(el.id && (el.id == "fd-"+o.id || el.id == "fd-but-"+o.id)) {
+ found = true;
+ break;
+ };
+ try {
+ el = el.parentNode;
+ } catch(err) {
+ break;
+ };
+ };
+ if(found) return true;
+ o.stopTimer();
+ datePickerController.hideAll();
+ },
+ onmouseover: function(e) {
+ o.stopTimer();
+ var txt = this.firstChild.nodeValue;
+ if(this.className == "out-of-range" || txt.search(/^[\d]+$/) == -1) return;
+
+ o.removeHighlight();
+
+ this.id = o.id+"-date-picker-hover";
+ this.className = this.className.replace(/date-picker-hover/g, "") + " date-picker-hover";
+
+ o.date.setDate(this.firstChild.nodeValue);
+ o.disableTodayButton();
+ },
+ onclick: function(e) {
+ if(o.opacity != o.opacityTo || this.className.search(/out-of-range|day-disabled/) != -1) return false;
+ if ( e == null ) e = document.parentWindow.event;
+ var el = e.target != null ? e.target : e.srcElement;
+ while ( el.nodeType != 1 ) el = el.parentNode;
+ var d = new Date( o.date );
+ var txt = el.firstChild.data;
+ if(txt.search(/^[\d]+$/) == -1) return;
+ var n = Number( txt );
+ if(isNaN(n)) { return true; };
+ d.setDate( n );
+ o.date = d;
+ o.returnFormattedDate();
+ if(!o.staticPos) o.hide();
+ o.stopTimer();
+ return o.killEvent(e);
+ },
+ incDec: function(e) {
+ if ( e == null ) e = document.parentWindow.event;
+ var el = e.target != null ? e.target : e.srcElement;
+
+ if(el && el.className && el.className.search('fd-disabled') != -1) { return false; }
+ datePickerController.addEvent(document, "mouseup", o.events.clearTimer);
+ o.timerInc = 800;
+ o.dayInc = arguments[1];
+ o.yearInc = arguments[2];
+ o.monthInc = arguments[3];
+ o.timerSet = true;
+
+ o.updateTable();
+ return true;
+ },
+ clearTimer: function(e) {
+ o.stopTimer();
+ o.timerInc = 1000;
+ o.yearInc = 0;
+ o.monthInc = 0;
+ o.dayInc = 0;
+ datePickerController.removeEvent(document, "mouseup", o.events.clearTimer);
+ }
+ };
+ o.stopTimer = function() {
+ o.timerSet = false;
+ window.clearTimeout(o.timer);
+ };
+ o.removeHighlight = function() {
+ if(document.getElementById(o.id+"-date-picker-hover")) {
+ document.getElementById(o.id+"-date-picker-hover").className = document.getElementById(o.id+"-date-picker-hover").className.replace("date-picker-hover", "");
+ document.getElementById(o.id+"-date-picker-hover").id = "";
+ };
+ };
+ o.reset = function() {
+ for(def in o.defaults) { o[def] = o.defaults[def]; };
+ };
+ o.setOpacity = function(op) {
+ o.div.style.opacity = op/100;
+ o.div.style.filter = 'alpha(opacity=' + op + ')';
+ o.opacity = op;
+ };
+ o.fade = function() {
+ window.clearTimeout(o.fadeTimer);
+ o.fadeTimer = null;
+ delete(o.fadeTimer);
+
+ var diff = Math.round(o.opacity + ((o.opacityTo - o.opacity) / 4));
+
+ o.setOpacity(diff);
+
+ if(Math.abs(o.opacityTo - diff) > 3 && !o.noTransparency) {
+ o.fadeTimer = window.setTimeout(o.fade, 50);
+ } else {
+ o.setOpacity(o.opacityTo);
+ if(o.opacityTo == 0) {
+ o.div.style.display = "none";
+ o.visible = false;
+ } else {
+ o.visible = true;
+ };
+ };
+ };
+ o.killEvent = function(e) {
+ e = e || document.parentWindow.event;
+
+ if(e.stopPropagation) {
+ e.stopPropagation();
+ e.preventDefault();
+ };
+
+ /*@cc_on
+ @if(@_win32)
+ e.cancelBubble = true;
+ e.returnValue = false;
+ @end
+ @*/
+ return false;
+ };
+ o.getElem = function() {
+ return document.getElementById(o.id.replace(/^fd-/, '')) || false;
+ };
+ o.setRangeLow = function(range) {
+ if(String(range).search(/^(\d\d?\d\d)(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$/) == -1) range = '';
+ o.low = o.defaults.low = range;
+ if(o.staticPos) o.updateTable(true);
+ };
+ o.setRangeHigh = function(range) {
+ if(String(range).search(/^(\d\d?\d\d)(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])$/) == -1) range = '';
+ o.high = o.defaults.high = range;
+ if(o.staticPos) o.updateTable(true);
+ };
+ o.setDisabledDays = function(dayArray) {
+ o.disableDays = o.defaults.disableDays = dayArray;
+ if(o.staticPos) o.updateTable(true);
+ };
+ o.setDisabledDates = function(dateArray) {
+ var fin = [];
+ for(var i = dateArray.length; i-- ;) {
+ if(dateArray[i].match(/^(\d\d\d\d|\*\*\*\*)(0[1-9]|1[012]|\*\*)(0[1-9]|[12][0-9]|3[01])$/) != -1) fin[fin.length] = dateArray[i];
+ };
+ if(fin.length) {
+ o.disabledDates = fin;
+ o.enabledDates = [];
+ if(o.staticPos) o.updateTable(true);
+ };
+ };
+ o.setEnabledDates = function(dateArray) {
+ var fin = [];
+ for(var i = dateArray.length; i-- ;) {
+ if(dateArray[i].match(/^(\d\d\d\d|\*\*\*\*)(0[1-9]|1[012]|\*\*)(0[1-9]|[12][0-9]|3[01]|\*\*)$/) != -1 && dateArray[i] != "********") fin[fin.length] = dateArray[i];
+ };
+ if(fin.length) {
+ o.disabledDates = [];
+ o.enabledDates = fin;
+ if(o.staticPos) o.updateTable(true);
+ };
+ };
+ o.getDisabledDates = function(y, m) {
+ if(o.enabledDates.length) return o.getEnabledDates(y, m);
+ var obj = {};
+ var d = datePicker.getDaysPerMonth(m - 1, y);
+ m = m < 10 ? "0" + String(m) : m;
+ for(var i = o.disabledDates.length; i-- ;) {
+ var tmp = o.disabledDates[i].replace("****", y).replace("**", m);
+ if(tmp < Number(String(y)+m+"01") || tmp > Number(y+String(m)+d)) continue;
+ obj[tmp] = 1;
+ };
+ return obj;
+ };
+ o.getEnabledDates = function(y, m) {
+ var obj = {};
+ var d = datePicker.getDaysPerMonth(m - 1, y);
+ m = m < 10 ? "0" + String(m) : m;
+ var day,tmp,de,me,ye,disabled;
+ for(var dd = 1; dd <= d; dd++) {
+ day = dd < 10 ? "0" + String(dd) : dd;
+ disabled = true;
+ for(var i = o.enabledDates.length; i-- ;) {
+ tmp = o.enabledDates[i];
+ ye = String(o.enabledDates[i]).substr(0,4);
+ me = String(o.enabledDates[i]).substr(4,2);
+ de = String(o.enabledDates[i]).substr(6,2);
+
+ if(ye == y && me == m && de == day) {
+ disabled = false;
+ break;
+ }
+
+ if(ye == "****" || me == "**" || de == "**") {
+ if(ye == "****") tmp = tmp.replace(/^\*\*\*\*/, y);
+ if(me == "**") tmp = tmp = tmp.substr(0,4) + String(m) + tmp.substr(6,2);
+ if(de == "**") tmp = tmp.replace(/\*\*/, day);
+
+ if(tmp == String(y + String(m) + day)) {
+ disabled = false;
+ break;
+ };
+ };
+ };
+ if(disabled) obj[String(y + String(m) + day)] = 1;
+ };
+ return obj;
+ };
+ o.setFirstDayOfWeek = function(e) {
+ if ( e == null ) e = document.parentWindow.event;
+ var elem = e.target != null ? e.target : e.srcElement;
+ if(elem.tagName.toLowerCase() != "th") {
+ while(elem.tagName.toLowerCase() != "th") elem = elem.parentNode;
+ };
+ var cnt = 0;
+ while(elem.previousSibling) {
+ elem = elem.previousSibling;
+ if(elem.tagName.toLowerCase() == "th") cnt++;
+ };
+ o.firstDayOfWeek = (o.firstDayOfWeek + cnt) % 7;
+ o.updateTableHeaders();
+ return o.killEvent(e);
+ };
+ o.truePosition = function(element) {
+ var pos = o.cumulativeOffset(element);
+ if(window.opera) { return pos; }
+ var iebody = (document.compatMode && document.compatMode != "BackCompat")? document.documentElement : document.body;
+ var dsocleft = document.all ? iebody.scrollLeft : window.pageXOffset;
+ var dsoctop = document.all ? iebody.scrollTop : window.pageYOffset;
+ var posReal = o.realOffset(element);
+ return [pos[0] - posReal[0] + dsocleft, pos[1] - posReal[1] + dsoctop];
+ };
+ o.realOffset = function(element) {
+ var t = 0, l = 0;
+ do {
+ t += element.scrollTop || 0;
+ l += element.scrollLeft || 0;
+ element = element.parentNode;
+ } while (element);
+ return [l, t];
+ };
+ o.cumulativeOffset = function(element) {
+ var t = 0, l = 0;
+ do {
+ t += element.offsetTop || 0;
+ l += element.offsetLeft || 0;
+ element = element.offsetParent;
+ } while (element);
+ return [l, t];
+ };
+ o.resize = function() {
+ if(!o.created || !o.getElem()) return;
+
+ o.div.style.visibility = "hidden";
+ if(!o.staticPos) { o.div.style.left = o.div.style.top = "0px"; }
+ o.div.style.display = "block";
+
+ var osh = o.div.offsetHeight;
+ var osw = o.div.offsetWidth;
+
+ o.div.style.visibility = "visible";
+ o.div.style.display = "none";
+
+ if(!o.staticPos) {
+ var elem = document.getElementById('fd-but-' + o.id);
+ var pos = o.truePosition(elem);
+ var trueBody = (document.compatMode && document.compatMode!="BackCompat") ? document.documentElement : document.body;
+ var scrollTop = window.devicePixelRatio || window.opera ? 0 : trueBody.scrollTop;
+ var scrollLeft = window.devicePixelRatio || window.opera ? 0 : trueBody.scrollLeft;
+
+ if(parseInt(trueBody.clientWidth+scrollLeft) < parseInt(osw+pos[0])) {
+ o.div.style.left = Math.abs(parseInt((trueBody.clientWidth+scrollLeft) - osw)) + "px";
+ } else {
+ o.div.style.left = pos[0] + "px";
+ };
+
+ if(parseInt(trueBody.clientHeight+scrollTop) < parseInt(osh+pos[1]+elem.offsetHeight+2)) {
+ o.div.style.top = Math.abs(parseInt(pos[1] - (osh + 2))) + "px";
+ } else {
+ o.div.style.top = Math.abs(parseInt(pos[1] + elem.offsetHeight + 2)) + "px";
+ };
+ };
+ /*@cc_on
+ @if(@_jscript_version <= 5.6)
+ if(o.staticPos) return;
+ o.iePopUp.style.top = o.div.style.top;
+ o.iePopUp.style.left = o.div.style.left;
+ o.iePopUp.style.width = osw + "px";
+ o.iePopUp.style.height = (osh - 2) + "px";
+ @end
+ @*/
+ };
+ o.equaliseDates = function() {
+ var clearDayFound = false;
+ var tmpDate;
+ for(var i = o.low; i <= o.high; i++) {
+ tmpDate = String(i);
+ if(!o.disableDays[new Date(tmpDate.substr(0,4), tmpDate.substr(6,2), tmpDate.substr(4,2)).getDay() - 1]) {
+ clearDayFound = true;
+ break;
+ };
+ };
+ if(!clearDayFound) o.disableDays = o.defaults.disableDays = [0,0,0,0,0,0,0];
+ };
+ o.outOfRange = function(tmpDate) {
+ if(!o.low && !o.high) return false;
+
+ var level = false;
+ if(!tmpDate) {
+ level = true;
+ tmpDate = o.date;
+ };
+
+ var d = (tmpDate.getDate() < 10) ? "0" + tmpDate.getDate() : tmpDate.getDate();
+ var m = ((tmpDate.getMonth() + 1) < 10) ? "0" + (tmpDate.getMonth() + 1) : tmpDate.getMonth() + 1;
+ var y = tmpDate.getFullYear();
+ var dt = String(y)+String(m)+String(d);
+
+ if(o.low && parseInt(dt) < parseInt(o.low)) {
+ if(!level) return true;
+ o.date = new Date(o.low.substr(0,4), o.low.substr(4,2)-1, o.low.substr(6,2), 5, 0, 0);
+ return false;
+ };
+ if(o.high && parseInt(dt) > parseInt(o.high)) {
+ if(!level) return true;
+ o.date = new Date( o.high.substr(0,4), o.high.substr(4,2)-1, o.high.substr(6,2), 5, 0, 0);
+ };
+ return false;
+ };
+ o.createButton = function() {
+ if(o.staticPos) { return; };
+
+ var but;
+
+ if(!document.getElementById("fd-but-" + o.id)) {
+ var inp = o.getElem();
+
+ but = document.createElement('a');
+ but.href = "#";
+
+ var span = document.createElement('span');
+ span.appendChild(document.createTextNode(String.fromCharCode( 160 )));
+
+ but.className = "date-picker-control";
+ but.title = (typeof(fdLocale) == "object" && options.locale && fdLocale.titles.length > 5) ? fdLocale.titles[5] : "";
+
+ but.id = "fd-but-" + o.id;
+ but.appendChild(span);
+
+ if(inp.nextSibling) {
+ inp.parentNode.insertBefore(but, inp.nextSibling);
+ } else {
+ inp.parentNode.appendChild(but);
+ };
+ } else {
+ but = document.getElementById("fd-but-" + o.id);
+ };
+
+ but.onclick = but.onpress = function(e) {
+ e = e || window.event;
+ var inpId = this.id.replace('fd-but-','');
+ try { var dp = datePickerController.getDatePicker(inpId); } catch(err) { return false; };
+
+ if(e.type == "press") {
+ var kc = e.keyCode != null ? e.keyCode : e.charCode;
+ if(kc != 13) { return true; };
+ if(dp.visible) {
+ hideAll();
+ return false;
+ };
+ };
+
+ if(!dp.visible) {
+ datePickerController.hideAll(inpId);
+ dp.show();
+ } else {
+ datePickerController.hideAll();
+ };
+ return false;
+ };
+ but = null;
+ },
+ o.create = function() {
+
+ function createTH(details) {
+ var th = document.createElement('th');
+ if(details.thClassName) th.className = details.thClassName;
+ if(details.colspan) {
+ /*@cc_on
+ /*@if (@_win32)
+ th.setAttribute('colSpan',details.colspan);
+ @else @*/
+ th.setAttribute('colspan',details.colspan);
+ /*@end
+ @*/
+ };
+ /*@cc_on
+ /*@if (@_win32)
+ th.unselectable = "on";
+ /*@end@*/
+ return th;
+ };
+
+ function createThAndButton(tr, obj) {
+ for(var i = 0, details; details = obj[i]; i++) {
+ var th = createTH(details);
+ tr.appendChild(th);
+ var but = document.createElement('span');
+ but.className = details.className;
+ but.id = o.id + details.id;
+ but.appendChild(document.createTextNode(details.text));
+ but.title = details.title || "";
+ if(details.onmousedown) but.onmousedown = details.onmousedown;
+ if(details.onclick) but.onclick = details.onclick;
+ if(details.onmouseout) but.onmouseout = details.onmouseout;
+ th.appendChild(but);
+ };
+ };
+
+ /*@cc_on
+ @if(@_jscript_version <= 5.6)
+ if(!document.getElementById("iePopUpHack")) {
+ o.iePopUp = document.createElement('iframe');
+ o.iePopUp.src = "javascript:'';";
+ o.iePopUp.setAttribute('className','iehack');
+ o.iePopUp.scrolling="no";
+ o.iePopUp.frameBorder="0";
+ o.iePopUp.name = o.iePopUp.id = "iePopUpHack";
+ document.body.appendChild(o.iePopUp);
+ } else {
+ o.iePopUp = document.getElementById("iePopUpHack");
+ };
+ @end
+ @*/
+
+ if(typeof(fdLocale) == "object" && o.locale) {
+ datePicker.titles = fdLocale.titles;
+ datePicker.months = fdLocale.months;
+ datePicker.fullDay = fdLocale.fullDay;
+ // Optional parameters
+ if(fdLocale.dayAbbr) datePicker.dayAbbr = fdLocale.dayAbbr;
+ if(fdLocale.firstDayOfWeek) o.firstDayOfWeek = o.defaults.firstDayOfWeek = fdLocale.firstDayOfWeek;
+ };
+
+ o.div = document.createElement('div');
+ o.div.style.zIndex = 9999;
+ o.div.id = "fd-"+o.id;
+ o.div.className = "datePicker";
+
+ if(!o.staticPos) {
+ document.getElementsByTagName('body')[0].appendChild(o.div);
+ } else {
+ elem = o.getElem();
+ if(!elem) {
+ o.div = null;
+ return;
+ };
+ o.div.className += " staticDP";
+ o.div.setAttribute("tabIndex", "0");
+ o.div.onfocus = o.events.onfocus;
+ o.div.onblur = o.events.onblur;
+ elem.parentNode.insertBefore(o.div, elem.nextSibling);
+ if(o.hideInput && elem.type && elem.type == "text") elem.setAttribute("type", "hidden");
+ };
+
+ //var nbsp = String.fromCharCode( 160 );
+ var tr, row, col, tableHead, tableBody;
+
+ o.table = document.createElement('table');
+ o.div.appendChild( o.table );
+
+ tableHead = document.createElement('thead');
+ o.table.appendChild( tableHead );
+
+ tr = document.createElement('tr');
+ tableHead.appendChild(tr);
+
+ // Title Bar
+ o.titleBar = createTH({thClassName:"date-picker-title", colspan:7});
+ tr.appendChild( o.titleBar );
+ tr = null;
+
+ var span = document.createElement('span');
+ span.className = "month-display";
+ o.titleBar.appendChild(span);
+
+ span = document.createElement('span');
+ span.className = "year-display";
+ o.titleBar.appendChild(span);
+
+ span = null;
+
+ tr = document.createElement('tr');
+ tableHead.appendChild(tr);
+
+ createThAndButton(tr, [{className:"prev-but", id:"-prev-year-but", text:"\u00AB", title:datePicker.titles[2], onmousedown:function(e) { o.events.incDec(e,0,-1,0); }, onmouseout:o.events.clearTimer },{className:"prev-but", id:"-prev-month-but", text:"\u2039", title:datePicker.titles[0], onmousedown:function(e) { o.events.incDec(e,0,0,-1); }, onmouseout:o.events.clearTimer },{colspan:3, className:"today-but", id:"-today-but", text:datePicker.titles.length > 4 ? datePicker.titles[4] : "Today", onclick:o.events.gotoToday},{className:"next-but", id:"-next-month-but", text:"\u203A", title:datePicker.titles[1], onmousedown:function(e) { o.events.incDec(e,0,0,1); }, onmouseout:o.events.clearTimer },{className:"next-but", id:"-next-year-but", text:"\u00BB", title:datePicker.titles[3], onmousedown:function(e) { o.events.incDec(e,0,1,0); }, onmouseout:o.events.clearTimer }]);
+
+ tableBody = document.createElement('tbody');
+ o.table.appendChild( tableBody );
+
+ for(var rows = 0; rows < 7; rows++) {
+ row = document.createElement('tr');
+
+ if(rows != 0) tableBody.appendChild(row);
+ else tableHead.appendChild(row);
+
+ for(var cols = 0; cols < 7; cols++) {
+ col = (rows == 0) ? document.createElement('th') : document.createElement('td');
+
+ row.appendChild(col);
+ if(rows != 0) {
+ col.appendChild(document.createTextNode(o.nbsp));
+ col.onmouseover = o.events.onmouseover;
+ col.onclick = o.events.onclick;
+ } else {
+ col.className = "date-picker-day-header";
+ col.scope = "col";
+ };
+ col = null;
+ };
+ row = null;
+ };
+
+ // Table headers
+ var but;
+ var ths = o.table.getElementsByTagName('thead')[0].getElementsByTagName('tr')[2].getElementsByTagName('th');
+ for ( var y = 0; y < 7; y++ ) {
+ if(y > 0) {
+ but = document.createElement("span");
+ but.className = "fd-day-header";
+ but.onclick = ths[y].onclick = o.setFirstDayOfWeek;
+ but.appendChild(document.createTextNode(o.nbsp));
+ ths[y].appendChild(but);
+ but = null;
+ } else {
+ ths[y].appendChild(document.createTextNode(o.nbsp));
+ };
+ };
+
+ o.ths = o.table.getElementsByTagName('thead')[0].getElementsByTagName('tr')[2].getElementsByTagName('th');
+ o.trs = o.table.getElementsByTagName('tbody')[0].getElementsByTagName('tr');
+
+ o.updateTableHeaders();
+
+ tableBody = tableHead = tr = createThAndButton = createTH = null;
+
+ if(o.low && o.high && (o.high - o.low < 7)) { o.equaliseDates(); };
+
+ o.created = true;
+
+ if(o.staticPos) {
+ var yyN = document.getElementById(o.id);
+ datePickerController.addEvent(yyN, "change", o.changeHandler);
+ if(o.splitDate) {
+ var mmN = document.getElementById(o.id+'-mm');
+ var ddN = document.getElementById(o.id+'-dd');
+ datePickerController.addEvent(mmN, "change", o.changeHandler);
+ datePickerController.addEvent(ddN, "change", o.changeHandler);
+ };
+
+ o.show();
+ } else {
+ o.createButton();
+ o.resize();
+ o.fade();
+ };
+ };
+ o.changeHandler = function() {
+ o.setDateFromInput();
+ o.updateTable();
+ };
+ o.setDateFromInput = function() {
+ function m2c(val) {
+ return String(val).length < 2 ? "00".substring(0, 2 - String(val).length) + String(val) : val;
+ };
+
+ o.dateSet = null;
+
+ var elem = o.getElem();
+ if(!elem) return;
+
+ if(!o.splitDate) {
+ var date = datePickerController.dateFormat(elem.value, o.format.search(/m-d-y/i) != -1);
+ } else {
+ var mmN = document.getElementById(o.id+'-mm');
+ var ddN = document.getElementById(o.id+'-dd');
+ var tm = parseInt(mmN.tagName.toLowerCase() == "input" ? mmN.value : mmN.options[mmN.selectedIndex].value, 10);
+ var td = parseInt(ddN.tagName.toLowerCase() == "input" ? ddN.value : ddN.options[ddN.selectedIndex].value, 10);
+ var ty = parseInt(elem.tagName.toLowerCase() == "input" ? elem.value : elem.options[elem.selectedIndex || 0].value, 10);
+ var date = datePickerController.dateFormat(tm + "/" + td + "/" + ty, true);
+ };
+
+ var badDate = false;
+ if(!date) {
+ badDate = true;
+ date = String(new Date().getFullYear()) + m2c(new Date().getMonth()+1) + m2c(new Date().getDate());
+ };
+
+ var d,m,y;
+ y = Number(date.substr(0, 4));
+ m = Number(date.substr(4, 2)) - 1;
+ d = Number(date.substr(6, 2));
+
+ var dpm = datePicker.getDaysPerMonth(m, y);
+ if(d > dpm) d = dpm;
+
+ if(new Date(y, m, d) == 'Invalid Date' || new Date(y, m, d) == 'NaN') {
+ badDate = true;
+ o.date = new Date();
+ o.date.setHours(5);
+ return;
+ };
+
+ o.date = new Date(y, m, d);
+ o.date.setHours(5);
+
+ if(!badDate) o.dateSet = new Date(o.date);
+ m2c = null;
+ };
+ o.setSelectIndex = function(elem, indx) {
+ var len = elem.options.length;
+ indx = Number(indx);
+ for(var opt = 0; opt < len; opt++) {
+ if(elem.options[opt].value == indx) {
+ elem.selectedIndex = opt;
+ return;
+ };
+ };
+ },
+ o.returnFormattedDate = function() {
+
+ var elem = o.getElem();
+ if(!elem) return;
+
+ var d = (o.date.getDate() < 10) ? "0" + o.date.getDate() : o.date.getDate();
+ var m = ((o.date.getMonth() + 1) < 10) ? "0" + (o.date.getMonth() + 1) : o.date.getMonth() + 1;
+ var yyyy = o.date.getFullYear();
+ var disabledDates = o.getDisabledDates(yyyy, m);
+ var weekDay = ( o.date.getDay() + 6 ) % 7;
+
+ if(!(o.disableDays[weekDay] || String(yyyy)+m+d in disabledDates)) {
+
+ if(o.splitDate) {
+ var ddE = document.getElementById(o.id+"-dd");
+ var mmE = document.getElementById(o.id+"-mm");
+
+ if(ddE.tagName.toLowerCase() == "input") { ddE.value = d; }
+ else { o.setSelectIndex(ddE, d); /*ddE.selectedIndex = d - 1;*/ };
+
+ if(mmE.tagName.toLowerCase() == "input") { mmE.value = m; }
+ else { o.setSelectIndex(mmE, m); /*mmE.selectedIndex = m - 1;*/ };
+
+ if(elem.tagName.toLowerCase() == "input") elem.value = yyyy;
+ else {
+ o.setSelectIndex(elem, yyyy); /*
+ for(var opt = 0; opt < elem.options.length; opt++) {
+ if(elem.options[opt].value == yyyy) {
+ elem.selectedIndex = opt;
+ break;
+ };
+ };
+ */
+ };
+ } else {
+ elem.value = o.format.replace('y',yyyy).replace('m',m).replace('d',d).replace(/-/g,o.divider);
+ };
+ if(!elem.type || elem.type && elem.type != "hidden"){ elem.focus(); }
+ if(o.staticPos) {
+ o.dateSet = new Date( o.date );
+ o.updateTable();
+ };
+
+ // Programmatically fire the onchange event
+ if(document.createEvent) {
+ var onchangeEvent = document.createEvent('HTMLEvents');
+ onchangeEvent.initEvent('change', true, false);
+ elem.dispatchEvent(onchangeEvent);
+ } else if(document.createEventObject) {
+ elem.fireEvent('onchange');
+ };
+ };
+ };
+ o.disableTodayButton = function() {
+ var today = new Date();
+ document.getElementById(o.id + "-today-but").className = document.getElementById(o.id + "-today-but").className.replace("fd-disabled", "");
+ if(o.outOfRange(today) || (o.date.getDate() == today.getDate() && o.date.getMonth() == today.getMonth() && o.date.getFullYear() == today.getFullYear())) {
+ document.getElementById(o.id + "-today-but").className += " fd-disabled";
+ document.getElementById(o.id + "-today-but").onclick = null;
+ } else {
+ document.getElementById(o.id + "-today-but").onclick = o.events.gotoToday;
+ };
+ };
+ o.updateTableHeaders = function() {
+ var d, but;
+ var ths = o.ths;
+ for ( var y = 0; y < 7; y++ ) {
+ d = (o.firstDayOfWeek + y) % 7;
+ ths[y].title = datePicker.fullDay[d];
+
+ if(y > 0) {
+ but = ths[y].getElementsByTagName("span")[0];
+ but.removeChild(but.firstChild);
+ but.appendChild(document.createTextNode(datePicker.dayAbbr ? datePicker.dayAbbr[d] : datePicker.fullDay[d].charAt(0)));
+ but.title = datePicker.fullDay[d];
+ but = null;
+ } else {
+ ths[y].removeChild(ths[y].firstChild);
+ ths[y].appendChild(document.createTextNode(datePicker.dayAbbr ? datePicker.dayAbbr[d] : datePicker.fullDay[d].charAt(0)));
+ };
+ };
+ o.updateTable();
+ };
+
+ o.updateTable = function(noCallback) {
+
+ if(o.timerSet) {
+ var d = new Date(o.date);
+ d.setDate( Math.min(d.getDate()+o.dayInc, datePicker.getDaysPerMonth(d.getMonth()+o.monthInc,d.getFullYear()+o.yearInc)) );
+ d.setMonth( d.getMonth() + o.monthInc );
+ d.setFullYear( d.getFullYear() + o.yearInc );
+ o.date = d;
+ };
+
+ if(!noCallback && "onupdate" in datePickerController && typeof(datePickerController.onupdate) == "function") datePickerController.onupdate(o);
+
+ o.outOfRange();
+ o.disableTodayButton();
+
+ // Set the tmpDate to the second day of this month (to avoid daylight savings time madness on Windows)
+ var tmpDate = new Date( o.date.getFullYear(), o.date.getMonth(), 2 );
+ tmpDate.setHours(5);
+
+ var tdm = tmpDate.getMonth();
+ var tdy = tmpDate.getFullYear();
+
+ // Do the disableDates for this year and month
+ var disabledDates = o.getDisabledDates(o.date.getFullYear(), o.date.getMonth() + 1);
+
+ var today = new Date();
+
+ // Previous buttons out of range
+ var b = document.getElementById(o.id + "-prev-year-but");
+ b.className = b.className.replace("fd-disabled", "");
+ if(o.outOfRange(new Date((tdy - 1), Number(tdm), datePicker.getDaysPerMonth(Number(tdm), tdy-1)))) {
+ b.className += " fd-disabled";
+ if(o.yearInc == -1) o.stopTimer();
+ };
+
+ b = document.getElementById(o.id + "-prev-month-but")
+ b.className = b.className.replace("fd-disabled", "");
+ if(o.outOfRange(new Date(tdy, (Number(tdm) - 1), datePicker.getDaysPerMonth(Number(tdm)-1, tdy)))) {
+ b.className += " fd-disabled";
+ if(o.monthInc == -1) o.stopTimer();
+ };
+
+ // Next buttons out of range
+ b= document.getElementById(o.id + "-next-year-but")
+ b.className = b.className.replace("fd-disabled", "");
+ if(o.outOfRange(new Date((tdy + 1), Number(tdm), 1))) {
+ b.className += " fd-disabled";
+ if(o.yearInc == 1) o.stopTimer();
+ };
+
+ b = document.getElementById(o.id + "-next-month-but")
+ b.className = b.className.replace("fd-disabled", "");
+ if(o.outOfRange(new Date(tdy, Number(tdm) + 1, 1))) {
+ b.className += " fd-disabled";
+ if(o.monthInc == 1) o.stopTimer();
+ };
+
+ b = null;
+
+ var cd = o.date.getDate();
+ var cm = o.date.getMonth();
+ var cy = o.date.getFullYear();
+
+ // Title Bar
+ var span = o.titleBar.getElementsByTagName("span");
+ while(span[0].firstChild) span[0].removeChild(span[0].firstChild);
+ while(span[1].firstChild) span[1].removeChild(span[1].firstChild);
+ span[0].appendChild(document.createTextNode(datePicker.months[cm] + o.nbsp));
+ span[1].appendChild(document.createTextNode(cy));
+
+ tmpDate.setDate( 1 );
+
+ var dt, cName, td, tds, i;
+ var weekDay = ( tmpDate.getDay() + 6 ) % 7;
+ var firstColIndex = (( (weekDay - o.firstDayOfWeek) + 7 ) % 7) - 1;
+ var dpm = datePicker.getDaysPerMonth(cm, cy);
+
+ var todayD = today.getDate();
+ var todayM = today.getMonth();
+ var todayY = today.getFullYear();
+
+ var c = "class";
+ /*@cc_on
+ @if(@_win32)
+ c = "className";
+ @end
+ @*/
+
+ var stub = String(tdy) + (String(tdm+1).length < 2 ? "0" + (tdm+1) : tdm+1);
+
+ for(var row = 0; row < 6; row++) {
+
+ tds = o.trs[row].getElementsByTagName('td');
+
+ for(var col = 0; col < 7; col++) {
+
+ td = tds[col];
+ td.removeChild(td.firstChild);
+
+ td.setAttribute("id", "");
+ td.setAttribute("title", "");
+
+ i = (row * 7) + col;
+
+ if(i > firstColIndex && i <= (firstColIndex + dpm)) {
+ dt = i - firstColIndex;
+
+ tmpDate.setDate(dt);
+ td.appendChild(document.createTextNode(dt));
+
+ if(o.outOfRange(tmpDate)) {
+ td.setAttribute(c, "out-of-range");
+ } else {
+
+ cName = [];
+ weekDay = ( tmpDate.getDay() + 6 ) % 7;
+
+ if(dt == todayD && tdm == todayM && tdy == todayY) {
+ cName.push("date-picker-today");
+ };
+
+ if(o.dateSet != null && o.dateSet.getDate() == dt && o.dateSet.getMonth() == tdm && o.dateSet.getFullYear() == tdy) {
+ cName.push("date-picker-selected-date");
+ };
+
+ if(o.disableDays[weekDay] || stub + String(dt < 10 ? "0" + dt : dt) in disabledDates) {
+ cName.push("day-disabled");
+ } else if(o.highlightDays[weekDay]) {
+ cName.push("date-picker-highlight");
+ };
+
+ if(cd == dt) {
+ td.setAttribute("id", o.id + "-date-picker-hover");
+ cName.push("date-picker-hover");
+ };
+
+ cName.push("dm-" + dt + '-' + (tdm + 1) + " " + " dmy-" + dt + '-' + (tdm + 1) + '-' + tdy);
+ td.setAttribute(c, cName.join(' '));
+ td.setAttribute("title", datePicker.months[cm] + o.nbsp + dt + "," + o.nbsp + cy);
+ };
+ } else {
+ td.appendChild(document.createTextNode(o.nbsp));
+ td.setAttribute(c, "date-picker-unused");
+ };
+ };
+ };
+
+ if(o.timerSet) {
+ o.timerInc = 50 + Math.round(((o.timerInc - 50) / 1.8));
+ o.timer = window.setTimeout(o.updateTable, o.timerInc);
+ };
+ };
+ o.addKeyboardEvents = function() {
+ datePickerController.addEvent(document, "keypress", o.events.onkeydown);
+ /*@cc_on
+ @if(@_win32)
+ datePickerController.removeEvent(document, "keypress", o.events.onkeydown);
+ datePickerController.addEvent(document, "keydown", o.events.onkeydown);
+ @end
+ @*/
+ if(window.devicePixelRatio) {
+ datePickerController.removeEvent(document, "keypress", o.events.onkeydown);
+ datePickerController.addEvent(document, "keydown", o.events.onkeydown);
+ };
+ };
+ o.removeKeyboardEvents =function() {
+ datePickerController.removeEvent(document, "keypress", o.events.onkeydown);
+ datePickerController.removeEvent(document, "keydown", o.events.onkeydown);
+ };
+ o.show = function() {
+ var elem = o.getElem();
+ if(!elem || o.visible || elem.disabled) return;
+
+ o.reset();
+ o.setDateFromInput();
+ o.updateTable();
+
+ if(!o.staticPos) o.resize();
+
+ datePickerController.addEvent(o.staticPos ? o.table : document, "mousedown", o.events.onmousedown);
+
+ if(!o.staticPos) { o.addKeyboardEvents(); };
+
+ o.opacityTo = o.noTransparency ? 99 : 90;
+ o.div.style.display = "block";
+ /*@cc_on
+ @if(@_jscript_version <= 5.6)
+ if(!o.staticPos) o.iePopUp.style.display = "block";
+ @end
+ @*/
+
+ o.fade();
+ o.visible = true;
+ };
+ o.hide = function() {
+ if(!o.visible) return;
+ o.stopTimer();
+ if(o.staticPos) return;
+
+ datePickerController.removeEvent(document, "mousedown", o.events.onmousedown);
+ datePickerController.removeEvent(document, "mouseup", o.events.clearTimer);
+ o.removeKeyboardEvents();
+
+ /*@cc_on
+ @if(@_jscript_version <= 5.6)
+ o.iePopUp.style.display = "none";
+ @end
+ @*/
+
+ o.opacityTo = 0;
+ o.fade();
+ o.visible = false;
+ var elem = o.getElem();
+ if(!elem.type || elem.type && elem.type != "hidden") { elem.focus(); };
+ };
+ o.destroy = function() {
+ // Cleanup for Internet Explorer
+ datePickerController.removeEvent(o.staticPos ? o.table : document, "mousedown", o.events.onmousedown);
+ datePickerController.removeEvent(document, "mouseup", o.events.clearTimer);
+ o.removeKeyboardEvents();
+
+ if(o.staticPos) {
+ var yyN = document.getElementById(o.id);
+ datePickerController.removeEvent(yyN, "change", o.changeHandler);
+ if(o.splitDate) {
+ var mmN = document.getElementById(o.id+'-mm');
+ var ddN = document.getElementById(o.id+'-dd');
+
+ datePickerController.removeEvent(mmN, "change", o.changeHandler);
+ datePickerController.removeEvent(ddN, "change", o.changeHandler);
+ };
+ o.div.onfocus = o.div.onblur = null;
+ };
+
+ var ths = o.table.getElementsByTagName("th");
+ for(var i = 0, th; th = ths[i]; i++) {
+ th.onmouseover = th.onmouseout = th.onmousedown = th.onclick = null;
+ };
+
+ var tds = o.table.getElementsByTagName("td");
+ for(var i = 0, td; td = tds[i]; i++) {
+ td.onmouseover = td.onclick = null;
+ };
+
+ var butts = o.table.getElementsByTagName("span");
+ for(var i = 0, butt; butt = butts[i]; i++) {
+ butt.onmousedown = butt.onclick = butt.onkeypress = null;
+ };
+
+ o.ths = o.trs = null;
+
+ clearTimeout(o.fadeTimer);
+ clearTimeout(o.timer);
+ o.fadeTimer = o.timer = null;
+
+ /*@cc_on
+ @if(@_jscript_version <= 5.6)
+ o.iePopUp = null;
+ @end
+ @*/
+
+ if(!o.staticPos && document.getElementById(o.id.replace(/^fd-/, 'fd-but-'))) {
+ var butt = document.getElementById(o.id.replace(/^fd-/, 'fd-but-'));
+ butt.onclick = butt.onpress = null;
+ };
+
+ if(o.div && o.div.parentNode) {
+ o.div.parentNode.removeChild(o.div);
+ };
+
+ o.titleBar = o.table = o.div = null;
+ o = null;
+ };
+ o.create();
+};
+
+datePickerController = function() {
+ var datePickers = {};
+ var uniqueId = 0;
+
+ var addEvent = function(obj, type, fn) {
+ if( obj.attachEvent ) {
+ obj["e"+type+fn] = fn;
+ obj[type+fn] = function(){obj["e"+type+fn]( window.event );};
+ obj.attachEvent( "on"+type, obj[type+fn] );
+ } else {
+ obj.addEventListener( type, fn, true );
+ };
+ };
+ var removeEvent = function(obj, type, fn) {
+ try {
+ if( obj.detachEvent ) {
+ obj.detachEvent( "on"+type, obj[type+fn] );
+ obj[type+fn] = null;
+ } else {
+ obj.removeEventListener( type, fn, true );
+ };
+ } catch(err) {};
+ };
+ var hideAll = function(exception) {
+ var dp;
+ for(dp in datePickers) {
+ if(!datePickers[dp].created || datePickers[dp].staticPos) continue;
+ if(exception && exception == datePickers[dp].id) { continue; };
+ if(document.getElementById(datePickers[dp].id)) { datePickers[dp].hide(); };
+ };
+ };
+ var cleanUp = function() {
+ var dp;
+ for(dp in datePickers) {
+ if(!document.getElementById(datePickers[dp].id)) {
+ if(!datePickers[dp].created) continue;
+ datePickers[dp].destroy();
+ datePickers[dp] = null;
+ delete datePickers[dp];
+ };
+ };
+ };
+ var destroy = function() {
+ for(dp in datePickers) {
+ if(!datePickers[dp].created) continue;
+ datePickers[dp].destroy();
+ datePickers[dp] = null;
+ delete datePickers[dp];
+ };
+ datePickers = null;
+ /*@cc_on
+ @if(@_jscript_version <= 5.6)
+ if(document.getElementById("iePopUpHack")) {
+ document.body.removeChild(document.getElementById("iePopUpHack"));
+ };
+ @end
+ @*/
+ datePicker.script = null;
+ removeEvent(window, 'load', datePickerController.create);
+ removeEvent(window, 'unload', datePickerController.destroy);
+ };
+ var dateFormat = function(dateIn, favourMDY) {
+ var dateTest = [
+ { regExp:/^(0?[1-9]|[12][0-9]|3[01])([- \/.])(0?[1-9]|1[012])([- \/.])((\d\d)?\d\d)$/, d:1, m:3, y:5 }, // dmy
+ { regExp:/^(0?[1-9]|1[012])([- \/.])(0?[1-9]|[12][0-9]|3[01])([- \/.])((\d\d)?\d\d)$/, d:3, m:1, y:5 }, // mdy
+ { regExp:/^(\d\d\d\d)([- \/.])(0?[1-9]|1[012])([- \/.])(0?[1-9]|[12][0-9]|3[01])$/, d:5, m:3, y:1 } // ymd
+ ];
+
+ var start;
+ var cnt = 0;
+ while(cnt < 3) {
+ start = (cnt + (favourMDY ? 4 : 3)) % 3;
+ if(dateIn.match(dateTest[start].regExp)) {
+ res = dateIn.match(dateTest[start].regExp);
+ y = res[dateTest[start].y];
+ m = res[dateTest[start].m];
+ d = res[dateTest[start].d];
+ if(m.length == 1) m = "0" + m;
+ if(d.length == 1) d = "0" + d;
+ if(y.length != 4) y = (parseInt(y) < 50) ? '20' + y : '19' + y;
+ return String(y)+m+d;
+ };
+ cnt++;
+ };
+ return 0;
+ };
+ var joinNodeLists = function() {
+ if(!arguments.length) { return []; }
+ var nodeList = [];
+ for (var i = 0; i < arguments.length; i++) {
+ for (var j = 0, item; item = arguments[i][j]; j++) {
+ nodeList[nodeList.length] = item;
+ };
+ };
+ return nodeList;
+ };
+ var addDatePicker = function(inpId, options) {
+ if(!(inpId in datePickers)) {
+ datePickers[inpId] = new datePicker(options);
+ };
+ };
+ var getDatePicker = function(inpId) {
+ if(!(inpId in datePickers)) { throw "No datePicker has been created for the form element with an id of '" + inpId.toString() + "'"; };
+ return datePickers[inpId];
+ };
+ var grepRangeLimits = function(sel) {
+ var range = [];
+ for(var i = 0; i < sel.options.length; i++) {
+ if(sel.options[i].value.search(/^\d\d\d\d$/) == -1) { continue; };
+ if(!range[0] || Number(sel.options[i].value) < range[0]) { range[0] = Number(sel.options[i].value); };
+ if(!range[1] || Number(sel.options[i].value) > range[1]) { range[1] = Number(sel.options[i].value); };
+ };
+ return range;
+ };
+ var create = function(inp) {
+ if(!(typeof document.createElement != "undefined" && typeof document.documentElement != "undefined" && typeof document.documentElement.offsetWidth == "number")) return;
+
+ var inputs = (inp && inp.tagName) ? [inp] : joinNodeLists(document.getElementsByTagName('input'), document.getElementsByTagName('select'));
+ var regExp1 = /disable-days-([1-7]){1,6}/g; // the days to disable
+ var regExp2 = /no-transparency/g; // do not use transparency effects
+ var regExp3 = /highlight-days-([1-7]){1,7}/g; // the days to highlight in red
+ var regExp4 = /range-low-(\d\d\d\d-\d\d-\d\d)/g; // the lowest selectable date
+ var regExp5 = /range-high-(\d\d\d\d-\d\d-\d\d)/g; // the highest selectable date
+ var regExp6 = /format-(d-m-y|m-d-y|y-m-d)/g; // the input/output date format
+ var regExp7 = /divider-(dot|slash|space|dash)/g; // the character used to divide the date
+ var regExp8 = /no-locale/g; // do not attempt to detect the browser language
+ var regExp9 = /no-fade/g; // always show the datepicker
+ var regExp10 = /hide-input/g; // hide the input
+
+ for(var i=0, inp; inp = inputs[i]; i++) {
+ if(inp.className && (inp.className.search(regExp6) != -1 || inp.className.search(/split-date/) != -1) && ((inp.tagName.toLowerCase() == "input" && (inp.type == "text" || inp.type == "hidden")) || inp.tagName.toLowerCase() == "select")) {
+
+ if(inp.id && document.getElementById('fd-'+inp.id)) { continue; };
+
+ if(!inp.id) { inp.id = "fdDatePicker-" + uniqueId++; };
+
+ var options = {
+ id:inp.id,
+ low:"",
+ high:"",
+ divider:"/",
+ format:"d-m-y",
+ highlightDays:[0,0,0,0,0,1,1],
+ disableDays:[0,0,0,0,0,0,0],
+ locale:inp.className.search(regExp8) == -1,
+ splitDate:0,
+ noTransparency:inp.className.search(regExp2) != -1,
+ staticPos:inp.className.search(regExp9) != -1,
+ hideInput:inp.className.search(regExp10) != -1
+ };
+
+ if(!options.staticPos) {
+ options.hideInput = false;
+ } else {
+ options.noTransparency = true;
+ };
+
+ // Split the date into three parts ?
+ if(inp.className.search(/split-date/) != -1) {
+ if(document.getElementById(inp.id+'-dd') && document.getElementById(inp.id+'-mm') && document.getElementById(inp.id+'-dd').tagName.search(/input|select/i) != -1 && document.getElementById(inp.id+'-mm').tagName.search(/input|select/i) != -1) {
+ options.splitDate = 1;
+ };
+ };
+
+ // Date format(variations of d-m-y)
+ if(inp.className.search(regExp6) != -1) {
+ options.format = inp.className.match(regExp6)[0].replace('format-','');
+ };
+
+ // What divider to use, a "/", "-", "." or " "
+ if(inp.className.search(regExp7) != -1) {
+ var dividers = { dot:".", space:" ", dash:"-", slash:"/" };
+ options.divider = (inp.className.search(regExp7) != -1 && inp.className.match(regExp7)[0].replace('divider-','') in dividers) ? dividers[inp.className.match(regExp7)[0].replace('divider-','')] : "/";
+ };
+
+ // The days to highlight
+ if(inp.className.search(regExp3) != -1) {
+ var tmp = inp.className.match(regExp3)[0].replace(/highlight-days-/, '');
+ options.highlightDays = [0,0,0,0,0,0,0];
+ for(var j = 0; j < tmp.length; j++) {
+ options.highlightDays[tmp.charAt(j) - 1] = 1;
+ };
+ };
+
+ // The days to disable
+ if(inp.className.search(regExp1) != -1) {
+ var tmp = inp.className.match(regExp1)[0].replace(/disable-days-/, '');
+ options.disableDays = [0,0,0,0,0,0,0];
+ for(var j = 0; j < tmp.length; j++) {
+ options.disableDays[tmp.charAt(j) - 1] = 1;
+ };
+ };
+
+ // The lower limit
+ if(inp.className.search(/range-low-today/i) != -1) {
+ options.low = datePickerController.dateFormat((new Date().getMonth() + 1) + "/" + new Date().getDate() + "/" + new Date().getFullYear(), true);
+ } else if(inp.className.search(regExp4) != -1) {
+ options.low = datePickerController.dateFormat(inp.className.match(regExp4)[0].replace(/range-low-/, ''), false);
+ if(!options.low) {
+ options.low = '';
+ };
+ };
+
+ // The higher limit
+ if(inp.className.search(/range-high-today/i) != -1 && inp.className.search(/range-low-today/i) == -1) {
+ options.high = datePickerController.dateFormat((new Date().getMonth() + 1) + "/" + new Date().getDate() + "/" + new Date().getFullYear(), true);
+ } else if(inp.className.search(regExp5) != -1) {
+ options.high = datePickerController.dateFormat(inp.className.match(regExp5)[0].replace(/range-high-/, ''), false);
+ if(!options.high) {
+ options.high = '';
+ };
+ };
+
+ // Always round lower & higher limits if a selectList involved
+ if(inp.tagName.search(/select/i) != -1) {
+ var range = grepRangeLimits(inp);
+ options.low = options.low ? range[0] + String(options.low).substr(4,4) : datePickerController.dateFormat(range[0] + "/01/01");
+ options.high = options.high ? range[1] + String(options.low).substr(4,4) : datePickerController.dateFormat(range[1] + "/12/31");
+ };
+
+ addDatePicker(inp.id, options);
+ };
+ };
+ }
+
+ return {
+ addEvent:addEvent,
+ removeEvent:removeEvent,
+ create:create,
+ destroy:destroy,
+ cleanUp:cleanUp,
+ addDatePicker:addDatePicker,
+ getDatePicker:getDatePicker,
+ dateFormat:dateFormat,
+ datePickers:datePickers,
+ hideAll:hideAll
+ };
+}();
+
+})();
+
+datePickerController.addEvent(window, 'load', datePickerController.create);
+datePickerController.addEvent(window, 'unload', datePickerController.destroy);
diff --git a/spec/test_app/public/javascripts/gateway.js b/spec/test_app/public/javascripts/gateway.js
new file mode 100644
index 0000000..f8dc477
--- /dev/null
+++ b/spec/test_app/public/javascripts/gateway.js
@@ -0,0 +1,13 @@
+$j(function() {
+ var original_gtwy_type = $j('#gtwy-type').attr('value');
+ $j('div#gateway-settings-warning').hide();
+ $j('#gtwy-type').change(function() {
+ if ($j('#gtwy-type').attr('value') == original_gtwy_type) {
+ $j('div.gateway-settings').show();
+ $j('div#gateway-settings-warning').hide();
+ } else {
+ $j('div.gateway-settings').hide();
+ $j('div#gateway-settings-warning').show();
+ }
+ });
+})
\ No newline at end of file
diff --git a/spec/test_app/public/javascripts/jquery-1.4.2.min.js b/spec/test_app/public/javascripts/jquery-1.4.2.min.js
new file mode 100644
index 0000000..7c24308
--- /dev/null
+++ b/spec/test_app/public/javascripts/jquery-1.4.2.min.js
@@ -0,0 +1,154 @@
+/*!
+ * jQuery JavaScript Library v1.4.2
+ * http://jquery.com/
+ *
+ * Copyright 2010, John Resig
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ * Copyright 2010, The Dojo Foundation
+ * Released under the MIT, BSD, and GPL Licenses.
+ *
+ * Date: Sat Feb 13 22:33:48 2010 -0500
+ */
+(function(A,w){function ma(){if(!c.isReady){try{s.documentElement.doScroll("left")}catch(a){setTimeout(ma,1);return}c.ready()}}function Qa(a,b){b.src?c.ajax({url:b.src,async:false,dataType:"script"}):c.globalEval(b.text||b.textContent||b.innerHTML||"");b.parentNode&&b.parentNode.removeChild(b)}function X(a,b,d,f,e,j){var i=a.length;if(typeof b==="object"){for(var o in b)X(a,o,b[o],f,e,d);return a}if(d!==w){f=!j&&f&&c.isFunction(d);for(o=0;o
)[^>]*$|^#([\w-]+)$/,Ua=/^.[^:#\[\.,]*$/,Va=/\S/,
+Wa=/^(\s|\u00A0)+|(\s|\u00A0)+$/g,Xa=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,P=navigator.userAgent,xa=false,Q=[],L,$=Object.prototype.toString,aa=Object.prototype.hasOwnProperty,ba=Array.prototype.push,R=Array.prototype.slice,ya=Array.prototype.indexOf;c.fn=c.prototype={init:function(a,b){var d,f;if(!a)return this;if(a.nodeType){this.context=this[0]=a;this.length=1;return this}if(a==="body"&&!b){this.context=s;this[0]=s.body;this.selector="body";this.length=1;return this}if(typeof a==="string")if((d=Ta.exec(a))&&
+(d[1]||!b))if(d[1]){f=b?b.ownerDocument||b:s;if(a=Xa.exec(a))if(c.isPlainObject(b)){a=[s.createElement(a[1])];c.fn.attr.call(a,b,true)}else a=[f.createElement(a[1])];else{a=sa([d[1]],[f]);a=(a.cacheable?a.fragment.cloneNode(true):a.fragment).childNodes}return c.merge(this,a)}else{if(b=s.getElementById(d[2])){if(b.id!==d[2])return T.find(a);this.length=1;this[0]=b}this.context=s;this.selector=a;return this}else if(!b&&/^\w+$/.test(a)){this.selector=a;this.context=s;a=s.getElementsByTagName(a);return c.merge(this,
+a)}else return!b||b.jquery?(b||T).find(a):c(b).find(a);else if(c.isFunction(a))return T.ready(a);if(a.selector!==w){this.selector=a.selector;this.context=a.context}return c.makeArray(a,this)},selector:"",jquery:"1.4.2",length:0,size:function(){return this.length},toArray:function(){return R.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this.slice(a)[0]:this[a]},pushStack:function(a,b,d){var f=c();c.isArray(a)?ba.apply(f,a):c.merge(f,a);f.prevObject=this;f.context=this.context;if(b===
+"find")f.selector=this.selector+(this.selector?" ":"")+d;else if(b)f.selector=this.selector+"."+b+"("+d+")";return f},each:function(a,b){return c.each(this,a,b)},ready:function(a){c.bindReady();if(c.isReady)a.call(s,c);else Q&&Q.push(a);return this},eq:function(a){return a===-1?this.slice(a):this.slice(a,+a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(R.apply(this,arguments),"slice",R.call(arguments).join(","))},map:function(a){return this.pushStack(c.map(this,
+function(b,d){return a.call(b,d,b)}))},end:function(){return this.prevObject||c(null)},push:ba,sort:[].sort,splice:[].splice};c.fn.init.prototype=c.fn;c.extend=c.fn.extend=function(){var a=arguments[0]||{},b=1,d=arguments.length,f=false,e,j,i,o;if(typeof a==="boolean"){f=a;a=arguments[1]||{};b=2}if(typeof a!=="object"&&!c.isFunction(a))a={};if(d===b){a=this;--b}for(;ba ";
+var e=d.getElementsByTagName("*"),j=d.getElementsByTagName("a")[0];if(!(!e||!e.length||!j)){c.support={leadingWhitespace:d.firstChild.nodeType===3,tbody:!d.getElementsByTagName("tbody").length,htmlSerialize:!!d.getElementsByTagName("link").length,style:/red/.test(j.getAttribute("style")),hrefNormalized:j.getAttribute("href")==="/a",opacity:/^0.55$/.test(j.style.opacity),cssFloat:!!j.style.cssFloat,checkOn:d.getElementsByTagName("input")[0].value==="on",optSelected:s.createElement("select").appendChild(s.createElement("option")).selected,
+parentNode:d.removeChild(d.appendChild(s.createElement("div"))).parentNode===null,deleteExpando:true,checkClone:false,scriptEval:false,noCloneEvent:true,boxModel:null};b.type="text/javascript";try{b.appendChild(s.createTextNode("window."+f+"=1;"))}catch(i){}a.insertBefore(b,a.firstChild);if(A[f]){c.support.scriptEval=true;delete A[f]}try{delete b.test}catch(o){c.support.deleteExpando=false}a.removeChild(b);if(d.attachEvent&&d.fireEvent){d.attachEvent("onclick",function k(){c.support.noCloneEvent=
+false;d.detachEvent("onclick",k)});d.cloneNode(true).fireEvent("onclick")}d=s.createElement("div");d.innerHTML=" ";a=s.createDocumentFragment();a.appendChild(d.firstChild);c.support.checkClone=a.cloneNode(true).cloneNode(true).lastChild.checked;c(function(){var k=s.createElement("div");k.style.width=k.style.paddingLeft="1px";s.body.appendChild(k);c.boxModel=c.support.boxModel=k.offsetWidth===2;s.body.removeChild(k).style.display="none"});a=function(k){var n=
+s.createElement("div");k="on"+k;var r=k in n;if(!r){n.setAttribute(k,"return;");r=typeof n[k]==="function"}return r};c.support.submitBubbles=a("submit");c.support.changeBubbles=a("change");a=b=d=e=j=null}})();c.props={"for":"htmlFor","class":"className",readonly:"readOnly",maxlength:"maxLength",cellspacing:"cellSpacing",rowspan:"rowSpan",colspan:"colSpan",tabindex:"tabIndex",usemap:"useMap",frameborder:"frameBorder"};var G="jQuery"+J(),Ya=0,za={};c.extend({cache:{},expando:G,noData:{embed:true,object:true,
+applet:true},data:function(a,b,d){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var f=a[G],e=c.cache;if(!f&&typeof b==="string"&&d===w)return null;f||(f=++Ya);if(typeof b==="object"){a[G]=f;e[f]=c.extend(true,{},b)}else if(!e[f]){a[G]=f;e[f]={}}a=e[f];if(d!==w)a[b]=d;return typeof b==="string"?a[b]:a}},removeData:function(a,b){if(!(a.nodeName&&c.noData[a.nodeName.toLowerCase()])){a=a==A?za:a;var d=a[G],f=c.cache,e=f[d];if(b){if(e){delete e[b];c.isEmptyObject(e)&&c.removeData(a)}}else{if(c.support.deleteExpando)delete a[c.expando];
+else a.removeAttribute&&a.removeAttribute(c.expando);delete f[d]}}}});c.fn.extend({data:function(a,b){if(typeof a==="undefined"&&this.length)return c.data(this[0]);else if(typeof a==="object")return this.each(function(){c.data(this,a)});var d=a.split(".");d[1]=d[1]?"."+d[1]:"";if(b===w){var f=this.triggerHandler("getData"+d[1]+"!",[d[0]]);if(f===w&&this.length)f=c.data(this[0],a);return f===w&&d[1]?this.data(d[0]):f}else return this.trigger("setData"+d[1]+"!",[d[0],b]).each(function(){c.data(this,
+a,b)})},removeData:function(a){return this.each(function(){c.removeData(this,a)})}});c.extend({queue:function(a,b,d){if(a){b=(b||"fx")+"queue";var f=c.data(a,b);if(!d)return f||[];if(!f||c.isArray(d))f=c.data(a,b,c.makeArray(d));else f.push(d);return f}},dequeue:function(a,b){b=b||"fx";var d=c.queue(a,b),f=d.shift();if(f==="inprogress")f=d.shift();if(f){b==="fx"&&d.unshift("inprogress");f.call(a,function(){c.dequeue(a,b)})}}});c.fn.extend({queue:function(a,b){if(typeof a!=="string"){b=a;a="fx"}if(b===
+w)return c.queue(this[0],a);return this.each(function(){var d=c.queue(this,a,b);a==="fx"&&d[0]!=="inprogress"&&c.dequeue(this,a)})},dequeue:function(a){return this.each(function(){c.dequeue(this,a)})},delay:function(a,b){a=c.fx?c.fx.speeds[a]||a:a;b=b||"fx";return this.queue(b,function(){var d=this;setTimeout(function(){c.dequeue(d,b)},a)})},clearQueue:function(a){return this.queue(a||"fx",[])}});var Aa=/[\n\t]/g,ca=/\s+/,Za=/\r/g,$a=/href|src|style/,ab=/(button|input)/i,bb=/(button|input|object|select|textarea)/i,
+cb=/^(a|area)$/i,Ba=/radio|checkbox/;c.fn.extend({attr:function(a,b){return X(this,a,b,true,c.attr)},removeAttr:function(a){return this.each(function(){c.attr(this,a,"");this.nodeType===1&&this.removeAttribute(a)})},addClass:function(a){if(c.isFunction(a))return this.each(function(n){var r=c(this);r.addClass(a.call(this,n,r.attr("class")))});if(a&&typeof a==="string")for(var b=(a||"").split(ca),d=0,f=this.length;d-1)return true;return false},val:function(a){if(a===w){var b=this[0];if(b){if(c.nodeName(b,"option"))return(b.attributes.value||{}).specified?b.value:b.text;if(c.nodeName(b,"select")){var d=b.selectedIndex,f=[],e=b.options;b=b.type==="select-one";if(d<0)return null;var j=b?d:0;for(d=b?d+1:e.length;j=0;else if(c.nodeName(this,"select")){var u=c.makeArray(r);c("option",this).each(function(){this.selected=
+c.inArray(c(this).val(),u)>=0});if(!u.length)this.selectedIndex=-1}else this.value=r}})}});c.extend({attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(a,b,d,f){if(!a||a.nodeType===3||a.nodeType===8)return w;if(f&&b in c.attrFn)return c(a)[b](d);f=a.nodeType!==1||!c.isXMLDoc(a);var e=d!==w;b=f&&c.props[b]||b;if(a.nodeType===1){var j=$a.test(b);if(b in a&&f&&!j){if(e){b==="type"&&ab.test(a.nodeName)&&a.parentNode&&c.error("type property can't be changed");
+a[b]=d}if(c.nodeName(a,"form")&&a.getAttributeNode(b))return a.getAttributeNode(b).nodeValue;if(b==="tabIndex")return(b=a.getAttributeNode("tabIndex"))&&b.specified?b.value:bb.test(a.nodeName)||cb.test(a.nodeName)&&a.href?0:w;return a[b]}if(!c.support.style&&f&&b==="style"){if(e)a.style.cssText=""+d;return a.style.cssText}e&&a.setAttribute(b,""+d);a=!c.support.hrefNormalized&&f&&j?a.getAttribute(b,2):a.getAttribute(b);return a===null?w:a}return c.style(a,b,d)}});var O=/\.(.*)$/,db=function(a){return a.replace(/[^\w\s\.\|`]/g,
+function(b){return"\\"+b})};c.event={add:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){if(a.setInterval&&a!==A&&!a.frameElement)a=A;var e,j;if(d.handler){e=d;d=e.handler}if(!d.guid)d.guid=c.guid++;if(j=c.data(a)){var i=j.events=j.events||{},o=j.handle;if(!o)j.handle=o=function(){return typeof c!=="undefined"&&!c.event.triggered?c.event.handle.apply(o.elem,arguments):w};o.elem=a;b=b.split(" ");for(var k,n=0,r;k=b[n++];){j=e?c.extend({},e):{handler:d,data:f};if(k.indexOf(".")>-1){r=k.split(".");
+k=r.shift();j.namespace=r.slice(0).sort().join(".")}else{r=[];j.namespace=""}j.type=k;j.guid=d.guid;var u=i[k],z=c.event.special[k]||{};if(!u){u=i[k]=[];if(!z.setup||z.setup.call(a,f,r,o)===false)if(a.addEventListener)a.addEventListener(k,o,false);else a.attachEvent&&a.attachEvent("on"+k,o)}if(z.add){z.add.call(a,j);if(!j.handler.guid)j.handler.guid=d.guid}u.push(j);c.event.global[k]=true}a=null}}},global:{},remove:function(a,b,d,f){if(!(a.nodeType===3||a.nodeType===8)){var e,j=0,i,o,k,n,r,u,z=c.data(a),
+C=z&&z.events;if(z&&C){if(b&&b.type){d=b.handler;b=b.type}if(!b||typeof b==="string"&&b.charAt(0)==="."){b=b||"";for(e in C)c.event.remove(a,e+b)}else{for(b=b.split(" ");e=b[j++];){n=e;i=e.indexOf(".")<0;o=[];if(!i){o=e.split(".");e=o.shift();k=new RegExp("(^|\\.)"+c.map(o.slice(0).sort(),db).join("\\.(?:.*\\.)?")+"(\\.|$)")}if(r=C[e])if(d){n=c.event.special[e]||{};for(B=f||0;B=0){a.type=
+e=e.slice(0,-1);a.exclusive=true}if(!d){a.stopPropagation();c.event.global[e]&&c.each(c.cache,function(){this.events&&this.events[e]&&c.event.trigger(a,b,this.handle.elem)})}if(!d||d.nodeType===3||d.nodeType===8)return w;a.result=w;a.target=d;b=c.makeArray(b);b.unshift(a)}a.currentTarget=d;(f=c.data(d,"handle"))&&f.apply(d,b);f=d.parentNode||d.ownerDocument;try{if(!(d&&d.nodeName&&c.noData[d.nodeName.toLowerCase()]))if(d["on"+e]&&d["on"+e].apply(d,b)===false)a.result=false}catch(j){}if(!a.isPropagationStopped()&&
+f)c.event.trigger(a,b,f,true);else if(!a.isDefaultPrevented()){f=a.target;var i,o=c.nodeName(f,"a")&&e==="click",k=c.event.special[e]||{};if((!k._default||k._default.call(d,a)===false)&&!o&&!(f&&f.nodeName&&c.noData[f.nodeName.toLowerCase()])){try{if(f[e]){if(i=f["on"+e])f["on"+e]=null;c.event.triggered=true;f[e]()}}catch(n){}if(i)f["on"+e]=i;c.event.triggered=false}}},handle:function(a){var b,d,f,e;a=arguments[0]=c.event.fix(a||A.event);a.currentTarget=this;b=a.type.indexOf(".")<0&&!a.exclusive;
+if(!b){d=a.type.split(".");a.type=d.shift();f=new RegExp("(^|\\.)"+d.slice(0).sort().join("\\.(?:.*\\.)?")+"(\\.|$)")}e=c.data(this,"events");d=e[a.type];if(e&&d){d=d.slice(0);e=0;for(var j=d.length;e-1?c.map(a.options,function(f){return f.selected}).join("-"):"";else if(a.nodeName.toLowerCase()==="select")d=a.selectedIndex;return d},fa=function(a,b){var d=a.target,f,e;if(!(!da.test(d.nodeName)||d.readOnly)){f=c.data(d,"_change_data");e=Fa(d);if(a.type!=="focusout"||d.type!=="radio")c.data(d,"_change_data",
+e);if(!(f===w||e===f))if(f!=null||e){a.type="change";return c.event.trigger(a,b,d)}}};c.event.special.change={filters:{focusout:fa,click:function(a){var b=a.target,d=b.type;if(d==="radio"||d==="checkbox"||b.nodeName.toLowerCase()==="select")return fa.call(this,a)},keydown:function(a){var b=a.target,d=b.type;if(a.keyCode===13&&b.nodeName.toLowerCase()!=="textarea"||a.keyCode===32&&(d==="checkbox"||d==="radio")||d==="select-multiple")return fa.call(this,a)},beforeactivate:function(a){a=a.target;c.data(a,
+"_change_data",Fa(a))}},setup:function(){if(this.type==="file")return false;for(var a in ea)c.event.add(this,a+".specialChange",ea[a]);return da.test(this.nodeName)},teardown:function(){c.event.remove(this,".specialChange");return da.test(this.nodeName)}};ea=c.event.special.change.filters}s.addEventListener&&c.each({focus:"focusin",blur:"focusout"},function(a,b){function d(f){f=c.event.fix(f);f.type=b;return c.event.handle.call(this,f)}c.event.special[b]={setup:function(){this.addEventListener(a,
+d,true)},teardown:function(){this.removeEventListener(a,d,true)}}});c.each(["bind","one"],function(a,b){c.fn[b]=function(d,f,e){if(typeof d==="object"){for(var j in d)this[b](j,f,d[j],e);return this}if(c.isFunction(f)){e=f;f=w}var i=b==="one"?c.proxy(e,function(k){c(this).unbind(k,i);return e.apply(this,arguments)}):e;if(d==="unload"&&b!=="one")this.one(d,f,e);else{j=0;for(var o=this.length;j0){y=t;break}}t=t[g]}m[q]=y}}}var f=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+e=0,j=Object.prototype.toString,i=false,o=true;[0,0].sort(function(){o=false;return 0});var k=function(g,h,l,m){l=l||[];var q=h=h||s;if(h.nodeType!==1&&h.nodeType!==9)return[];if(!g||typeof g!=="string")return l;for(var p=[],v,t,y,S,H=true,M=x(h),I=g;(f.exec(""),v=f.exec(I))!==null;){I=v[3];p.push(v[1]);if(v[2]){S=v[3];break}}if(p.length>1&&r.exec(g))if(p.length===2&&n.relative[p[0]])t=ga(p[0]+p[1],h);else for(t=n.relative[p[0]]?[h]:k(p.shift(),h);p.length;){g=p.shift();if(n.relative[g])g+=p.shift();
+t=ga(g,t)}else{if(!m&&p.length>1&&h.nodeType===9&&!M&&n.match.ID.test(p[0])&&!n.match.ID.test(p[p.length-1])){v=k.find(p.shift(),h,M);h=v.expr?k.filter(v.expr,v.set)[0]:v.set[0]}if(h){v=m?{expr:p.pop(),set:z(m)}:k.find(p.pop(),p.length===1&&(p[0]==="~"||p[0]==="+")&&h.parentNode?h.parentNode:h,M);t=v.expr?k.filter(v.expr,v.set):v.set;if(p.length>0)y=z(t);else H=false;for(;p.length;){var D=p.pop();v=D;if(n.relative[D])v=p.pop();else D="";if(v==null)v=h;n.relative[D](y,v,M)}}else y=[]}y||(y=t);y||k.error(D||
+g);if(j.call(y)==="[object Array]")if(H)if(h&&h.nodeType===1)for(g=0;y[g]!=null;g++){if(y[g]&&(y[g]===true||y[g].nodeType===1&&E(h,y[g])))l.push(t[g])}else for(g=0;y[g]!=null;g++)y[g]&&y[g].nodeType===1&&l.push(t[g]);else l.push.apply(l,y);else z(y,l);if(S){k(S,q,l,m);k.uniqueSort(l)}return l};k.uniqueSort=function(g){if(B){i=o;g.sort(B);if(i)for(var h=1;h":function(g,h){var l=typeof h==="string";if(l&&!/\W/.test(h)){h=h.toLowerCase();for(var m=0,q=g.length;m=0))l||m.push(v);else if(l)h[p]=false;return false},ID:function(g){return g[1].replace(/\\/g,"")},TAG:function(g){return g[1].toLowerCase()},
+CHILD:function(g){if(g[1]==="nth"){var h=/(-?)(\d*)n((?:\+|-)?\d*)/.exec(g[2]==="even"&&"2n"||g[2]==="odd"&&"2n+1"||!/\D/.test(g[2])&&"0n+"+g[2]||g[2]);g[2]=h[1]+(h[2]||1)-0;g[3]=h[3]-0}g[0]=e++;return g},ATTR:function(g,h,l,m,q,p){h=g[1].replace(/\\/g,"");if(!p&&n.attrMap[h])g[1]=n.attrMap[h];if(g[2]==="~=")g[4]=" "+g[4]+" ";return g},PSEUDO:function(g,h,l,m,q){if(g[1]==="not")if((f.exec(g[3])||"").length>1||/^\w/.test(g[3]))g[3]=k(g[3],null,null,h);else{g=k.filter(g[3],h,l,true^q);l||m.push.apply(m,
+g);return false}else if(n.match.POS.test(g[0])||n.match.CHILD.test(g[0]))return true;return g},POS:function(g){g.unshift(true);return g}},filters:{enabled:function(g){return g.disabled===false&&g.type!=="hidden"},disabled:function(g){return g.disabled===true},checked:function(g){return g.checked===true},selected:function(g){return g.selected===true},parent:function(g){return!!g.firstChild},empty:function(g){return!g.firstChild},has:function(g,h,l){return!!k(l[3],g).length},header:function(g){return/h\d/i.test(g.nodeName)},
+text:function(g){return"text"===g.type},radio:function(g){return"radio"===g.type},checkbox:function(g){return"checkbox"===g.type},file:function(g){return"file"===g.type},password:function(g){return"password"===g.type},submit:function(g){return"submit"===g.type},image:function(g){return"image"===g.type},reset:function(g){return"reset"===g.type},button:function(g){return"button"===g.type||g.nodeName.toLowerCase()==="button"},input:function(g){return/input|select|textarea|button/i.test(g.nodeName)}},
+setFilters:{first:function(g,h){return h===0},last:function(g,h,l,m){return h===m.length-1},even:function(g,h){return h%2===0},odd:function(g,h){return h%2===1},lt:function(g,h,l){return hl[3]-0},nth:function(g,h,l){return l[3]-0===h},eq:function(g,h,l){return l[3]-0===h}},filter:{PSEUDO:function(g,h,l,m){var q=h[1],p=n.filters[q];if(p)return p(g,l,h,m);else if(q==="contains")return(g.textContent||g.innerText||a([g])||"").indexOf(h[3])>=0;else if(q==="not"){h=
+h[3];l=0;for(m=h.length;l=0}},ID:function(g,h){return g.nodeType===1&&g.getAttribute("id")===h},TAG:function(g,h){return h==="*"&&g.nodeType===1||g.nodeName.toLowerCase()===h},CLASS:function(g,h){return(" "+(g.className||g.getAttribute("class"))+" ").indexOf(h)>-1},ATTR:function(g,h){var l=h[1];g=n.attrHandle[l]?n.attrHandle[l](g):g[l]!=null?g[l]:g.getAttribute(l);l=g+"";var m=h[2];h=h[4];return g==null?m==="!=":m===
+"="?l===h:m==="*="?l.indexOf(h)>=0:m==="~="?(" "+l+" ").indexOf(h)>=0:!h?l&&g!==false:m==="!="?l!==h:m==="^="?l.indexOf(h)===0:m==="$="?l.substr(l.length-h.length)===h:m==="|="?l===h||l.substr(0,h.length+1)===h+"-":false},POS:function(g,h,l,m){var q=n.setFilters[h[2]];if(q)return q(g,l,h,m)}}},r=n.match.POS;for(var u in n.match){n.match[u]=new RegExp(n.match[u].source+/(?![^\[]*\])(?![^\(]*\))/.source);n.leftMatch[u]=new RegExp(/(^(?:.|\r|\n)*?)/.source+n.match[u].source.replace(/\\(\d+)/g,function(g,
+h){return"\\"+(h-0+1)}))}var z=function(g,h){g=Array.prototype.slice.call(g,0);if(h){h.push.apply(h,g);return h}return g};try{Array.prototype.slice.call(s.documentElement.childNodes,0)}catch(C){z=function(g,h){h=h||[];if(j.call(g)==="[object Array]")Array.prototype.push.apply(h,g);else if(typeof g.length==="number")for(var l=0,m=g.length;l ";var l=s.documentElement;l.insertBefore(g,l.firstChild);if(s.getElementById(h)){n.find.ID=function(m,q,p){if(typeof q.getElementById!=="undefined"&&!p)return(q=q.getElementById(m[1]))?q.id===m[1]||typeof q.getAttributeNode!=="undefined"&&
+q.getAttributeNode("id").nodeValue===m[1]?[q]:w:[]};n.filter.ID=function(m,q){var p=typeof m.getAttributeNode!=="undefined"&&m.getAttributeNode("id");return m.nodeType===1&&p&&p.nodeValue===q}}l.removeChild(g);l=g=null})();(function(){var g=s.createElement("div");g.appendChild(s.createComment(""));if(g.getElementsByTagName("*").length>0)n.find.TAG=function(h,l){l=l.getElementsByTagName(h[1]);if(h[1]==="*"){h=[];for(var m=0;l[m];m++)l[m].nodeType===1&&h.push(l[m]);l=h}return l};g.innerHTML=" ";
+if(g.firstChild&&typeof g.firstChild.getAttribute!=="undefined"&&g.firstChild.getAttribute("href")!=="#")n.attrHandle.href=function(h){return h.getAttribute("href",2)};g=null})();s.querySelectorAll&&function(){var g=k,h=s.createElement("div");h.innerHTML="
";if(!(h.querySelectorAll&&h.querySelectorAll(".TEST").length===0)){k=function(m,q,p,v){q=q||s;if(!v&&q.nodeType===9&&!x(q))try{return z(q.querySelectorAll(m),p)}catch(t){}return g(m,q,p,v)};for(var l in g)k[l]=g[l];h=null}}();
+(function(){var g=s.createElement("div");g.innerHTML="
";if(!(!g.getElementsByClassName||g.getElementsByClassName("e").length===0)){g.lastChild.className="e";if(g.getElementsByClassName("e").length!==1){n.order.splice(1,0,"CLASS");n.find.CLASS=function(h,l,m){if(typeof l.getElementsByClassName!=="undefined"&&!m)return l.getElementsByClassName(h[1])};g=null}}})();var E=s.compareDocumentPosition?function(g,h){return!!(g.compareDocumentPosition(h)&16)}:
+function(g,h){return g!==h&&(g.contains?g.contains(h):true)},x=function(g){return(g=(g?g.ownerDocument||g:0).documentElement)?g.nodeName!=="HTML":false},ga=function(g,h){var l=[],m="",q;for(h=h.nodeType?[h]:h;q=n.match.PSEUDO.exec(g);){m+=q[0];g=g.replace(n.match.PSEUDO,"")}g=n.relative[g]?g+"*":g;q=0;for(var p=h.length;q=0===d})};c.fn.extend({find:function(a){for(var b=this.pushStack("","find",a),d=0,f=0,e=this.length;f0)for(var j=d;j0},closest:function(a,b){if(c.isArray(a)){var d=[],f=this[0],e,j=
+{},i;if(f&&a.length){e=0;for(var o=a.length;e-1:c(f).is(e)){d.push({selector:i,elem:f});delete j[i]}}f=f.parentNode}}return d}var k=c.expr.match.POS.test(a)?c(a,b||this.context):null;return this.map(function(n,r){for(;r&&r.ownerDocument&&r!==b;){if(k?k.index(r)>-1:c(r).is(a))return r;r=r.parentNode}return null})},index:function(a){if(!a||typeof a===
+"string")return c.inArray(this[0],a?c(a):this.parent().children());return c.inArray(a.jquery?a[0]:a,this)},add:function(a,b){a=typeof a==="string"?c(a,b||this.context):c.makeArray(a);b=c.merge(this.get(),a);return this.pushStack(qa(a[0])||qa(b[0])?b:c.unique(b))},andSelf:function(){return this.add(this.prevObject)}});c.each({parent:function(a){return(a=a.parentNode)&&a.nodeType!==11?a:null},parents:function(a){return c.dir(a,"parentNode")},parentsUntil:function(a,b,d){return c.dir(a,"parentNode",
+d)},next:function(a){return c.nth(a,2,"nextSibling")},prev:function(a){return c.nth(a,2,"previousSibling")},nextAll:function(a){return c.dir(a,"nextSibling")},prevAll:function(a){return c.dir(a,"previousSibling")},nextUntil:function(a,b,d){return c.dir(a,"nextSibling",d)},prevUntil:function(a,b,d){return c.dir(a,"previousSibling",d)},siblings:function(a){return c.sibling(a.parentNode.firstChild,a)},children:function(a){return c.sibling(a.firstChild)},contents:function(a){return c.nodeName(a,"iframe")?
+a.contentDocument||a.contentWindow.document:c.makeArray(a.childNodes)}},function(a,b){c.fn[a]=function(d,f){var e=c.map(this,b,d);eb.test(a)||(f=d);if(f&&typeof f==="string")e=c.filter(f,e);e=this.length>1?c.unique(e):e;if((this.length>1||gb.test(f))&&fb.test(a))e=e.reverse();return this.pushStack(e,a,R.call(arguments).join(","))}});c.extend({filter:function(a,b,d){if(d)a=":not("+a+")";return c.find.matches(a,b)},dir:function(a,b,d){var f=[];for(a=a[b];a&&a.nodeType!==9&&(d===w||a.nodeType!==1||!c(a).is(d));){a.nodeType===
+1&&f.push(a);a=a[b]}return f},nth:function(a,b,d){b=b||1;for(var f=0;a;a=a[d])if(a.nodeType===1&&++f===b)break;return a},sibling:function(a,b){for(var d=[];a;a=a.nextSibling)a.nodeType===1&&a!==b&&d.push(a);return d}});var Ja=/ jQuery\d+="(?:\d+|null)"/g,V=/^\s+/,Ka=/(<([\w:]+)[^>]*?)\/>/g,hb=/^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,La=/<([\w:]+)/,ib=/"+d+">"},F={option:[1,""," "],legend:[1,""," "],thead:[1,""],tr:[2,""],td:[3,""],col:[2,""],area:[1,""," "],_default:[0,"",""]};F.optgroup=F.option;F.tbody=F.tfoot=F.colgroup=F.caption=F.thead;F.th=F.td;if(!c.support.htmlSerialize)F._default=[1,"div","
"];c.fn.extend({text:function(a){if(c.isFunction(a))return this.each(function(b){var d=
+c(this);d.text(a.call(this,b,d.text()))});if(typeof a!=="object"&&a!==w)return this.empty().append((this[0]&&this[0].ownerDocument||s).createTextNode(a));return c.text(this)},wrapAll:function(a){if(c.isFunction(a))return this.each(function(d){c(this).wrapAll(a.call(this,d))});if(this[0]){var b=c(a,this[0].ownerDocument).eq(0).clone(true);this[0].parentNode&&b.insertBefore(this[0]);b.map(function(){for(var d=this;d.firstChild&&d.firstChild.nodeType===1;)d=d.firstChild;return d}).append(this)}return this},
+wrapInner:function(a){if(c.isFunction(a))return this.each(function(b){c(this).wrapInner(a.call(this,b))});return this.each(function(){var b=c(this),d=b.contents();d.length?d.wrapAll(a):b.append(a)})},wrap:function(a){return this.each(function(){c(this).wrapAll(a)})},unwrap:function(){return this.parent().each(function(){c.nodeName(this,"body")||c(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.appendChild(a)})},
+prepend:function(){return this.domManip(arguments,true,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,this)});else if(arguments.length){var a=c(arguments[0]);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,false,function(b){this.parentNode.insertBefore(b,
+this.nextSibling)});else if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,c(arguments[0]).toArray());return a}},remove:function(a,b){for(var d=0,f;(f=this[d])!=null;d++)if(!a||c.filter(a,[f]).length){if(!b&&f.nodeType===1){c.cleanData(f.getElementsByTagName("*"));c.cleanData([f])}f.parentNode&&f.parentNode.removeChild(f)}return this},empty:function(){for(var a=0,b;(b=this[a])!=null;a++)for(b.nodeType===1&&c.cleanData(b.getElementsByTagName("*"));b.firstChild;)b.removeChild(b.firstChild);
+return this},clone:function(a){var b=this.map(function(){if(!c.support.noCloneEvent&&!c.isXMLDoc(this)){var d=this.outerHTML,f=this.ownerDocument;if(!d){d=f.createElement("div");d.appendChild(this.cloneNode(true));d=d.innerHTML}return c.clean([d.replace(Ja,"").replace(/=([^="'>\s]+\/)>/g,'="$1">').replace(V,"")],f)[0]}else return this.cloneNode(true)});if(a===true){ra(this,b);ra(this.find("*"),b.find("*"))}return b},html:function(a){if(a===w)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(Ja,
+""):null;else if(typeof a==="string"&&!ta.test(a)&&(c.support.leadingWhitespace||!V.test(a))&&!F[(La.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Ka,Ma);try{for(var b=0,d=this.length;b0||e.cacheable||this.length>1?k.cloneNode(true):k)}o.length&&c.each(o,Qa)}return this}});c.fragments={};c.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){c.fn[a]=function(d){var f=[];d=c(d);var e=this.length===1&&this[0].parentNode;if(e&&e.nodeType===11&&e.childNodes.length===1&&d.length===1){d[b](this[0]);
+return this}else{e=0;for(var j=d.length;e0?this.clone(true):this).get();c.fn[b].apply(c(d[e]),i);f=f.concat(i)}return this.pushStack(f,a,d.selector)}}});c.extend({clean:function(a,b,d,f){b=b||s;if(typeof b.createElement==="undefined")b=b.ownerDocument||b[0]&&b[0].ownerDocument||s;for(var e=[],j=0,i;(i=a[j])!=null;j++){if(typeof i==="number")i+="";if(i){if(typeof i==="string"&&!jb.test(i))i=b.createTextNode(i);else if(typeof i==="string"){i=i.replace(Ka,Ma);var o=(La.exec(i)||["",
+""])[1].toLowerCase(),k=F[o]||F._default,n=k[0],r=b.createElement("div");for(r.innerHTML=k[1]+i+k[2];n--;)r=r.lastChild;if(!c.support.tbody){n=ib.test(i);o=o==="table"&&!n?r.firstChild&&r.firstChild.childNodes:k[1]===""&&!n?r.childNodes:[];for(k=o.length-1;k>=0;--k)c.nodeName(o[k],"tbody")&&!o[k].childNodes.length&&o[k].parentNode.removeChild(o[k])}!c.support.leadingWhitespace&&V.test(i)&&r.insertBefore(b.createTextNode(V.exec(i)[0]),r.firstChild);i=r.childNodes}if(i.nodeType)e.push(i);else e=
+c.merge(e,i)}}if(d)for(j=0;e[j];j++)if(f&&c.nodeName(e[j],"script")&&(!e[j].type||e[j].type.toLowerCase()==="text/javascript"))f.push(e[j].parentNode?e[j].parentNode.removeChild(e[j]):e[j]);else{e[j].nodeType===1&&e.splice.apply(e,[j+1,0].concat(c.makeArray(e[j].getElementsByTagName("script"))));d.appendChild(e[j])}return e},cleanData:function(a){for(var b,d,f=c.cache,e=c.event.special,j=c.support.deleteExpando,i=0,o;(o=a[i])!=null;i++)if(d=o[c.expando]){b=f[d];if(b.events)for(var k in b.events)e[k]?
+c.event.remove(o,k):Ca(o,k,b.handle);if(j)delete o[c.expando];else o.removeAttribute&&o.removeAttribute(c.expando);delete f[d]}}});var kb=/z-?index|font-?weight|opacity|zoom|line-?height/i,Na=/alpha\([^)]*\)/,Oa=/opacity=([^)]*)/,ha=/float/i,ia=/-([a-z])/ig,lb=/([A-Z])/g,mb=/^-?\d+(?:px)?$/i,nb=/^-?\d/,ob={position:"absolute",visibility:"hidden",display:"block"},pb=["Left","Right"],qb=["Top","Bottom"],rb=s.defaultView&&s.defaultView.getComputedStyle,Pa=c.support.cssFloat?"cssFloat":"styleFloat",ja=
+function(a,b){return b.toUpperCase()};c.fn.css=function(a,b){return X(this,a,b,true,function(d,f,e){if(e===w)return c.curCSS(d,f);if(typeof e==="number"&&!kb.test(f))e+="px";c.style(d,f,e)})};c.extend({style:function(a,b,d){if(!a||a.nodeType===3||a.nodeType===8)return w;if((b==="width"||b==="height")&&parseFloat(d)<0)d=w;var f=a.style||a,e=d!==w;if(!c.support.opacity&&b==="opacity"){if(e){f.zoom=1;b=parseInt(d,10)+""==="NaN"?"":"alpha(opacity="+d*100+")";a=f.filter||c.curCSS(a,"filter")||"";f.filter=
+Na.test(a)?a.replace(Na,b):b}return f.filter&&f.filter.indexOf("opacity=")>=0?parseFloat(Oa.exec(f.filter)[1])/100+"":""}if(ha.test(b))b=Pa;b=b.replace(ia,ja);if(e)f[b]=d;return f[b]},css:function(a,b,d,f){if(b==="width"||b==="height"){var e,j=b==="width"?pb:qb;function i(){e=b==="width"?a.offsetWidth:a.offsetHeight;f!=="border"&&c.each(j,function(){f||(e-=parseFloat(c.curCSS(a,"padding"+this,true))||0);if(f==="margin")e+=parseFloat(c.curCSS(a,"margin"+this,true))||0;else e-=parseFloat(c.curCSS(a,
+"border"+this+"Width",true))||0})}a.offsetWidth!==0?i():c.swap(a,ob,i);return Math.max(0,Math.round(e))}return c.curCSS(a,b,d)},curCSS:function(a,b,d){var f,e=a.style;if(!c.support.opacity&&b==="opacity"&&a.currentStyle){f=Oa.test(a.currentStyle.filter||"")?parseFloat(RegExp.$1)/100+"":"";return f===""?"1":f}if(ha.test(b))b=Pa;if(!d&&e&&e[b])f=e[b];else if(rb){if(ha.test(b))b="float";b=b.replace(lb,"-$1").toLowerCase();e=a.ownerDocument.defaultView;if(!e)return null;if(a=e.getComputedStyle(a,null))f=
+a.getPropertyValue(b);if(b==="opacity"&&f==="")f="1"}else if(a.currentStyle){d=b.replace(ia,ja);f=a.currentStyle[b]||a.currentStyle[d];if(!mb.test(f)&&nb.test(f)){b=e.left;var j=a.runtimeStyle.left;a.runtimeStyle.left=a.currentStyle.left;e.left=d==="fontSize"?"1em":f||0;f=e.pixelLeft+"px";e.left=b;a.runtimeStyle.left=j}}return f},swap:function(a,b,d){var f={};for(var e in b){f[e]=a.style[e];a.style[e]=b[e]}d.call(a);for(e in b)a.style[e]=f[e]}});if(c.expr&&c.expr.filters){c.expr.filters.hidden=function(a){var b=
+a.offsetWidth,d=a.offsetHeight,f=a.nodeName.toLowerCase()==="tr";return b===0&&d===0&&!f?true:b>0&&d>0&&!f?false:c.curCSS(a,"display")==="none"};c.expr.filters.visible=function(a){return!c.expr.filters.hidden(a)}}var sb=J(),tb=/