branchinator 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 +7 -0
- data/README.md +41 -0
- data/lib/branchinator/branched_database.rb +30 -0
- data/lib/branchinator/constants.rb +3 -0
- data/lib/branchinator/railtie.rb +10 -0
- data/lib/branchinator/version.rb +3 -0
- data/lib/branchinator.rb +19 -0
- data/lib/tasks/db.rb +41 -0
- metadata +64 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: a0cf45cc27acc050d49ebd0664f226c6c173d071
|
4
|
+
data.tar.gz: 9bb2f0d872cdb384a209a7211214669ee19ba7e5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 68d4bea6aeef2e4fa2add8bc657e005f96e2aec5bee3bd157baa93b154a0edbfbaf7911db31071f6fbb78cc71b39ce127717bbd27a1f6fe40eb32bc2bffc0790
|
7
|
+
data.tar.gz: 78b99b7bdf77abb06020234762d0268e3d775983ecc412bb890a88eaa3753dc6c973f0c25c96318d1c5a11e4616a3aba82f5d64e7846991f1a9656fe7022d4e5
|
data/README.md
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
Branchinator
|
2
|
+
============
|
3
|
+
|
4
|
+
Database per branch so you can easily switch between database models.
|
5
|
+
|
6
|
+
# How to use
|
7
|
+
|
8
|
+
`bin/rails db:branch`
|
9
|
+
|
10
|
+
Will create a new database and load it with seed. It will create `.branchinator` with db name for each env.
|
11
|
+
|
12
|
+
`bin/rails db:unbranch`
|
13
|
+
|
14
|
+
Will remove the database and `.branchinator`
|
15
|
+
|
16
|
+
`bin/rails db:branch:reset`
|
17
|
+
|
18
|
+
Shortcut for branch remove + create.
|
19
|
+
|
20
|
+
# How to install
|
21
|
+
|
22
|
+
Put it into:
|
23
|
+
|
24
|
+
```ruby
|
25
|
+
group :development, :test do
|
26
|
+
gem 'branchinator', github: 'pawelniewie/branchinator'
|
27
|
+
end
|
28
|
+
```
|
29
|
+
|
30
|
+
In you `database.yml` put:
|
31
|
+
|
32
|
+
```yaml
|
33
|
+
development:
|
34
|
+
<<: *default
|
35
|
+
database: <%= Branchinator.database %>
|
36
|
+
|
37
|
+
test:
|
38
|
+
<<: *default
|
39
|
+
database: <%= Branchinator.database %>
|
40
|
+
```
|
41
|
+
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module Branchinator
|
2
|
+
class BranchedDatabase
|
3
|
+
def self.name(*args)
|
4
|
+
new(*args).branch_database
|
5
|
+
end
|
6
|
+
|
7
|
+
def initialize(prefix: application_name, separator: '_', env: Rails.env)
|
8
|
+
@prefix = prefix
|
9
|
+
@separator = separator
|
10
|
+
@env = env
|
11
|
+
end
|
12
|
+
|
13
|
+
def current_branch
|
14
|
+
`git branch | grep "*"`.chomp.split.last.parameterize
|
15
|
+
end
|
16
|
+
|
17
|
+
def branch_database
|
18
|
+
[@prefix, current_branch, @env].join(@separator)
|
19
|
+
end
|
20
|
+
|
21
|
+
def default_database
|
22
|
+
[@prefix, @env].join(@separator)
|
23
|
+
end
|
24
|
+
|
25
|
+
def application_name
|
26
|
+
Rails.application.class.name.split('::').first.downcase
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
data/lib/branchinator.rb
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'branchinator/railtie' if defined?(Rails)
|
2
|
+
require 'branchinator/version'
|
3
|
+
|
4
|
+
module Branchinator
|
5
|
+
|
6
|
+
def self.database()
|
7
|
+
dot_file = Rails.root.join(Branchinator::FLAG_FILE)
|
8
|
+
if dot_file.exist?
|
9
|
+
JSON.load(dot_file)[Rails.env] || self.default_database
|
10
|
+
else
|
11
|
+
self.default_database
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def self.default_database()
|
16
|
+
BranchedDatabase.new.default_database
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
data/lib/tasks/db.rb
ADDED
@@ -0,0 +1,41 @@
|
|
1
|
+
require 'branchinator/branched_database'
|
2
|
+
require 'branchinator/constants'
|
3
|
+
|
4
|
+
def create_database(env)
|
5
|
+
config = ActiveRecord::Base.configurations.values_at(env.to_s).first
|
6
|
+
config['database'] = Branchinator::BranchedDatabase.name(env: env)
|
7
|
+
|
8
|
+
ActiveRecord::Tasks::DatabaseTasks.create(config)
|
9
|
+
ActiveRecord::Base.establish_connection(env)
|
10
|
+
|
11
|
+
if env == :test
|
12
|
+
ActiveRecord::Schema.verbose = false
|
13
|
+
end
|
14
|
+
ActiveRecord::Tasks::DatabaseTasks.load_schema(config)
|
15
|
+
ActiveRecord::Tasks::DatabaseTasks.load_seed
|
16
|
+
|
17
|
+
config['database']
|
18
|
+
end
|
19
|
+
|
20
|
+
namespace :db do
|
21
|
+
desc 'Create branch specific database and load db/schema.rb'
|
22
|
+
task :branch => :environment do
|
23
|
+
env_with_database = [:development, :test].map do |env|
|
24
|
+
[env, create_database(env)]
|
25
|
+
end
|
26
|
+
|
27
|
+
File.write(Rails.root.join(Branchinator::FLAG_FILE), Hash[env_with_database].to_json)
|
28
|
+
end
|
29
|
+
|
30
|
+
desc 'Remove the branch specific database'
|
31
|
+
task :unbranch => 'branch:remove'
|
32
|
+
|
33
|
+
namespace :branch do
|
34
|
+
task :remove => :drop do
|
35
|
+
File.delete(Rails.root.join(Branchinator::FLAG_FILE))
|
36
|
+
end
|
37
|
+
|
38
|
+
desc 'Remove then Create the branch specific database'
|
39
|
+
task :reset => [:remove, :branch]
|
40
|
+
end
|
41
|
+
end
|
metadata
ADDED
@@ -0,0 +1,64 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: branchinator
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Pawel Niewiadomski
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-08-29 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
description: Rails helper that simplifies database per branch development.
|
28
|
+
email: 11110000b@gmail.com
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- README.md
|
34
|
+
- lib/branchinator.rb
|
35
|
+
- lib/branchinator/branched_database.rb
|
36
|
+
- lib/branchinator/constants.rb
|
37
|
+
- lib/branchinator/railtie.rb
|
38
|
+
- lib/branchinator/version.rb
|
39
|
+
- lib/tasks/db.rb
|
40
|
+
homepage: https://pawelniewiadomski.com
|
41
|
+
licenses:
|
42
|
+
- MIT
|
43
|
+
metadata: {}
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '2'
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
requirements: []
|
59
|
+
rubyforge_project:
|
60
|
+
rubygems_version: 2.5.1
|
61
|
+
signing_key:
|
62
|
+
specification_version: 4
|
63
|
+
summary: Helps you manage database per branch
|
64
|
+
test_files: []
|