sequel-rake 0.0.1 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7f829c0aac27e097cb60ce782c391227c5c8548d
4
- data.tar.gz: a52bdb119e6466e09a03c27886e53b319349b22d
3
+ metadata.gz: 5c87cab3732a1ecd2a079afc7428096a97d45d1a
4
+ data.tar.gz: ab876b7698e792d3b6063806a14541768fe3ed32
5
5
  SHA512:
6
- metadata.gz: 74a5d9f0eaed4f29d7f835f8dba773579f0ab86ae392ab0fd06bf2a213262451ad5f8d6382f5db73ef324933065052df846646987b0e34ddc221d3028b847753
7
- data.tar.gz: 2fb55e0d7908468b7c79b27c3c54a7cac11a67769158484cb2741c8f274e04b0cdb6a9f51e011fdb521e2d81ee8037b514461647d4620784b0daf2d92a10b4aa
6
+ metadata.gz: 33f38bf1623a696053ce84e891ad806902da2e4b8adfd292ad14f4d1de3b77ec65c42b128553e9ed593189a89d7fdae8641115ff48e83331ca3675a92c879146
7
+ data.tar.gz: 77ca6b4608f1f6ed48c769f5849a65ae24ff993ec85794fab7e1747b5d15f8a52e665db17ae4447746002c20b879bc7373b81f6766d5181c879739d36c7a1c19
data/README.md CHANGED
@@ -32,9 +32,10 @@ require 'sequel/rake'
32
32
  ```
33
33
  $ bundle exec rake ...
34
34
 
35
- sequel:generate[name] # Generate a new migration file `sequel:generate[create_books]`
36
35
  sequel:init # Creates a database.yml file
36
+ sequel:generate[name] # Generate a new migration file `sequel:generate[create_books]`
37
37
  sequel:migrate[version] # Migrate the database (you can specify the version with `db:migrate[N]`)
38
+ sequel:rollback[step] # Rollback the database N steps (you can specify the version with `db:rollback[N]`)
38
39
  sequel:remigrate # Undo all migrations and migrate again
39
40
  ```
40
41
 
@@ -42,6 +43,7 @@ sequel:remigrate # Undo all migrations and migrate again
42
43
 
43
44
  * Rollback to previous version
44
45
  * Write some tests
46
+ * Seeds
45
47
 
46
48
  ## Contributing
47
49
 
data/Rakefile CHANGED
@@ -1,8 +1,6 @@
1
1
  require 'bundler/gem_tasks'
2
2
  require 'rake/testtask'
3
3
 
4
- require 'sequel/rake'
5
-
6
4
  Rake::TestTask.new do |t|
7
5
  t.pattern = 'test/**/*_test.rb'
8
6
  t.libs.push 'test'
@@ -0,0 +1,63 @@
1
+ namespace :sequel do
2
+ require "sequel"
3
+ require "fileutils"
4
+
5
+ desc "Creates the migrations directory"
6
+ task :init do
7
+ FileUtils::mkdir_p migrations
8
+ puts "generated: #{migrations}"
9
+ end
10
+
11
+ desc "Generate a new migration file `sequel:generate[create_books]`"
12
+ task :generate, :name do |_, args|
13
+ name = args[:name]
14
+ abort("Missing migration file name") if name.nil?
15
+
16
+ content = "# frozen_string_literal: true\n\nSequel.migration do\n change do\n \n end\nend\n"
17
+ timestamp = Time.now.to_i
18
+ filename = File.join(migrations, "#{timestamp}_#{name}.rb")
19
+ File.write(filename, content)
20
+ puts "Generated: #{filename}"
21
+ end
22
+
23
+ desc "Migrate the database (you can specify the version with `db:migrate[N]`)"
24
+ task :migrate, [:version] do |task, args|
25
+ version = args[:version] ? Integer(args[:version]) : nil
26
+ migrate(version)
27
+ puts "Migration complete"
28
+ end
29
+
30
+ desc "Rollback the database N steps (you can specify the version with `db:rollback[N]`"
31
+ task :rollback, [:step] do |task, args|
32
+ step = args[:step] ? Integer(args[:step]) : 1
33
+ version = 0
34
+
35
+ if row = connection[:schema_migrations].order(Sequel.desc(:filename)).offset(step).first
36
+ version = Integer(row[:filename].match(/([\d]+)/)[0])
37
+ end
38
+
39
+ migrate(version)
40
+ puts "Rollback complete"
41
+ puts "Rolled back to version: #{version}"
42
+ end
43
+
44
+ desc "Undo all migrations and migrate again"
45
+ task :remigrate do
46
+ migrate(0)
47
+ migrate
48
+ puts "Remigration complete"
49
+ end
50
+
51
+ def migrate(version = nil)
52
+ Sequel.extension :migration
53
+ Sequel::Migrator.apply(connection, migrations, version)
54
+ end
55
+
56
+ def connection
57
+ @connection ||= Sequel.connect(Sequel::Rake.get(:connection))
58
+ end
59
+
60
+ def migrations
61
+ Sequel::Rake.get(:migrations)
62
+ end
63
+ end
data/lib/sequel/rake.rb CHANGED
@@ -1,97 +1,40 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Sequel
4
+ #
5
+ # @example
6
+ # Sequel::Rake.configure do
7
+ # set :connection, ENV["DATABASE_URL"]
8
+ # set :migrations, "#{__dir__}/lib/db/migrations"
9
+ # end
10
+ #
4
11
  module Rake
5
12
  # Current version number.
6
- VERSION = '0.0.1'
7
- end
8
- end
9
-
10
- namespace :sequel do
11
- require 'sequel'
12
- require 'fileutils'
13
- require 'yaml'
14
-
15
- desc 'Creates a database.yml file'
16
- task :init do
17
- skeleton = "#{__dir__}/database.yml"
18
-
19
- if File.directory?(path('config'))
20
- FileUtils.cp(skeleton, path('config/database.yml'))
21
- else
22
- FileUtils.cp(skeleton, path('database.yml'))
23
- end
24
-
25
- FileUtils::mkdir_p path('db/migrations')
26
- end
27
-
28
- desc 'Generate a new migration file `sequel:generate[create_books]`'
29
- task :generate, :name do |_, args|
30
- name = args[:name]
31
- abort('Missing migration file name') if name.nil?
32
-
33
- content = "# frozen_string_literal: true\n\nSequel.migration do\n change do\n \n end\nend\n"
34
- timestamp = Time.now.to_i
35
- filename = File.join(config[env]['migrations'], "#{timestamp}_#{name}.rb")
36
-
37
- File.write(filename, content)
38
- end
39
-
40
- desc 'Migrate the database (you can specify the version with `db:migrate[N]`)'
41
- task :migrate, [:version] do |task, args|
42
- version = args[:version] ? Integer(args[:version]) : nil
43
- migrate(version)
44
- end
45
-
46
- desc 'Undo all migrations and migrate again'
47
- task :remigrate do
48
- migrate(0)
49
- migrate
50
- end
51
-
52
- def migrate(version = nil)
53
- databases.each do |db|
54
- conn, opts = db
55
- Sequel.extension :migration
56
- Sequel::Migrator.apply(conn, opts['migrations'], version)
57
- end
58
- end
59
-
60
- def databases
61
- envs = []
62
- if env == 'production' || env == 'staging'
63
- envs << env
64
- else
65
- envs.concat(['development', 'test'])
66
- end
67
- envs.map { |e| [Sequel.connect(config[e]), config[env]] }
68
- end
69
-
70
- def path(path)
71
- "#{Dir.pwd}/#{path}"
72
- end
73
-
74
- def connection
75
- @connection ||= Sequel.connect(config)
76
- end
13
+ VERSION = '0.1.0'
14
+
15
+ class << self
16
+ def configuration
17
+ @configuration ||= {
18
+ connection: ENV["DATABASE_URL"],
19
+ migrations: "db/migrations"
20
+ }
21
+ end
77
22
 
78
- def config
79
- @config ||= begin
80
- filepath = path('database.yml')
23
+ def configure(&block)
24
+ instance_eval(&block)
25
+ end
81
26
 
82
- unless File.exist?(filepath)
83
- filepath = path('config/database.yml')
27
+ def set(key, value)
28
+ configuration[key] = value
29
+ end
84
30
 
85
- unless File.exist?(filepath)
86
- abort 'Missing database.yml file. Run `seqcli init` first'
87
- end
31
+ def get(key)
32
+ configuration.fetch(key)
88
33
  end
89
34
 
90
- @config = YAML.load_file(filepath)
35
+ def load!
36
+ load "#{__dir__}/rake/tasks.rake"
37
+ end
91
38
  end
92
39
  end
93
-
94
- def env
95
- ENV['RACK_ENV'] || 'development'
96
- end
97
- end
40
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sequel-rake
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tobias Sandelius
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-09-22 00:00:00.000000000 Z
11
+ date: 2016-10-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor
@@ -135,8 +135,8 @@ files:
135
135
  - LICENSE.txt
136
136
  - README.md
137
137
  - Rakefile
138
- - lib/sequel/database.yml
139
138
  - lib/sequel/rake.rb
139
+ - lib/sequel/rake/tasks.rake
140
140
  - sequel-rake.gemspec
141
141
  - test/test_helper.rb
142
142
  - test/unit/rake_test.rb
@@ -167,3 +167,4 @@ summary: Rake tasks for the Sequel gem.
167
167
  test_files:
168
168
  - test/test_helper.rb
169
169
  - test/unit/rake_test.rb
170
+ has_rdoc:
@@ -1,26 +0,0 @@
1
- defaults: &defaults
2
- migrations: db/migrations
3
- adapter: postgres
4
- max_connections: 5
5
- host: localhost
6
- user: postgres
7
-
8
- development:
9
- <<: *defaults
10
- password:
11
- database: app_development
12
-
13
- test:
14
- <<: *defaults
15
- password:
16
- database: app_test
17
-
18
- staging:
19
- <<: *defaults
20
- password:
21
- database: app_staging
22
-
23
- production:
24
- <<: *defaults
25
- password:
26
- database: app