sequel-rake 0.0.1 → 0.1.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: 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