db_version_manager 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/README.rdoc ADDED
@@ -0,0 +1,56 @@
1
+ == Installation
2
+
3
+ sudo apt-get install ruby1.9.1-full ruby1.9.1-dev postgresql libpq-dev
4
+ sudo gem install pg activerecord-pg-adapter
5
+ sudo gem install db_version_manager
6
+
7
+
8
+ == Configuration
9
+
10
+ Configure DB settings in `config/database.yml`, if needed, change `config/initializer.rb`
11
+
12
+
13
+ == Usage
14
+
15
+ Available tasks are:
16
+ rake db:migrate[version] # Migrates DB to specified version (if no argument given, updates to latest migration).
17
+ rake db:version # Show current DB version.
18
+ rake help # Help
19
+ rake migration:applied # Show migrations that are applied.
20
+ rake migration:generate[description] # Generate new migration.
21
+ rake migration:unapplied # Show migrations that are not applied.
22
+ rake migration:version # Show current latest migration version.
23
+
24
+
25
+ == Example scenario
26
+
27
+ TODO-s:
28
+ * If you have Gems bin in your path, you can also just run ./db_version_manager
29
+ * Without cloning but with just Gem installation (see first)
30
+
31
+ === Obtain db_version-manager
32
+
33
+ git clone https://github.com/tione/db_version_manager.git
34
+ cd db_version_manager
35
+
36
+
37
+ === Configure database
38
+
39
+ config/database.yml
40
+
41
+
42
+ === Generate migration template what to edit
43
+
44
+ rake migration:generate["This is my migration description"]
45
+
46
+
47
+ === Edit your template in ./app/migrate/date_name.rb
48
+
49
+ 1. For up() define for example "CREATE TABLE .."
50
+ 2. For down() define for example "DROP TABLE .."
51
+
52
+ === Migrate changes to DB
53
+
54
+ rake db:migrate # if no version given, to last is migrated. you can also downgrade so.
55
+
56
+
data/Rakefile.rb ADDED
@@ -0,0 +1,65 @@
1
+ load_path = "."
2
+ $:.unshift(load_path) unless $:.include?(load_path)
3
+
4
+ require 'rake'
5
+ require 'active_record'
6
+ require 'config/initializer.rb'
7
+
8
+ desc "Generate new migration."
9
+ task 'migration:generate', [:description] do |t, args|
10
+ desc = args.description or raise ArgumentError.new "You have to specify *description* for migration."
11
+ time = Time.new
12
+ version = "#{time.year}#{time.month}#{time.day}#{time.hour}#{time.min}#{time.sec}"
13
+ words = desc.split(/[^\w]/).select {|c| c!=""}
14
+ words << version
15
+ klass = words.collect{|w| w.capitalize}.join("")
16
+ name = words.join("_")
17
+ file_name = "db/migrate/#{version}_#{name}.rb"
18
+ contents = "
19
+ class #{klass} < ActiveRecord::Migration
20
+ def up
21
+ execute 'SQL here'
22
+ end
23
+
24
+ def down
25
+ execute 'SQL here'
26
+ end
27
+ end
28
+ "
29
+ File.open(file_name, 'w+') do |file|
30
+ file.write(contents)
31
+ end
32
+ puts "Created file #{file_name}, please see also: http://api.rubyonrails.org/classes/ActiveRecord/Migration.html"
33
+ end
34
+
35
+ desc "Show current latest migration version."
36
+ task 'migration:version' do
37
+ puts ActiveRecord::Migrator.current_migration
38
+ end
39
+
40
+ desc "Show migrations that are not applied."
41
+ task 'migration:unapplied' do
42
+ puts ActiveRecord::Migrator.pending_migrations
43
+ end
44
+
45
+ desc "Show migrations that are applied."
46
+ task 'migration:applied' do
47
+ puts ActiveRecord::Migrator.applied
48
+ end
49
+
50
+ desc "Show current DB version."
51
+ task 'db:version' do
52
+ puts ActiveRecord::Migrator.current_version
53
+ end
54
+
55
+ desc "Migrates DB to specified version (if no argument given, updates to latest migration)."
56
+ task 'db:migrate', [:version] do |t, args|
57
+ ActiveRecord::Migrator.migrate('db/migrate', args.version.to_i ? args.version.to_i : nil)
58
+ end
59
+
60
+ desc "Help"
61
+ task :help do
62
+ puts "Available tasks are:\n"
63
+ puts `rake --tasks`
64
+ end
65
+ task :default => :help
@@ -0,0 +1,5 @@
1
+ adapter: "postgresql"
2
+ host: "localhost"
3
+ username: "postgres"
4
+ password: "postgres"
5
+ database: "test"
@@ -0,0 +1,5 @@
1
+ require 'pg'
2
+ require 'logger'
3
+
4
+ ActiveRecord::Base.establish_connection(YAML::load(File.open('config/database.yml')))
5
+ ActiveRecord::Base.logger = Logger.new(File.open('log/db_version_manager.log', 'a'))
metadata ADDED
@@ -0,0 +1,94 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: db_version_manager
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 1
9
+ version: 0.0.1
10
+ platform: ruby
11
+ authors:
12
+ - "Margus P\xC3\xA4rt"
13
+ autorequire:
14
+ bindir: bin
15
+ cert_chain: []
16
+
17
+ date: 2012-01-20 00:00:00 +02:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
21
+ name: active_record
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ none: false
25
+ requirements:
26
+ - - ">="
27
+ - !ruby/object:Gem::Version
28
+ segments:
29
+ - 0
30
+ version: "0"
31
+ type: :runtime
32
+ version_requirements: *id001
33
+ - !ruby/object:Gem::Dependency
34
+ name: rake
35
+ prerelease: false
36
+ requirement: &id002 !ruby/object:Gem::Requirement
37
+ none: false
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ version: "0"
44
+ type: :development
45
+ version_requirements: *id002
46
+ description: Uses Rake and ActiveRecord::Migration.
47
+ email: margus@tione.eu
48
+ executables: []
49
+
50
+ extensions: []
51
+
52
+ extra_rdoc_files: []
53
+
54
+ files:
55
+ - README.rdoc
56
+ - Rakefile.rb
57
+ - config/initializer.rb
58
+ - config/database.yml
59
+ has_rdoc: true
60
+ homepage: https://github.com/tione/anchor
61
+ licenses: []
62
+
63
+ post_install_message:
64
+ rdoc_options: []
65
+
66
+ require_paths:
67
+ - lib
68
+ required_ruby_version: !ruby/object:Gem::Requirement
69
+ none: false
70
+ requirements:
71
+ - - ">="
72
+ - !ruby/object:Gem::Version
73
+ segments:
74
+ - 1
75
+ - 9
76
+ - 2
77
+ version: 1.9.2
78
+ required_rubygems_version: !ruby/object:Gem::Requirement
79
+ none: false
80
+ requirements:
81
+ - - ">="
82
+ - !ruby/object:Gem::Version
83
+ segments:
84
+ - 0
85
+ version: "0"
86
+ requirements: []
87
+
88
+ rubyforge_project:
89
+ rubygems_version: 1.3.7
90
+ signing_key:
91
+ specification_version: 3
92
+ summary: Simple way to keep track of your DB changes. Can be used with MySQL, Postgre, Oracle etc :)
93
+ test_files: []
94
+