Skip to content
This repository has been archived by the owner on Jan 1, 2024. It is now read-only.

Commit

Permalink
Migrations should use Vanity connection.
Browse files Browse the repository at this point in the history
Fixes #295.
  • Loading branch information
phillbaker committed Apr 4, 2016
1 parent 136ebbc commit 4228231
Show file tree
Hide file tree
Showing 2 changed files with 75 additions and 49 deletions.
112 changes: 65 additions & 47 deletions lib/generators/templates/vanity_migration.rb
Original file line number Diff line number Diff line change
@@ -1,55 +1,73 @@
class VanityMigration < ActiveRecord::Migration
def self.up
create_table :vanity_metrics do |t|
t.string :metric_id
t.datetime :updated_at
end
add_index :vanity_metrics, [:metric_id]
# Helper methods to ensure we're connecting to the right database, see
# https://github.com/assaf/vanity/issues/295.

create_table :vanity_metric_values do |t|
t.integer :vanity_metric_id
t.integer :index
t.integer :value
t.string :date
end
add_index :vanity_metric_values, [:vanity_metric_id, :date]

create_table :vanity_experiments do |t|
t.string :experiment_id
t.integer :outcome
t.boolean :enabled
t.datetime :created_at
t.datetime :completed_at
end
add_index :vanity_experiments, [:experiment_id]
def connection
@connection ||= ActiveRecord::Base.connection
end
alias_method :default_connection, :connection

create_table :vanity_conversions do |t|
t.integer :vanity_experiment_id
t.integer :alternative
t.integer :conversions
end
add_index :vanity_conversions, [:vanity_experiment_id, :alternative], :name => "by_experiment_id_and_alternative"

create_table :vanity_participants do |t|
t.string :experiment_id
t.string :identity
t.integer :shown
t.integer :seen
t.integer :converted
t.timestamps
def with_vanity_connection
@connection = Vanity::Adapters::ActiveRecordAdapter::VanityRecord.connection
yield
@connection = default_connection
end

def up
with_vanity_connection do
create_table :vanity_metrics do |t|
t.string :metric_id
t.datetime :updated_at
end
add_index :vanity_metrics, [:metric_id]

create_table :vanity_metric_values do |t|
t.integer :vanity_metric_id
t.integer :index
t.integer :value
t.string :date
end
add_index :vanity_metric_values, [:vanity_metric_id, :date]

create_table :vanity_experiments do |t|
t.string :experiment_id
t.integer :outcome
t.boolean :enabled
t.datetime :created_at
t.datetime :completed_at
end
add_index :vanity_experiments, [:experiment_id]

create_table :vanity_conversions do |t|
t.integer :vanity_experiment_id
t.integer :alternative
t.integer :conversions
end
add_index :vanity_conversions, [:vanity_experiment_id, :alternative], :name => "by_experiment_id_and_alternative"

create_table :vanity_participants do |t|
t.string :experiment_id
t.string :identity
t.integer :shown
t.integer :seen
t.integer :converted
t.timestamps
end
add_index :vanity_participants, [:experiment_id]
add_index :vanity_participants, [:experiment_id, :identity], :name => "by_experiment_id_and_identity"
add_index :vanity_participants, [:experiment_id, :shown], :name => "by_experiment_id_and_shown"
add_index :vanity_participants, [:experiment_id, :seen], :name => "by_experiment_id_and_seen"
add_index :vanity_participants, [:experiment_id, :converted], :name => "by_experiment_id_and_converted"
end
add_index :vanity_participants, [:experiment_id]
add_index :vanity_participants, [:experiment_id, :identity], :name => "by_experiment_id_and_identity"
add_index :vanity_participants, [:experiment_id, :shown], :name => "by_experiment_id_and_shown"
add_index :vanity_participants, [:experiment_id, :seen], :name => "by_experiment_id_and_seen"
add_index :vanity_participants, [:experiment_id, :converted], :name => "by_experiment_id_and_converted"
end

def self.down
drop_table :vanity_metrics
drop_table :vanity_metric_values
drop_table :vanity_experiments
drop_table :vanity_conversions
drop_table :vanity_participants
def down
with_vanity_connection do
drop_table :vanity_metrics
drop_table :vanity_metric_values
drop_table :vanity_experiments
drop_table :vanity_conversions
drop_table :vanity_participants
end
end
end
12 changes: 10 additions & 2 deletions test/test_helper.rb
Original file line number Diff line number Diff line change
Expand Up @@ -198,7 +198,15 @@ def setup_controller_request_and_response
ActiveRecord::Base.establish_connection
ActiveRecord::Base.logger = $logger

Vanity.connect!(VanityTestHelpers::DATABASE)
require "generators/templates/vanity_migration"
VanityMigration.down rescue nil
VanityMigration.up
if defined?(ActiveRecord::Tasks)
config = Vanity::Adapters::ActiveRecordAdapter::VanityRecord.connection_config
ActiveRecord::Tasks::DatabaseTasks.drop(config.with_indifferent_access)
else # Rails 3.2 fallback
klasses = Vanity::Adapters::ActiveRecordAdapter::VanityRecord.descendants
klasses.each { |k| k.connection.drop_table(k.table_name) if k.connection.table_exists?(k.table_name) }
end

VanityMigration.new.migrate(:up)
end

0 comments on commit 4228231

Please sign in to comment.