brancher 0.1.0 → 0.1.1

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: 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