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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 794bc618c2113fb24eaf33499b55323ebc7425f6
4
- data.tar.gz: 9eb12e1cef212d3d532b35829bd4114f7f4b1611
3
+ metadata.gz: e5fd309a1776a81932593b18de4367bfb11a404d
4
+ data.tar.gz: 093984983555acb5bbfdb75965f30764430721ab
5
5
  SHA512:
6
- metadata.gz: 3b00f8e1c87e437aece432eecf274846293a5c5b70ed04702737a8bae8ff8b8049230cf8fac657acfa78254672109e33d6b7f0b92c6177c90c7b9bdc6bb077a3
7
- data.tar.gz: 901c925cfabb113446def2523c338a0daf78c2a272dc4881aff76777d72c5e3dd78e09174c943bb03680a276db4fbbb1e84b712ec87d97ed66516ec28b9bb646
6
+ metadata.gz: 1902a3cfcfe2aaf6581df862b116f59d93c1a30ef1b71f2a8d8a407c6ec3c95397078d9784730cdebe03715170c64e75ce9bd1cab46149e93541983343e8203a
7
+ data.tar.gz: b98ddad42f34d988fee4f6748eee83bf0aab86d8f4ba098cdbbecf2f4888d8aeb70bed0f44e0aca90871ec5850d4e7b5757dc18cdb2bd8de324d4b358fd0c18e
@@ -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
@@ -1,5 +1,6 @@
1
1
  $LOAD_PATH.unshift(__dir__) unless $LOAD_PATH.include?(__dir__)
2
2
 
3
- require "brancher/database_tasks"
3
+ require "brancher/database_configuration_renaming"
4
+ require "brancher/database_rename_service"
4
5
  require "brancher/railtie"
5
6
  require "brancher/version"
@@ -0,0 +1,9 @@
1
+ module Brancher
2
+ module DatabaseConfigurationRenaming
3
+ def database_configuration
4
+ configurations = super
5
+ DatabaseRenameService.rename!(configurations)
6
+ configurations
7
+ end
8
+ end
9
+ end
@@ -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
@@ -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
- current_branch_name = `git rev-parse --abbrev-ref HEAD`.chomp
9
- DatabaseTasks.rename_database(current_branch_name)
12
+ DatabaseRenameService.rename!(ActiveRecord::Base.configurations)
10
13
  end
11
14
  end
12
15
  end
@@ -1,3 +1,3 @@
1
1
  module Brancher
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
@@ -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.0
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/database_tasks.rb
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/database_tasks_spec.rb
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/database_tasks_spec.rb
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