Skip to content

Commit

Permalink
Adding boot process to change version of AR/Rails, etc.
Browse files Browse the repository at this point in the history
  • Loading branch information
metaskills committed Sep 18, 2008
1 parent 684a419 commit 452d543
Show file tree
Hide file tree
Showing 2 changed files with 63 additions and 8 deletions.
21 changes: 21 additions & 0 deletions test/boot.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@

require 'activerecord'
require 'active_support'

plugin_root = File.join(File.dirname(__FILE__), '..')
framework_root = ["#{plugin_root}/rails", "#{plugin_root}/../../rails"].detect { |p| File.directory? p }
rails_version = ENV['RAILS_VERSION']
rails_version = nil if rails_version && rails_version == ''

if rails_version.nil? && framework_root
puts "Found framework root: #{framework_root}"
$:.unshift "#{framework_root}/activesupport/lib", "#{framework_root}/activerecord/lib"
else
puts "Using rails#{" #{rails_version}" if rails_version} from gems"
if rails_version
gem 'rails', rails_version
else
gem 'activerecord'
end
end

50 changes: 42 additions & 8 deletions test/helper.rb
Original file line number Diff line number Diff line change
@@ -1,30 +1,64 @@
require 'test/unit'
require 'rubygems'
require 'activerecord'
require 'active_support'
require 'shoulda'
require 'mocha'
require 'test/boot' unless defined?(ActiveRecord)
require 'activerecord'
require 'active_support'
require 'grouped_scope'

ActiveRecord::Base.logger = Logger.new(File.dirname(__FILE__)+'/debug.log')
ActiveRecord::Base.establish_connection :adapter => 'sqlite3', :database => ':memory:'

def setup_environment(options={})
options.reverse_merge! :gc => :group_id
options.reverse_merge! :group_column => :group_id
setup_database(options)
setup_models(options)
end

def setup_database(options)
ActiveRecord::Base.connection.create_table :employees, :force => true do |t|
t.column :name, :string
t.column :email, :string
t.column options[:gc], :integer
t.column options[:group_column], :integer
end
ActiveRecord::Base.connection.create_table :reports, :force => true do |t|
t.column :title, :string
t.column :body, :string
t.column :title, :string
t.column :body, :string
t.column :employee_id, :integer
end
ActiveRecord::Base.connection.create_table :legacy_employees, :force => true, :id => false do |t|
t.column :name, :string
t.column :email, :string
t.column options[:group_column], :integer
end
ActiveRecord::Base.connection.create_table :legacy_reports, :force => true do |t|
t.column :title, :string
t.column :body, :string
t.column :email, :string
end
end

def setup_models(options)
['Employee','Report','LegacyEmployee','LegacyReport'].each do |klass|
Object.send(:remove_const,klass) rescue nil
Object.const_set klass, Class.new(ActiveRecord::Base)
end
Object.send(:remove_const,'Employee') rescue nil
Object.const_set 'Employee', Class.new(ActiveRecord::Base)
Employee.class_eval do
has_many :reports
grouped_scope :reports
end
Report.class_eval do
belongs_to :employee
end
LegacyEmployee.class_eval do
set_primary_key :email
has_many :reports, :class_name => 'LegacyReport', :foreign_key => 'email'
grouped_scope :reports
end
LegacyReport.class_eval do
belongs_to :employee, :class_name => 'LegacyEmployee'
end
end


0 comments on commit 452d543

Please sign in to comment.