brancher 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/brancher.gemspec +2 -0
- data/lib/brancher.rb +2 -1
- data/lib/brancher/database_configuration_renaming.rb +9 -0
- data/lib/brancher/database_rename_service.rb +26 -0
- data/lib/brancher/railtie.rb +5 -2
- data/lib/brancher/version.rb +1 -1
- data/spec/brancher/database_rename_service_spec.rb +68 -0
- metadata +33 -4
- data/lib/brancher/database_tasks.rb +0 -20
- data/spec/brancher/database_tasks_spec.rb +0 -57
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e5fd309a1776a81932593b18de4367bfb11a404d
|
4
|
+
data.tar.gz: 093984983555acb5bbfdb75965f30764430721ab
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1902a3cfcfe2aaf6581df862b116f59d93c1a30ef1b71f2a8d8a407c6ec3c95397078d9784730cdebe03715170c64e75ce9bd1cab46149e93541983343e8203a
|
7
|
+
data.tar.gz: b98ddad42f34d988fee4f6748eee83bf0aab86d8f4ba098cdbbecf2f4888d8aeb70bed0f44e0aca90871ec5850d4e7b5757dc18cdb2bd8de324d4b358fd0c18e
|
data/brancher.gemspec
CHANGED
@@ -18,9 +18,11 @@ Gem::Specification.new do |spec|
|
|
18
18
|
spec.require_paths = ["lib"]
|
19
19
|
|
20
20
|
spec.add_dependency "activerecord"
|
21
|
+
spec.add_dependency "activesupport"
|
21
22
|
spec.add_dependency "railties"
|
22
23
|
|
23
24
|
spec.add_development_dependency "bundler", "~> 1.7"
|
24
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
25
26
|
spec.add_development_dependency "rspec"
|
27
|
+
spec.add_development_dependency "pry"
|
26
28
|
end
|
data/lib/brancher.rb
CHANGED
@@ -0,0 +1,26 @@
|
|
1
|
+
require "active_record"
|
2
|
+
|
3
|
+
module Brancher
|
4
|
+
module DatabaseRenameService
|
5
|
+
extend self
|
6
|
+
|
7
|
+
def rename!(configurations)
|
8
|
+
configuration = configurations[env]
|
9
|
+
database_extname = File.extname(configuration["database"])
|
10
|
+
database_name = configuration["database"].gsub(%r{#{database_extname}$}) { "" }
|
11
|
+
database_name += "_#{current_branch}"
|
12
|
+
configuration["database"] = database_name + database_extname
|
13
|
+
configurations.merge!(env => configuration)
|
14
|
+
end
|
15
|
+
|
16
|
+
private
|
17
|
+
|
18
|
+
def env
|
19
|
+
Rails.env
|
20
|
+
end
|
21
|
+
|
22
|
+
def current_branch
|
23
|
+
@current_branch ||= `git rev-parse --abbrev-ref HEAD`.chomp
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/brancher/railtie.rb
CHANGED
@@ -2,11 +2,14 @@ require "rails"
|
|
2
2
|
|
3
3
|
module Brancher
|
4
4
|
class Railtie < Rails::Railtie
|
5
|
+
initializer "brancher.rename_database", before: "active_record.initialize_database" do
|
6
|
+
Rails::Application::Configuration.send(:prepend, DatabaseConfigurationRenaming)
|
7
|
+
end
|
8
|
+
|
5
9
|
rake_tasks do
|
6
10
|
namespace :db do
|
7
11
|
task :load_config do
|
8
|
-
|
9
|
-
DatabaseTasks.rename_database(current_branch_name)
|
12
|
+
DatabaseRenameService.rename!(ActiveRecord::Base.configurations)
|
10
13
|
end
|
11
14
|
end
|
12
15
|
end
|
data/lib/brancher/version.rb
CHANGED
@@ -0,0 +1,68 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Brancher::DatabaseRenameService do
|
4
|
+
describe ".rename" do
|
5
|
+
before do
|
6
|
+
allow(Brancher::DatabaseRenameService).to receive(:current_branch)
|
7
|
+
.and_return(branch)
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:configurations) do
|
11
|
+
{
|
12
|
+
env => {
|
13
|
+
"adapter" => adapter,
|
14
|
+
"pool" => 5,
|
15
|
+
"timeout" => 5000,
|
16
|
+
"database" => database_name
|
17
|
+
}
|
18
|
+
}
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:adapter) do
|
22
|
+
"sqlite3"
|
23
|
+
end
|
24
|
+
|
25
|
+
let(:database_name) do
|
26
|
+
"db/sample_app_development.sqlite3"
|
27
|
+
end
|
28
|
+
|
29
|
+
let(:env) do
|
30
|
+
"development"
|
31
|
+
end
|
32
|
+
|
33
|
+
let(:branch) do
|
34
|
+
"master"
|
35
|
+
end
|
36
|
+
|
37
|
+
let(:new_database_name) do
|
38
|
+
"db/sample_app_development_#{branch}.sqlite3"
|
39
|
+
end
|
40
|
+
|
41
|
+
let(:new_configurations) do
|
42
|
+
configurations[env]["database"] = new_database_name
|
43
|
+
configurations
|
44
|
+
end
|
45
|
+
|
46
|
+
subject do
|
47
|
+
Brancher::DatabaseRenameService.rename!(configurations)
|
48
|
+
end
|
49
|
+
|
50
|
+
it { is_expected.to eq new_configurations }
|
51
|
+
|
52
|
+
context "when the adapter is mysql2" do
|
53
|
+
let(:adapter) do
|
54
|
+
"mysql2"
|
55
|
+
end
|
56
|
+
|
57
|
+
let(:database_name) do
|
58
|
+
"sample_app_development"
|
59
|
+
end
|
60
|
+
|
61
|
+
let(:new_database_name) do
|
62
|
+
"#{database_name}_#{branch}"
|
63
|
+
end
|
64
|
+
|
65
|
+
it { is_expected.to eq new_configurations }
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: brancher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Naoto Kaneko
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: activesupport
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: railties
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -80,6 +94,20 @@ dependencies:
|
|
80
94
|
- - ">="
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: pry
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
83
111
|
description:
|
84
112
|
email:
|
85
113
|
- naoty.k@gmail.com
|
@@ -95,10 +123,11 @@ files:
|
|
95
123
|
- Rakefile
|
96
124
|
- brancher.gemspec
|
97
125
|
- lib/brancher.rb
|
98
|
-
- lib/brancher/
|
126
|
+
- lib/brancher/database_configuration_renaming.rb
|
127
|
+
- lib/brancher/database_rename_service.rb
|
99
128
|
- lib/brancher/railtie.rb
|
100
129
|
- lib/brancher/version.rb
|
101
|
-
- spec/brancher/
|
130
|
+
- spec/brancher/database_rename_service_spec.rb
|
102
131
|
- spec/spec_helper.rb
|
103
132
|
homepage: https://github.com/naoty/brancher
|
104
133
|
licenses:
|
@@ -125,5 +154,5 @@ signing_key:
|
|
125
154
|
specification_version: 4
|
126
155
|
summary: Switching databases connected with ActiveRecord by Git branch
|
127
156
|
test_files:
|
128
|
-
- spec/brancher/
|
157
|
+
- spec/brancher/database_rename_service_spec.rb
|
129
158
|
- spec/spec_helper.rb
|
@@ -1,20 +0,0 @@
|
|
1
|
-
require "active_record"
|
2
|
-
|
3
|
-
module Brancher
|
4
|
-
module DatabaseTasks
|
5
|
-
extend self
|
6
|
-
|
7
|
-
def rename_database(branch_name)
|
8
|
-
database_extname = File.extname(current_configuration["database"])
|
9
|
-
database_name = current_configuration["database"].gsub(%r{#{database_extname}$}) { "" }
|
10
|
-
database_name += "_#{branch_name}"
|
11
|
-
current_configuration["database"] = database_name + database_extname
|
12
|
-
end
|
13
|
-
|
14
|
-
private
|
15
|
-
|
16
|
-
def current_configuration
|
17
|
-
ActiveRecord::Base.configurations[Rails.env]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
describe Brancher::DatabaseTasks do
|
4
|
-
describe ".rename_database" do
|
5
|
-
before do
|
6
|
-
allow(Brancher::DatabaseTasks).to receive(:current_configuration)
|
7
|
-
.and_return(configuration)
|
8
|
-
end
|
9
|
-
|
10
|
-
let(:configuration) do
|
11
|
-
{
|
12
|
-
adapter: adapter,
|
13
|
-
pool: 5,
|
14
|
-
timeout: 5000,
|
15
|
-
database: database_name
|
16
|
-
}
|
17
|
-
end
|
18
|
-
|
19
|
-
let(:adapter) do
|
20
|
-
"sqlite3"
|
21
|
-
end
|
22
|
-
|
23
|
-
let(:database_name) do
|
24
|
-
"db/sample_app_development.sqlite3"
|
25
|
-
end
|
26
|
-
|
27
|
-
let(:branch) do
|
28
|
-
"master"
|
29
|
-
end
|
30
|
-
|
31
|
-
let(:new_database_name) do
|
32
|
-
"db/sample_app_development_#{branch}.sqlite3"
|
33
|
-
end
|
34
|
-
|
35
|
-
subject do
|
36
|
-
Brancher::DatabaseTasks.rename_database(branch)
|
37
|
-
end
|
38
|
-
|
39
|
-
it { is_expected.to eq new_database_name }
|
40
|
-
|
41
|
-
context "when the adapter is mysql2" do
|
42
|
-
let(:adapter) do
|
43
|
-
"mysql2"
|
44
|
-
end
|
45
|
-
|
46
|
-
let(:database_name) do
|
47
|
-
"sample_app_development"
|
48
|
-
end
|
49
|
-
|
50
|
-
let(:new_database_name) do
|
51
|
-
"#{database_name}_#{branch}"
|
52
|
-
end
|
53
|
-
|
54
|
-
it { is_expected.to eq new_database_name }
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|