acts_as_fu 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/lib/acts-as-fu.rb ADDED
@@ -0,0 +1 @@
1
+ require File.dirname(__FILE__) + '/acts_as_fu.rb'
@@ -0,0 +1,2 @@
1
+ RAILS_ROOT = File.join(File.dirname(__FILE__), '..') unless defined?(RAILS_ROOT)
2
+ RAILS_ENV = 'test' unless defined?(RAILS_ENV)
@@ -0,0 +1,64 @@
1
+ module ActsAsFu
2
+ class << self
3
+ attr_reader :log
4
+
5
+ def connect!(config={})
6
+ @log = ""
7
+ ActiveRecord::Base.logger = Logger.new(StringIO.new(log))
8
+ ActiveRecord::Base.establish_connection(config)
9
+ end
10
+ end
11
+
12
+ def build_model(name, options={}, &block)
13
+ connect!
14
+
15
+ super_class = options[:superclass] || begin
16
+ ActiveRecord::Base.connection.create_table(name, :force => true) { }
17
+ ActiveRecord::Base
18
+ end
19
+
20
+ set_class!(name, super_class, &block)
21
+ end
22
+
23
+ private
24
+
25
+ def set_class!(name, super_class, &block)
26
+ klass_name = name.to_s.classify
27
+ Object.send(:remove_const, klass_name) rescue nil
28
+
29
+ klass = Class.new(super_class)
30
+ Object.const_set(klass_name, klass)
31
+
32
+ model_eval(klass, &block)
33
+ end
34
+
35
+ def connect!
36
+ begin
37
+ # This blows up if there's no connection
38
+ ActiveRecord::Base.connection
39
+ rescue
40
+ ActsAsFu.connect!({
41
+ :adapter => "sqlite3",
42
+ :database => ":memory:"
43
+ })
44
+ end
45
+ end
46
+
47
+ def model_eval(klass, &block)
48
+ class << klass
49
+ def method_missing_with_columns(sym, *args, &block)
50
+ ActiveRecord::Base.connection.change_table(name.tableize) do |t|
51
+ t.send(sym, *args)
52
+ end
53
+ end
54
+
55
+ alias_method_chain :method_missing, :columns
56
+ end
57
+
58
+ klass.class_eval(&block) if block_given?
59
+
60
+ class << klass
61
+ alias_method :method_missing, :method_missing_without_columns
62
+ end
63
+ end
64
+ end
data/lib/acts_as_fu.rb ADDED
@@ -0,0 +1,7 @@
1
+ $LOAD_PATH << File.dirname(__FILE__) + '/acts_as_fu'
2
+
3
+ module ActsAsFu
4
+ VERSION = '0.0.2'
5
+ end
6
+
7
+ %w(rubygems activerecord constants helper).each { |lib| require lib }
metadata ADDED
@@ -0,0 +1,66 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: acts_as_fu
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.2
5
+ platform: ruby
6
+ authors:
7
+ - Pat Nakajima
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2008-10-26 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: activerecord
17
+ type: :runtime
18
+ version_requirement:
19
+ version_requirements: !ruby/object:Gem::Requirement
20
+ requirements:
21
+ - - ">="
22
+ - !ruby/object:Gem::Version
23
+ version: "0"
24
+ version:
25
+ description:
26
+ email: patnakajima@gmail.com
27
+ executables: []
28
+
29
+ extensions: []
30
+
31
+ extra_rdoc_files: []
32
+
33
+ files:
34
+ - lib/acts_as_fu
35
+ - lib/acts-as-fu.rb
36
+ - lib/acts_as_fu/constants.rb
37
+ - lib/acts_as_fu/helper.rb
38
+ - lib/acts_as_fu.rb
39
+ has_rdoc: true
40
+ homepage:
41
+ post_install_message:
42
+ rdoc_options: []
43
+
44
+ require_paths:
45
+ - lib
46
+ required_ruby_version: !ruby/object:Gem::Requirement
47
+ requirements:
48
+ - - ">="
49
+ - !ruby/object:Gem::Version
50
+ version: "0"
51
+ version:
52
+ required_rubygems_version: !ruby/object:Gem::Requirement
53
+ requirements:
54
+ - - ">="
55
+ - !ruby/object:Gem::Version
56
+ version: "0"
57
+ version:
58
+ requirements: []
59
+
60
+ rubyforge_project:
61
+ rubygems_version: 1.3.0
62
+ signing_key:
63
+ specification_version: 2
64
+ summary: Generate ActiveRecord models on the fly for your tests
65
+ test_files: []
66
+