rack-app-sequel 0.3.0 → 0.4.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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 23af9cd20adf68714349c3f34bc69b70a5674775
4
- data.tar.gz: 9737aa5b69ac905706180b01ee050db873344cec
3
+ metadata.gz: 914f7c22acd4f1ce23ba7f19fb6954cd8af04495
4
+ data.tar.gz: 5d34c4c7622b903f18c8df1b9ea23a85ea6b4a88
5
5
  SHA512:
6
- metadata.gz: 7028d06a03ead126f90eb6c807b284d18537a051ee02503628c5dbfcd20e04ff52a715724d6070a2c27aa9f8d159ce088806d1a28454fcc4d7308d93f90cbbcb
7
- data.tar.gz: f09b34648c93c5e3178ba23ef08c7af7c3b5652c61d07ee46d6e35154283fdc72b0cffc83c3c9663a1d57ed1e463da953c5bd42f12b2c6fb1e90f42581c33069
6
+ metadata.gz: 540109421ffb84f45c9f4578f90e35e80e66ba48b8a93227a0908604a654b61a23775006e65999509543f142a7c5c06a06c7ab6fd227428166084a5451611ed1
7
+ data.tar.gz: d56fc9162254defaa5a1a68d9927442040852b62e7f1116d0e7d4d5a08dc61686c246473589f9b27e70996035e6f6f6d18d5e2929c27760edc3b04cfd94db610
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.4.0
@@ -3,6 +3,7 @@ require 'rack/app'
3
3
  module Rack::App::SeQueL
4
4
 
5
5
  require 'rack/app/sequel/ext'
6
+ require 'rack/app/sequel/runner'
6
7
  require 'rack/app/sequel/version'
7
8
  require 'rack/app/sequel/migration'
8
9
 
@@ -1,74 +1,7 @@
1
1
  Rack::App::SeQueL::Migration::CLI = lambda do
2
+ Dir.glob(File.join(File.dirname(__FILE__), 'cli', '*.rb')).each do |file_path|
3
+ next if File.directory?(file_path)
2
4
 
3
- command "db:migrate" do
4
- description 'Run migrations'
5
-
6
- option '-v', '--version [TIMESTAMP]', 'set to what db migration version number should db to be set' do |string|
7
- options[:version] = string
8
- end
9
-
10
- option '--allow-missing-migration-files', 'In some cases, you may want to allow a migration in the database that does not exist in the filesystem' do
11
- options[:allow_missing_migration_files] = true
12
- end
13
-
14
- option '-m', '--path-to-migration-patches [DIR_PATH]', "set to check what directory should be used for db migrations (default: #{Rack::App::SeQueL::Migration::DEFAULT_DIRECTORY})" do |string|
15
- options[:migration_directory] = string
16
- end
17
-
18
- option '--verbose', 'set migration to be verbose instead of silent' do
19
- options[:verbose] = true
20
- end
21
-
22
- action do
23
-
24
- options[:migration_directory] ||= Rack::App::SeQueL::Migration::DEFAULT_DIRECTORY
25
-
26
- Sequel.extension(:migration)
27
- db = Rack::App::SeQueL.open_connection
28
- db = Sequel.connect(ENV.fetch('DATABASE_URL'))
29
-
30
- logger = Logger.new(options[:verbose] ? ::STDOUT : ::IO::NULL)
31
- db.loggers << logger
32
-
33
- migration_config = {}
34
- if options[:allow_missing_migration_files]
35
- migration_config[:allow_missing_migration_files]= true
36
- end
37
-
38
- if options[:version]
39
- logger.info("Migrating to version #{options[:version]}")
40
-
41
- migration_config[:target]= options[:version].to_i
42
- end
43
-
44
- Sequel::Migrator.run(db, options[:migration_directory], migration_config)
45
-
46
- logger.info('Migration completed')
47
- end
48
-
49
- end
50
-
51
- command "db:migration:create" do
52
- description 'create migration patch'
53
-
54
- option '-m', '--path-to-migration-patches [DIR_PATH]', "set to check what directory should be used for db migrations (default: #{Rack::App::SeQueL::Migration::DEFAULT_DIRECTORY})" do |string|
55
- options[:migration_directory] = string
56
- end
57
-
58
- action do |*name_parts|
59
- options[:migration_directory] ||= Rack::App::SeQueL::Migration::DEFAULT_DIRECTORY
60
- name = name_parts.join('_')
61
-
62
- require 'fileutils'
63
- FileUtils.mkdir_p(options[:migration_directory])
64
- timestamp = Time.now.to_i
65
- filebasename = [timestamp.to_s, name].join('_') + '.rb'
66
- file_path = File.join(options[:migration_directory], filebasename)
67
- File.write(file_path, Rack::App::SeQueL::Migration::TEMPLATE)
68
-
69
- STDOUT.puts(file_path)
70
- end
71
-
72
- end
73
-
5
+ instance_eval(File.read(file_path))
6
+ end
74
7
  end
@@ -0,0 +1,10 @@
1
+ command 'db:migrate' do
2
+
3
+ description 'Migrates the supplied database using the migration files in the specified directory'
4
+ Rack::App::SeQueL::Runner.setup_command(self)
5
+
6
+ action do
7
+ exit(Rack::App::SeQueL::Runner.new(options, migration_config).run)
8
+ end
9
+
10
+ end
@@ -0,0 +1,9 @@
1
+ # command 'db:rollback' do
2
+ # description "Perform rollback to specified target or full rollback as default"
3
+ # Rack::App::SeQueL::Runner.setup_command(self)
4
+
5
+ # action do
6
+ # exit(Rack::App::SeQueL::Runner.new(options, migration_config).run)
7
+ # end
8
+
9
+ # end
@@ -0,0 +1,21 @@
1
+ command 'db:migration:create' do
2
+ description 'create migration patch'
3
+
4
+ option '-m', '--path-to-migration-patches [DIR_PATH]', "set to check what directory should be used for db migrations (default: #{Rack::App::SeQueL::Migration::DEFAULT_DIRECTORY})" do |string|
5
+ options[:migration_directory] = string
6
+ end
7
+
8
+ action do |*name_parts|
9
+ options[:migration_directory] ||= Rack::App::SeQueL::Migration::DEFAULT_DIRECTORY
10
+ name = name_parts.join('_')
11
+
12
+ require 'fileutils'
13
+ FileUtils.mkdir_p(options[:migration_directory])
14
+ timestamp = Time.now.to_i
15
+ filebasename = [timestamp.to_s, name].join('_') + '.rb'
16
+ file_path = File.join(options[:migration_directory], filebasename)
17
+ File.write(file_path, Rack::App::SeQueL::Migration::TEMPLATE)
18
+
19
+ STDOUT.puts(file_path)
20
+ end
21
+ end
@@ -0,0 +1,15 @@
1
+ # command 'db:schema:version' do
2
+ # description 'prints current schema version'
3
+
4
+ # action do
5
+ # Sequel.extension(:migration)
6
+ # db = Rack::App::SeQueL.open_connection
7
+ # db = Sequel.connect(ENV.fetch('DATABASE_URL'))
8
+
9
+ # version = if db.tables.include?(:schema_info)
10
+ # db[:schema_info].first[:version]
11
+ # end || 0
12
+
13
+ # STDOUT.puts("Schema Version: #{version}")
14
+ # end
15
+ # end
@@ -0,0 +1,79 @@
1
+ class Rack::App::SeQueL::Runner
2
+
3
+ def self.setup_command(command)
4
+ command.class_eval do
5
+
6
+ option '-a', '--allow_missing_migration_files', 'In some cases, you may want to allow a migration in the database that does not exist in the filesystem' do
7
+ migration_config[:allow_missing_migration_files] = true
8
+ end
9
+
10
+ option '-c', '--current [CURRENT_VERION]', 'Set the current version of the database for the execution' do |current_database_version|
11
+ migration_config[:current] = current_database_version
12
+ end
13
+
14
+ # option '-r', '--relative [MIGRATION_COUNT]', 'Run the given number of migrations, with a positive number being migrations to migrate up, and a negative number being migrations to migrate down (IntegerMigrator only).' do |value|
15
+ # migration_config[:relative] = value.to_i
16
+ # end
17
+
18
+ option '-t', '--target [TIMESTAMP]', 'The target version to which to migrate. If not given, migrates to the maximum version.' do |target_version|
19
+ migration_config[:target] = target_version
20
+ end
21
+
22
+ option '-m', '--path-to-migration-patches [DIR_PATH]', "set to check what directory should be used for db migrations (default: #{Rack::App::SeQueL::Migration::DEFAULT_DIRECTORY})" do |new_migration_directory|
23
+ options[:migration_directory] = new_migration_directory
24
+ end
25
+
26
+ option '-v', '--verbose', 'set migration to be verbose instead of silent' do
27
+ options[:verbose] = true
28
+ end
29
+
30
+ private
31
+
32
+ def migration_config
33
+ @migration_config ||= {}
34
+ end
35
+
36
+ end
37
+ end
38
+
39
+ attr_reader :code
40
+
41
+ def initialize(options, migration_options)
42
+ @code = 0
43
+ @options = options
44
+ @migration_options = migration_options
45
+ end
46
+
47
+ def run
48
+ Sequel.extension(:migration)
49
+
50
+ Rack::App::SeQueL.open_connection do |db|
51
+ db.loggers << logger
52
+
53
+ run_migrator(db, migration_directory, migration_config)
54
+ end
55
+
56
+ return @code
57
+ end
58
+
59
+ private
60
+
61
+ def logger
62
+ @logger ||= Logger.new(@options[:verbose] ? ::STDOUT : ::IO::NULL)
63
+ end
64
+
65
+ def migration_config
66
+ @migration_config ||= {}
67
+ end
68
+
69
+ def migration_directory
70
+ @options[:migration_directory] || Rack::App::SeQueL::Migration::DEFAULT_DIRECTORY
71
+ end
72
+
73
+ def run_migrator(db, directory, config)
74
+ ::Sequel::Migrator.run(db, directory, config)
75
+ rescue => ex
76
+ logger.error(ex.message)
77
+ @code = 1
78
+ end
79
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack-app-sequel
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Adam Luzsi
@@ -91,7 +91,12 @@ files:
91
91
  - lib/rack/app/sequel/ext.rb
92
92
  - lib/rack/app/sequel/migration.rb
93
93
  - lib/rack/app/sequel/migration/cli.rb
94
+ - lib/rack/app/sequel/migration/cli/migrate.rb
95
+ - lib/rack/app/sequel/migration/cli/rollback.rb
96
+ - lib/rack/app/sequel/migration/cli/template.rb
97
+ - lib/rack/app/sequel/migration/cli/version.rb
94
98
  - lib/rack/app/sequel/migration/template.rb
99
+ - lib/rack/app/sequel/runner.rb
95
100
  - lib/rack/app/sequel/version.rb
96
101
  - rack-app-sequel.gemspec
97
102
  - script/database