standalone_migrations 0.1.2 → 0.2.0

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/README.markdown CHANGED
@@ -65,5 +65,5 @@ Contributors
65
65
  This work is based on [Lincoln Stoll's blog post](http://lstoll.net/2008/04/stand-alone-activerecord-migrations/) and [David Welton's post](http://journal.dedasys.com/2007/01/28/using-migrations-outside-of-rails).
66
66
 
67
67
  - [Todd Huss](http://gabrito.com/)
68
+ - [Michael Grosser](http://pragmatig.wordpress.com)
68
69
  - [Steve Hodgkiss](http://stevehodgkiss.com/)`s [activerecord-migrator-standalone](http://github.com/stevehodgkiss/activerecord-migrator-standalone)
69
- - [Michael Grosser](http://pragmatig.wordpress.com)
data/Rakefile CHANGED
@@ -6,13 +6,13 @@ begin
6
6
  Jeweler::Tasks.new do |gem|
7
7
  gem.name = 'standalone_migrations'
8
8
  gem.summary = "A thin wrapper to use Rails Migrations in non Rails projects"
9
- gem.email = "grosser.michael@gmail.com"
9
+ gem.email = "thuss@gabrito.com"
10
10
  gem.homepage = "http://github.com/thuss/standalone-migrations"
11
- gem.authors = ["Michael Grosser"]
11
+ gem.authors = ["Todd Huss", "Michael Grosser"]
12
12
  %w[rake activerecord].each{|d| gem.add_dependency d}
13
13
  end
14
14
 
15
15
  Jeweler::GemcutterTasks.new
16
16
  rescue LoadError
17
17
  puts "Jeweler, or one of its dependencies, is not available. Install it with: sudo gem install jeweler"
18
- end
18
+ end
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.2
1
+ 0.2.0
@@ -5,12 +5,12 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{standalone_migrations}
8
- s.version = "0.1.2"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = ["Michael Grosser"]
12
- s.date = %q{2010-03-16}
13
- s.email = %q{grosser.michael@gmail.com}
11
+ s.authors = ["Todd Huss", "Michael Grosser"]
12
+ s.date = %q{2010-03-18}
13
+ s.email = %q{thuss@gabrito.com}
14
14
  s.extra_rdoc_files = [
15
15
  "README.markdown"
16
16
  ]
@@ -1,43 +1,50 @@
1
- APP_BASE = File.expand_path('.') unless defined? APP_BASE
2
- MIGRATIONS_DIR = APP_BASE + "/migrations/"
1
+ # This file should stay copy-pasteable, so do not depend on StandaloneMigrations
2
+ # Every important option can be overwritten with MIGRATION_OPTIONS
3
+ base = File.expand_path('.')
4
+ here = File.expand_path(File.dirname(File.dirname(__FILE__)))
5
+
6
+ options = {
7
+ :base => base,
8
+ :vendor => "#{here}/vendor",
9
+ :migrations => "#{base}/db/migrations",
10
+ :config => "#{base}/db/config.yml",
11
+ :schema => "#{base}/db/schema.rb",
12
+ :env => 'DB',
13
+ :default_env => 'development'
14
+ }
15
+ options = options.merge(MIGRATION_OPTIONS) if defined?(MIGRATION_OPTIONS)
3
16
 
4
17
  # Add to load_path every "lib/" directory in vendor
5
- Dir["#{File.dirname(__FILE__)}/../vendor/**/lib"].each { |p| $LOAD_PATH << p }
18
+ Dir["#{options[:vendor]}/**/lib"].each{|p| $LOAD_PATH << p }
6
19
 
7
20
  namespace :db do
8
21
  task :ar_init do
9
22
  require 'active_record'
10
- ENV['RAILS_ENV'] ||= 'development'
11
- config = YAML.load_file(APP_BASE + '/config/database.yml')[ENV['RAILS_ENV']]
23
+ ENV[options[:env]] ||= options[:default_env]
24
+ config = YAML.load_file(options[:config])[ENV[options[:env]]]
12
25
  ActiveRecord::Base.establish_connection(config)
13
26
  logger = Logger.new $stderr
14
27
  logger.level = Logger::INFO
15
28
  ActiveRecord::Base.logger = logger
16
29
  end
17
30
 
18
- desc "Migrate the database using the scripts in the migrate directory. Target specific version with VERSION=x. Turn off output with VERBOSE=false."
31
+ desc "Migrate the database using the scripts in the migrations directory. Target specific version with VERSION=x. Turn off output with VERBOSE=false."
19
32
  task :migrate => :ar_init do
20
- require "#{File.dirname(__FILE__)}/../vendor/migration_helpers/init"
21
- ActiveRecord::Migration.verbose = ENV["VERBOSE"] ? ENV["VERBOSE"] == "true" : true
22
- ActiveRecord::Migrator.migrate(MIGRATIONS_DIR, ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
23
- Rake::Task[ "db:schema:dump" ].execute
33
+ require "#{options[:vendor]}/migration_helpers/init"
34
+ ActiveRecord::Migration.verbose = (ENV["VERBOSE"] == "true")
35
+ ActiveRecord::Migrator.migrate(options[:migrations], ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
36
+ Rake::Task["db:schema:dump"].execute
24
37
  end
25
38
 
26
39
  namespace :migrate do
27
- desc 'Runs the "up" for a given migration VERSION.'
28
- task :up => :ar_init do
29
- version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
30
- raise "VERSION is required" unless version
31
- ActiveRecord::Migrator.run(:up, MIGRATIONS_DIR, version)
32
- Rake::Task["db:schema:dump"].execute
33
- end
34
-
35
- desc 'Runs the "down" for a given migration VERSION.'
36
- task :down => :ar_init do
37
- version = ENV["VERSION"] ? ENV["VERSION"].to_i : nil
38
- raise "VERSION is required" unless version
39
- ActiveRecord::Migrator.run(:down, MIGRATIONS_DIR, version)
40
- Rake::Task["db:schema:dump"].execute
40
+ [:up, :down].each do |direction|
41
+ desc "Runs the '#{direction}' for a given migration VERSION."
42
+ task direction => :ar_init do
43
+ version = (ENV["VERSION"] ? ENV["VERSION"].to_i : nil)
44
+ raise "VERSION is required" unless version
45
+ ActiveRecord::Migrator.run(direction, MIGRATIONS_DIR, version)
46
+ Rake::Task["db:schema:dump"].execute
47
+ end
41
48
  end
42
49
  end
43
50
 
@@ -45,14 +52,14 @@ namespace :db do
45
52
  desc "Create schema.rb file that can be portably used against any DB supported by AR"
46
53
  task :dump => :ar_init do
47
54
  require 'active_record/schema_dumper'
48
- File.open(ENV['SCHEMA'] || APP_BASE + "/schema.rb", "w") do |file|
55
+ File.open(ENV['SCHEMA'] || options[:schema], "w") do |file|
49
56
  ActiveRecord::SchemaDumper.dump(ActiveRecord::Base.connection, file)
50
57
  end
51
58
  end
52
59
 
53
60
  desc "Load a ar_schema.rb file into the database"
54
61
  task :load => :ar_init do
55
- file = ENV['SCHEMA'] || APP_BASE + "/schema.rb"
62
+ file = ENV['SCHEMA'] || options[:schema]
56
63
  load(file)
57
64
  end
58
65
  end
@@ -65,7 +72,7 @@ namespace :db do
65
72
  exit 1
66
73
  end
67
74
 
68
- underscore = lambda { |camel_cased_word|
75
+ underscore = lambda{|camel_cased_word|
69
76
  camel_cased_word.to_s.gsub(/::/, '/').
70
77
  gsub(/([A-Z]+)([A-Z][a-z])/,'\1_\2').
71
78
  gsub(/([a-z\d])([A-Z])/,'\1_\2').
@@ -73,10 +80,7 @@ namespace :db do
73
80
  downcase
74
81
  }
75
82
 
76
- migration = underscore.call( ENV['name'] )
77
- file_name = "migrations/#{Time.now.utc.strftime('%Y%m%d%H%M%S')}_#{migration}.rb"
78
- class_name = migration.split('_').map { |s| s.capitalize }.join
79
-
83
+ class_name = migration.split('_').map{|s| s.capitalize }.join
80
84
  file_contents = <<eof
81
85
  class #{class_name} < ActiveRecord::Migration
82
86
  def self.up
@@ -87,7 +91,12 @@ class #{class_name} < ActiveRecord::Migration
87
91
  end
88
92
  end
89
93
  eof
90
- File.open(file_name, 'w') { |f| f.write file_contents }
94
+
95
+ migration = underscore.call( ENV['name'] )
96
+ FileUtils.mkdir_p(options[:migrations]) unless File.exist?(options[:migrations])
97
+ file_name = "#{options[:migrations]}/#{Time.now.utc.strftime('%Y%m%d%H%M%S')}_#{migration}.rb"
98
+
99
+ File.open(file_name, 'w'){|f| f.write file_contents }
91
100
 
92
101
  puts "Created migration #{file_name}"
93
102
  end
metadata CHANGED
@@ -4,17 +4,18 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
7
  - 2
9
- version: 0.1.2
8
+ - 0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
+ - Todd Huss
12
13
  - Michael Grosser
13
14
  autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-03-16 00:00:00 +01:00
18
+ date: 2010-03-18 00:00:00 +01:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
@@ -42,7 +43,7 @@ dependencies:
42
43
  type: :runtime
43
44
  version_requirements: *id002
44
45
  description:
45
- email: grosser.michael@gmail.com
46
+ email: thuss@gabrito.com
46
47
  executables: []
47
48
 
48
49
  extensions: []