provideal-provideal-migration-helpers 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (6) hide show
  1. data/.gitignore +3 -0
  2. data/Rakefile +16 -0
  3. data/VERSION +1 -0
  4. data/init.rb +11 -0
  5. data/lib/migration_helpers.rb +26 -0
  6. metadata +58 -0
data/.gitignore ADDED
@@ -0,0 +1,3 @@
1
+ pkg
2
+ nbproject
3
+ .DS_Store
data/Rakefile ADDED
@@ -0,0 +1,16 @@
1
+ # coding: utf-8
2
+
3
+ require 'rake'
4
+
5
+ begin
6
+ require 'jeweler'
7
+ Jeweler::Tasks.new do |gemspec|
8
+ gemspec.name = "provideal-migration-helpers"
9
+ gemspec.summary = "Adds foreign key support for MySQL and PostgreSQL in Rails migrations"
10
+ gemspec.email = "info@provideal.net"
11
+ gemspec.homepage = "http://github.com/provideal/provideal-migration-helpers/"
12
+ gemspec.authors = ["René Sprotte"]
13
+ end
14
+ rescue LoadError
15
+ puts "Jeweler not available. Install it with: sudo gem install technicalpickles-jeweler -s http://gems.github.com"
16
+ end
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.1
data/init.rb ADDED
@@ -0,0 +1,11 @@
1
+ require 'migration_helpers'
2
+
3
+ # Support for MySQL
4
+ if defined?(ActiveRecord::ConnectionAdapters::MysqlAdapter)
5
+ ActiveRecord::ConnectionAdapters::MysqlAdapter.send :include, Provideal::MigrationHelpers
6
+ end
7
+
8
+ # Support for PostgreSQL
9
+ if defined?(ActiveRecord::ConnectionAdapters::PostgreSQLAdapter)
10
+ ActiveRecord::ConnectionAdapters::PostgreSQLAdapter.send :include, Provideal::MigrationHelpers
11
+ end
@@ -0,0 +1,26 @@
1
+ module Provideal
2
+ module MigrationHelpers
3
+ def add_foreign_key(from_table, from_columns, to_table, to_columns, options = {})
4
+ from_columns = [from_columns] unless from_columns.is_a? Array
5
+ to_columns = [to_columns] unless to_columns.is_a? Array
6
+
7
+ constraint_name = "fk_#{from_table}_#{from_columns.join('_')}"
8
+
9
+ sql = "ALTER TABLE #{from_table} ADD CONSTRAINT #{constraint_name} FOREIGN KEY (#{from_columns.join(',')}) REFERENCES #{to_table}(#{to_columns.join(',')})"
10
+
11
+ # Actions
12
+ sql << " ON DELETE #{options[:on_delete]}" unless options[:on_delete].nil?
13
+ sql << " ON UPDATE #{options[:on_update]}" unless options[:on_update].nil?
14
+
15
+ execute sql
16
+ end
17
+
18
+ def remove_foreign_key(from_table, from_columns)
19
+ from_columns = [from_columns] unless from_columns.is_a? Array
20
+ constraint_name = "fk_#{from_table}_#{from_columns.join('_')}"
21
+
22
+ sql = "ALTER TABLE #{from_table} DROP CONSTRAINT #{constraint_name}"
23
+ execute sql
24
+ end
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,58 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: provideal-provideal-migration-helpers
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - "Ren\xC3\xA9 Sprotte"
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-09-17 00:00:00 -07:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description:
17
+ email: info@provideal.net
18
+ executables: []
19
+
20
+ extensions: []
21
+
22
+ extra_rdoc_files: []
23
+
24
+ files:
25
+ - .gitignore
26
+ - Rakefile
27
+ - VERSION
28
+ - init.rb
29
+ - lib/migration_helpers.rb
30
+ has_rdoc: false
31
+ homepage: http://github.com/provideal/provideal-migration-helpers/
32
+ licenses:
33
+ post_install_message:
34
+ rdoc_options:
35
+ - --charset=UTF-8
36
+ require_paths:
37
+ - lib
38
+ required_ruby_version: !ruby/object:Gem::Requirement
39
+ requirements:
40
+ - - ">="
41
+ - !ruby/object:Gem::Version
42
+ version: "0"
43
+ version:
44
+ required_rubygems_version: !ruby/object:Gem::Requirement
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ version: "0"
49
+ version:
50
+ requirements: []
51
+
52
+ rubyforge_project:
53
+ rubygems_version: 1.3.5
54
+ signing_key:
55
+ specification_version: 3
56
+ summary: Adds foreign key support for MySQL and PostgreSQL in Rails migrations
57
+ test_files: []
58
+