also_migrate 0.1.1 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -14,7 +14,7 @@ Define the model
14
14
  ----------------
15
15
 
16
16
  <pre>
17
- class Article < ActiveRecord::Base
17
+ class Article &lt; ActiveRecord::Base
18
18
  also_migrate :article_archives, :ignore => 'moved_at', :indexes => 'id'
19
19
  end
20
20
  </pre>
@@ -1,9 +1,19 @@
1
+ require File.dirname(__FILE__) + '/also_migrate/gems'
2
+
3
+ AlsoMigrate::Gems.require(:lib)
4
+
1
5
  $:.unshift File.dirname(__FILE__) + '/also_migrate'
2
6
 
3
- require 'version'
4
7
  require 'base'
5
8
  require 'migration'
6
9
  require 'migrator'
10
+ require 'version'
11
+
12
+ module AlsoMigrate
13
+ class <<self
14
+ attr_accessor :classes
15
+ end
16
+ end
7
17
 
8
18
  ActiveRecord::Base.send(:include, AlsoMigrate::Base)
9
19
  ActiveRecord::Migrator.send(:include, AlsoMigrate::Migrator)
@@ -24,6 +24,8 @@ module AlsoMigrate
24
24
  attr_accessor :also_migrate_config
25
25
  end
26
26
  end
27
+ ::AlsoMigrate.classes ||= []
28
+ ::AlsoMigrate.classes << self
27
29
  end
28
30
  end
29
31
  end
@@ -0,0 +1,44 @@
1
+ unless defined?(AlsoMigrate::Gems)
2
+
3
+ require 'rubygems'
4
+
5
+ module AlsoMigrate
6
+ class Gems
7
+
8
+ VERSIONS = {
9
+ :active_wrapper => '=0.3.4',
10
+ :rake => '=0.8.7',
11
+ :rspec => '=1.3.1'
12
+ }
13
+
14
+ TYPES = {
15
+ :gemspec => [],
16
+ :gemspec_dev => [ :rspec ],
17
+ :lib => [],
18
+ :rake => [ :rake, :rspec ],
19
+ :spec => [ :active_wrapper, :rspec ],
20
+ :spec_rake => [ :active_wrapper ]
21
+ }
22
+
23
+ class <<self
24
+
25
+ def lockfile
26
+ file = File.expand_path('../../../gems', __FILE__)
27
+ unless File.exists?(file)
28
+ File.open(file, 'w') do |f|
29
+ Gem.loaded_specs.each do |key, value|
30
+ f.puts "#{key} #{value.version.version}"
31
+ end
32
+ end
33
+ end
34
+ end
35
+
36
+ def require(type=nil)
37
+ (TYPES[type] || TYPES.values.flatten.compact).each do |name|
38
+ gem name.to_s, VERSIONS[name]
39
+ end
40
+ end
41
+ end
42
+ end
43
+ end
44
+ end
@@ -31,32 +31,32 @@ module AlsoMigrate
31
31
  table_name = ActiveRecord::Migrator.proper_table_name(args[0])
32
32
 
33
33
  # Find models
34
- Object.subclasses_of(ActiveRecord::Base).each do |klass|
35
- if klass.respond_to?(:also_migrate_config)
36
- next unless klass.table_name == table_name
37
- next if klass.also_migrate_config.nil?
38
- klass.also_migrate_config.each do |config|
39
- options = config[:options]
40
- tables = config[:tables]
41
-
42
- # Don't change ignored columns
43
- options[:ignore].each do |column|
44
- next if args.include?(column) || args.include?(column.intern)
45
- end
34
+ if ::AlsoMigrate.classes
35
+ ::AlsoMigrate.classes.uniq.each do |klass|
36
+ if klass.also_migrate_config
37
+ klass.also_migrate_config.each do |config|
38
+ options = config[:options]
39
+ tables = config[:tables]
40
+
41
+ # Don't change ignored columns
42
+ options[:ignore].each do |column|
43
+ next if args.include?(column) || args.include?(column.intern)
44
+ end
46
45
 
47
- # Run migration
48
- config[:tables].each do |table|
49
- if method == :create_table
50
- ActiveRecord::Migrator::AlsoMigrate.create_tables(klass)
51
- elsif method == :add_index && !options[:indexes].nil?
52
- next
53
- elsif connection.table_exists?(table)
54
- args[0] = table
55
- args[1] = table if method == :rename_table
56
- begin
57
- connection.send(method, *args, &block)
58
- rescue Exception => e
59
- puts "(also_migrate warning) #{e.message}"
46
+ # Run migration
47
+ config[:tables].each do |table|
48
+ if method == :create_table
49
+ ActiveRecord::Migrator::AlsoMigrate.create_tables(klass)
50
+ elsif method == :add_index && !options[:indexes].nil?
51
+ next
52
+ elsif connection.table_exists?(table)
53
+ args[0] = table
54
+ args[1] = table if method == :rename_table
55
+ begin
56
+ connection.send(method, *args, &block)
57
+ rescue Exception => e
58
+ puts "(also_migrate warning) #{e.message}"
59
+ end
60
60
  end
61
61
  end
62
62
  end
@@ -14,9 +14,11 @@ module AlsoMigrate
14
14
  module InstanceMethods
15
15
 
16
16
  def migrate_with_also_migrate
17
- Object.subclasses_of(ActiveRecord::Base).each do |klass|
18
- if klass.respond_to?(:also_migrate_config)
19
- AlsoMigrate.create_tables(klass)
17
+ if ::AlsoMigrate.classes
18
+ ::AlsoMigrate.classes.uniq.each do |klass|
19
+ if klass.respond_to?(:also_migrate_config)
20
+ AlsoMigrate.create_tables(klass)
21
+ end
20
22
  end
21
23
  end
22
24
  rescue Exception => e
@@ -1,3 +1,3 @@
1
1
  module AlsoMigrate
2
- VERSION = "0.1.1" unless defined?(::AlsoMigrate::VERSION)
2
+ VERSION = "0.2.0" unless defined?(::AlsoMigrate::VERSION)
3
3
  end
metadata CHANGED
@@ -1,13 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: also_migrate
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
5
4
  prerelease: false
6
5
  segments:
7
6
  - 0
8
- - 1
9
- - 1
10
- version: 0.1.1
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
11
10
  platform: ruby
12
11
  authors:
13
12
  - Winton Welsh
@@ -15,43 +14,24 @@ autorequire:
15
14
  bindir: bin
16
15
  cert_chain: []
17
16
 
18
- date: 2010-07-19 00:00:00 -07:00
17
+ date: 2010-12-04 00:00:00 -08:00
19
18
  default_executable:
20
19
  dependencies:
21
20
  - !ruby/object:Gem::Dependency
22
- type: :development
23
- prerelease: false
24
- name: bundler
25
- version_requirements: &id001 !ruby/object:Gem::Requirement
26
- none: false
27
- requirements:
28
- - - "="
29
- - !ruby/object:Gem::Version
30
- hash: 62196361
31
- segments:
32
- - 1
33
- - 0
34
- - 0
35
- - beta
36
- - 5
37
- version: 1.0.0.beta.5
38
- requirement: *id001
39
- - !ruby/object:Gem::Dependency
40
- type: :development
41
- prerelease: false
42
21
  name: rspec
43
- version_requirements: &id002 !ruby/object:Gem::Requirement
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
44
24
  none: false
45
25
  requirements:
46
26
  - - "="
47
27
  - !ruby/object:Gem::Version
48
- hash: 27
49
28
  segments:
50
29
  - 1
51
30
  - 3
52
- - 0
53
- version: 1.3.0
54
- requirement: *id002
31
+ - 1
32
+ version: 1.3.1
33
+ type: :development
34
+ version_requirements: *id001
55
35
  description: Migrate multiple tables with similar schema at once
56
36
  email:
57
37
  - mail@wintoni.us
@@ -63,6 +43,7 @@ extra_rdoc_files: []
63
43
 
64
44
  files:
65
45
  - lib/also_migrate/base.rb
46
+ - lib/also_migrate/gems.rb
66
47
  - lib/also_migrate/migration.rb
67
48
  - lib/also_migrate/migrator.rb
68
49
  - lib/also_migrate/version.rb
@@ -83,7 +64,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
83
64
  requirements:
84
65
  - - ">="
85
66
  - !ruby/object:Gem::Version
86
- hash: 3
87
67
  segments:
88
68
  - 0
89
69
  version: "0"
@@ -92,7 +72,6 @@ required_rubygems_version: !ruby/object:Gem::Requirement
92
72
  requirements:
93
73
  - - ">="
94
74
  - !ruby/object:Gem::Version
95
- hash: 3
96
75
  segments:
97
76
  - 0
98
77
  version: "0"