secondbase 1.0.1 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +9 -1
- data/Appraisals +8 -1
- data/Gemfile +0 -2
- data/README.md +45 -1
- data/VERSION +1 -1
- data/gemfiles/rails40.gemfile +1 -1
- data/gemfiles/rails41.gemfile +1 -1
- data/gemfiles/rails42.gemfile +1 -1
- data/gemfiles/rails50.gemfile +8 -0
- data/lib/second_base/databases.rake +2 -8
- data/lib/second_base/databases_rails_five.rake +22 -0
- data/lib/second_base/databases_rails_four.rake +22 -0
- data/lib/second_base/on_base.rb +1 -1
- data/lib/second_base/railtie.rb +7 -0
- data/secondbase.gemspec +1 -4
- data/test/cases/dbtask_test.rb +27 -14
- data/test/cases/generator_test.rb +1 -1
- data/test/cases/on_base_test.rb +1 -1
- data/test/{dummy_app/log/.keep → cases/rake_test.rb} +0 -0
- data/test/{dummy_app → dummy_apps/rails_five}/Rakefile +0 -0
- data/test/{dummy_app → dummy_apps/rails_five}/app/controllers/application_controller.rb +0 -0
- data/test/{dummy_app → dummy_apps/rails_five}/app/helpers/application_helper.rb +0 -0
- data/test/dummy_apps/rails_five/app/models/application_record.rb +3 -0
- data/test/{dummy_app → dummy_apps/rails_five}/app/models/comment.rb +0 -0
- data/test/dummy_apps/rails_five/app/models/comment_forced.rb +6 -0
- data/test/dummy_apps/rails_five/app/models/post.rb +7 -0
- data/test/dummy_apps/rails_five/app/models/user.rb +6 -0
- data/test/{dummy_app → dummy_apps/rails_five}/bin/rails +0 -0
- data/test/dummy_apps/rails_five/config/database.yml +13 -0
- data/test/{dummy_app → dummy_apps/rails_five}/config/routes.rb +0 -0
- data/test/dummy_apps/rails_five/db/migrate/20141209165002_create_users.rb +11 -0
- data/test/dummy_apps/rails_five/db/migrate/20141214142700_create_posts.rb +12 -0
- data/test/dummy_apps/rails_five/db/secondbase/migrate/20151202075826_create_comments.rb +11 -0
- data/test/{dummy_app → dummy_apps/rails_five}/init.rb +0 -0
- data/test/{dummy_app/tmp → dummy_apps/rails_five/log}/.keep +0 -0
- data/test/dummy_apps/rails_five/tmp/.keep +0 -0
- data/test/dummy_apps/rails_four/Rakefile +2 -0
- data/test/dummy_apps/rails_four/app/controllers/application_controller.rb +7 -0
- data/test/dummy_apps/rails_four/app/helpers/application_helper.rb +3 -0
- data/test/dummy_apps/rails_four/app/models/comment.rb +6 -0
- data/test/{dummy_app → dummy_apps/rails_four}/app/models/comment_forced.rb +0 -0
- data/test/{dummy_app → dummy_apps/rails_four}/app/models/post.rb +0 -0
- data/test/{dummy_app → dummy_apps/rails_four}/app/models/user.rb +0 -0
- data/test/dummy_apps/rails_four/bin/rails +5 -0
- data/test/{dummy_app → dummy_apps/rails_four}/config/database.yml +0 -0
- data/test/dummy_apps/rails_four/config/routes.rb +3 -0
- data/test/{dummy_app → dummy_apps/rails_four}/db/migrate/20141209165002_create_users.rb +0 -0
- data/test/{dummy_app → dummy_apps/rails_four}/db/migrate/20141214142700_create_posts.rb +0 -0
- data/test/{dummy_app → dummy_apps/rails_four}/db/secondbase/migrate/20151202075826_create_comments.rb +0 -0
- data/test/dummy_apps/rails_four/init.rb +40 -0
- data/test/dummy_apps/rails_four/log/.keep +0 -0
- data/test/dummy_apps/rails_four/tmp/.keep +0 -0
- data/test/test_helper.rb +12 -2
- data/test/test_helpers/dummy_app_helpers.rb +8 -4
- metadata +76 -80
- data/Guardfile +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 957af9b02d7c9c9661dbf3068c11e3071a9f16e7
|
4
|
+
data.tar.gz: 4ff4ac5bec6b6eaee9f398e14f267b854894e954
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 157600ae2064ec41999df39dae6a01f14be0771056a1bdddd1d53f80300b8a65325552aaf49c5b95f4db7d44154806e99e0e09ec1c2f70d7eb185cc8db266271
|
7
|
+
data.tar.gz: 47a3bd10685228413f56559ce91353ef0bb10962facee6e282a3958fd661c521abce4ab953e38f205e19fea0200499365f613ae3afe4f50947f79f6557c6695b
|
data/.travis.yml
CHANGED
@@ -3,14 +3,22 @@ cache: bundler
|
|
3
3
|
rvm:
|
4
4
|
- 2.0
|
5
5
|
- 2.1
|
6
|
-
- 2.2.
|
6
|
+
- 2.2.2
|
7
|
+
- 2.3.1
|
7
8
|
gemfile:
|
8
9
|
- gemfiles/rails40.gemfile
|
9
10
|
- gemfiles/rails41.gemfile
|
10
11
|
- gemfiles/rails42.gemfile
|
12
|
+
- gemfiles/rails50.gemfile
|
11
13
|
install:
|
12
14
|
- gem install bundler
|
13
15
|
- bundle --version
|
14
16
|
- bundle install
|
15
17
|
script:
|
16
18
|
- bundle exec rake test
|
19
|
+
matrix:
|
20
|
+
exclude:
|
21
|
+
- rvm: 2.0
|
22
|
+
gemfile: gemfiles/rails50.gemfile
|
23
|
+
- rvm: 2.1
|
24
|
+
gemfile: gemfiles/rails50.gemfile
|
data/Appraisals
CHANGED
@@ -1,12 +1,19 @@
|
|
1
|
-
|
2
1
|
appraise 'rails40' do
|
3
2
|
gem 'rails', '~> 4.0.0'
|
3
|
+
gem 'mysql'
|
4
4
|
end
|
5
5
|
|
6
6
|
appraise 'rails41' do
|
7
7
|
gem 'rails', '~> 4.1.0'
|
8
|
+
gem 'mysql'
|
8
9
|
end
|
9
10
|
|
10
11
|
appraise 'rails42' do
|
11
12
|
gem 'rails', '~> 4.2.0'
|
13
|
+
gem 'mysql'
|
14
|
+
end
|
15
|
+
|
16
|
+
appraise 'rails50' do
|
17
|
+
gem 'rails', '~> 5.0.0.rc1'
|
18
|
+
gem 'mysql2'
|
12
19
|
end
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -7,7 +7,7 @@ Seamless second database integration for Rails. SecondBase provides support for
|
|
7
7
|
* [Rails Multi-Database Best Practices Roundup](http://technology.customink.com/blog/2015/06/22/rails-multi-database-best-practices-roundup/)
|
8
8
|
|
9
9
|
[![Gem Version](https://badge.fury.io/rb/secondbase.png)](http://badge.fury.io/rb/secondbase)
|
10
|
-
[![Build Status](https://
|
10
|
+
[![Build Status](https://travis-ci.org/customink/secondbase.svg?branch=master)](https://travis-ci.org/customink/secondbase)
|
11
11
|
|
12
12
|
|
13
13
|
## Usage
|
@@ -124,6 +124,50 @@ config.second_base.config_key # Default: 'secondbase'
|
|
124
124
|
* `config_key` - The key to in database.yml/configurations to search for SecondBase configs.
|
125
125
|
|
126
126
|
|
127
|
+
## Advanced Usage
|
128
|
+
|
129
|
+
#### Twelve-Factor & DATABASE_URL
|
130
|
+
|
131
|
+
We love the [Twelve Factors](http://12factor.net) principals and using tools like Dotenv with Rails. Using SecondBase does not mean you have to abandon these best practices. You will however need to take advantage of a [new feature](https://github.com/rails/rails/pull/14633) in Rails 4.1 and upward that allows database.yml configurations to leverage a `:url` key that will resolve and merge the same connection string format consumed by `DATABASE_URL`. For example:
|
132
|
+
|
133
|
+
```yaml
|
134
|
+
development:
|
135
|
+
database: encom-pg_development
|
136
|
+
url: <%= ENV.fetch('DATABASE_URL') %>
|
137
|
+
test:
|
138
|
+
database: encom-pg_test
|
139
|
+
url: <%= ENV.fetch('DATABASE_URL') %>
|
140
|
+
production:
|
141
|
+
url: <%= ENV.fetch('DATABASE_URL') %>
|
142
|
+
|
143
|
+
secondbase:
|
144
|
+
development:
|
145
|
+
database: encom-mysql_development
|
146
|
+
url: <%= ENV.fetch('DATABASE_URL_SECONDBASE') %>
|
147
|
+
test:
|
148
|
+
database: encom-mysql_test
|
149
|
+
url: <%= ENV.fetch('DATABASE_URL_SECONDBASE') %>
|
150
|
+
production:
|
151
|
+
url: <%= ENV.fetch('DATABASE_URL_SECONDBASE') %>
|
152
|
+
```
|
153
|
+
|
154
|
+
There are many ways to use Dotenv and enviornment variables. This is only one example and we hope it helps you decide on which is best for you.
|
155
|
+
|
156
|
+
#### The ActiveRecord Query Cache
|
157
|
+
|
158
|
+
Rails only knows about your base connection for the Rack-based query cache. In order to take advantage of this feature for your SecondBase, you will need to set an arround filter in your controller.
|
159
|
+
|
160
|
+
```ruby
|
161
|
+
class ApplicationController < ActionController::Base
|
162
|
+
around_filter :query_cache_secondBase
|
163
|
+
private
|
164
|
+
def query_cache_secondBase
|
165
|
+
SecondBase::Base.connection.cache { yield }
|
166
|
+
end
|
167
|
+
end
|
168
|
+
```
|
169
|
+
|
170
|
+
|
127
171
|
## Versions
|
128
172
|
|
129
173
|
The current master branch is for Rails v4.0.0 and up and. We have older work in previous v1.0 releases which partial work for Rails 3.2 or lower. These old versions are feature incomplete and are not supported.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
2.0.0
|
data/gemfiles/rails40.gemfile
CHANGED
data/gemfiles/rails41.gemfile
CHANGED
data/gemfiles/rails42.gemfile
CHANGED
@@ -17,10 +17,6 @@ namespace :db do
|
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
20
|
-
task :drop do
|
21
|
-
SecondBase.on_base { Rake::Task['db:drop'].execute }
|
22
|
-
end
|
23
|
-
|
24
20
|
namespace :purge do
|
25
21
|
task :all do
|
26
22
|
SecondBase.on_base { Rake::Task['db:purge:all'].execute }
|
@@ -41,8 +37,6 @@ namespace :db do
|
|
41
37
|
SecondBase.on_base { Rake::Task['db:migrate:redo'].execute }
|
42
38
|
end
|
43
39
|
|
44
|
-
task :reset => ['db:second_base:drop', 'db:second_base:create', 'db:second_base:migrate']
|
45
|
-
|
46
40
|
task :up => ['db:load_config'] do
|
47
41
|
SecondBase.on_base { Rake::Task['db:migrate:up'].execute }
|
48
42
|
end
|
@@ -113,8 +107,8 @@ namespace :db do
|
|
113
107
|
end
|
114
108
|
|
115
109
|
%w{
|
116
|
-
create:all create drop
|
117
|
-
migrate abort_if_pending_migrations
|
110
|
+
create:all create drop:all purge:all purge
|
111
|
+
migrate migrate:status abort_if_pending_migrations
|
118
112
|
schema:load structure:load
|
119
113
|
test:purge test:load_schema test:load_structure test:prepare
|
120
114
|
}.each do |name|
|
@@ -0,0 +1,22 @@
|
|
1
|
+
namespace :db do
|
2
|
+
namespace :second_base do
|
3
|
+
task "drop:_unsafe" do
|
4
|
+
SecondBase.on_base { Rake::Task['db:drop:_unsafe'].execute }
|
5
|
+
end
|
6
|
+
|
7
|
+
namespace :migrate do
|
8
|
+
task :reset => ['db:second_base:drop:_unsafe', 'db:second_base:create', 'db:second_base:migrate']
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
%w{
|
14
|
+
drop:_unsafe
|
15
|
+
}.each do |name|
|
16
|
+
task = Rake::Task["db:#{name}"] rescue nil
|
17
|
+
next unless task
|
18
|
+
task.enhance do
|
19
|
+
Rake::Task["db:load_config"].invoke
|
20
|
+
Rake::Task["db:second_base:#{name}"].invoke
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
namespace :db do
|
2
|
+
namespace :second_base do
|
3
|
+
task :drop do
|
4
|
+
SecondBase.on_base { Rake::Task['db:drop'].execute }
|
5
|
+
end
|
6
|
+
|
7
|
+
namespace :migrate do
|
8
|
+
task :reset => ['db:second_base:drop', 'db:second_base:create', 'db:second_base:migrate']
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
%w{
|
14
|
+
drop
|
15
|
+
}.each do |name|
|
16
|
+
task = Rake::Task["db:#{name}"] rescue nil
|
17
|
+
next unless task
|
18
|
+
task.enhance do
|
19
|
+
Rake::Task["db:load_config"].invoke
|
20
|
+
Rake::Task["db:second_base:#{name}"].invoke
|
21
|
+
end
|
22
|
+
end
|
data/lib/second_base/on_base.rb
CHANGED
@@ -16,7 +16,7 @@ module SecondBase
|
|
16
16
|
ActiveRecord::Tasks::DatabaseTasks.current_config = config
|
17
17
|
ActiveRecord::Base.configurations = original_configurations[Railtie.config_key]
|
18
18
|
ActiveRecord::Base.establish_connection(config)
|
19
|
-
ActiveRecord::Tasks::DatabaseTasks.migrations_paths = SecondBase::Railtie.fullpath('migrate')
|
19
|
+
ActiveRecord::Tasks::DatabaseTasks.migrations_paths = [SecondBase::Railtie.fullpath('migrate')]
|
20
20
|
ActiveRecord::Tasks::DatabaseTasks.db_dir = SecondBase::Railtie.fullpath
|
21
21
|
ActiveRecord::Migrator.migrations_paths = ActiveRecord::Tasks::DatabaseTasks.migrations_paths
|
22
22
|
self.is_on_base = true
|
data/lib/second_base/railtie.rb
CHANGED
data/secondbase.gemspec
CHANGED
@@ -16,11 +16,8 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.require_paths = ['lib']
|
17
17
|
s.rdoc_options = ['--charset=UTF-8']
|
18
18
|
s.license = 'MIT'
|
19
|
-
s.add_runtime_dependency 'rails', '
|
19
|
+
s.add_runtime_dependency 'rails', '>= 4.0'
|
20
20
|
s.add_development_dependency 'appraisal'
|
21
|
-
s.add_development_dependency 'guard'
|
22
|
-
s.add_development_dependency 'guard-minitest'
|
23
|
-
s.add_development_dependency 'mysql'
|
24
21
|
s.add_development_dependency 'pry'
|
25
22
|
s.add_development_dependency 'rake'
|
26
23
|
s.add_development_dependency 'sqlite3'
|
data/test/cases/dbtask_test.rb
CHANGED
@@ -43,8 +43,7 @@ class DbTaskTest < SecondBase::TestCase
|
|
43
43
|
assert_dummy_databases
|
44
44
|
run_db 'purge:all'
|
45
45
|
establish_connection
|
46
|
-
|
47
|
-
assert_equal [], SecondBase::Base.connection.tables
|
46
|
+
assert_no_tables
|
48
47
|
end
|
49
48
|
|
50
49
|
def test_db_purge
|
@@ -54,8 +53,7 @@ class DbTaskTest < SecondBase::TestCase
|
|
54
53
|
assert_dummy_databases
|
55
54
|
run_db :purge
|
56
55
|
establish_connection
|
57
|
-
|
58
|
-
assert_equal [], SecondBase::Base.connection.tables
|
56
|
+
assert_no_tables
|
59
57
|
end
|
60
58
|
|
61
59
|
def test_db_migrate
|
@@ -80,12 +78,12 @@ class DbTaskTest < SecondBase::TestCase
|
|
80
78
|
def test_secondbase_migrate_updown
|
81
79
|
run_db :create
|
82
80
|
run_db :migrate
|
83
|
-
assert_match
|
81
|
+
assert_match(/no migration.*20151202075826/i, run_db('migrate:down VERSION=20151202075826', :stderr))
|
84
82
|
run_secondbase 'migrate:down VERSION=20151202075826'
|
85
83
|
secondbase_schema = File.read(dummy_secondbase_schema)
|
86
84
|
refute_match %r{version: 20151202075826}, secondbase_schema
|
87
85
|
refute_match %r{create_table "comments"}, secondbase_schema
|
88
|
-
assert_match
|
86
|
+
assert_match(/no migration.*20151202075826/i, run_db('migrate:up VERSION=20151202075826', :stderr))
|
89
87
|
run_secondbase 'migrate:up VERSION=20151202075826'
|
90
88
|
secondbase_schema = File.read(dummy_secondbase_schema)
|
91
89
|
assert_match %r{version: 20151202075826}, secondbase_schema
|
@@ -164,8 +162,7 @@ class DbTaskTest < SecondBase::TestCase
|
|
164
162
|
assert_dummy_databases
|
165
163
|
run_db 'test:purge'
|
166
164
|
establish_connection
|
167
|
-
|
168
|
-
assert_equal [], SecondBase::Base.connection.tables
|
165
|
+
assert_no_tables
|
169
166
|
end
|
170
167
|
|
171
168
|
def test_db_test_load_schema
|
@@ -186,8 +183,8 @@ class DbTaskTest < SecondBase::TestCase
|
|
186
183
|
version = dummy_migration[:version]
|
187
184
|
capture(:stderr) do
|
188
185
|
stdout = run_db :abort_if_pending_migrations
|
189
|
-
assert_match
|
190
|
-
assert_match
|
186
|
+
assert_match(/1 pending migration/, stdout)
|
187
|
+
assert_match(/#{version}/, stdout)
|
191
188
|
end
|
192
189
|
end
|
193
190
|
|
@@ -204,18 +201,34 @@ class DbTaskTest < SecondBase::TestCase
|
|
204
201
|
|
205
202
|
def test_secondbase_version
|
206
203
|
run_db :create
|
207
|
-
assert_match
|
204
|
+
assert_match(/version: 0/, run_secondbase(:version))
|
208
205
|
run_db :migrate
|
209
|
-
assert_match
|
210
|
-
assert_match
|
206
|
+
assert_match(/version: 20141214142700/, run_db(:version))
|
207
|
+
assert_match(/version: 20151202075826/, run_secondbase(:version))
|
211
208
|
end
|
212
209
|
|
213
210
|
|
214
211
|
private
|
215
212
|
|
213
|
+
def assert_no_tables
|
214
|
+
if ActiveRecord::Base.connection.respond_to? :data_sources
|
215
|
+
assert_equal [], ActiveRecord::Base.connection.data_sources
|
216
|
+
assert_equal [], SecondBase::Base.connection.data_sources
|
217
|
+
else
|
218
|
+
assert_equal [], ActiveRecord::Base.connection.tables
|
219
|
+
assert_equal [], SecondBase::Base.connection.tables
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
216
223
|
def assert_connection_tables(model, expected_tables)
|
217
224
|
establish_connection
|
218
|
-
|
225
|
+
|
226
|
+
if ActiveRecord::Base.connection.respond_to? :data_sources
|
227
|
+
tables = model.connection.data_sources
|
228
|
+
else
|
229
|
+
tables = model.connection.tables
|
230
|
+
end
|
231
|
+
|
219
232
|
expected_tables.each do |table|
|
220
233
|
message = "Expected #{model.name} tables #{tables.inspect} to include #{table.inspect}"
|
221
234
|
assert tables.include?(table), message
|
@@ -9,7 +9,7 @@ class GeneratorTest < SecondBase::TestCase
|
|
9
9
|
|
10
10
|
def test_initialization_via_help
|
11
11
|
output = Dir.chdir(dummy_root) { `rails g -h` }
|
12
|
-
assert_match
|
12
|
+
assert_match(/second_base\:migration/, output)
|
13
13
|
end
|
14
14
|
|
15
15
|
def test_description_uses_rails_base
|
data/test/cases/on_base_test.rb
CHANGED
@@ -13,7 +13,7 @@ class OnBaseTest < SecondBase::TestCase
|
|
13
13
|
SecondBase.on_base do
|
14
14
|
assert SecondBase.is_on_base
|
15
15
|
assert_equal SecondBase::Base.connection.class, ActiveRecord::Base.connection.class
|
16
|
-
assert_equal SecondBase::Railtie.fullpath('migrate'), ActiveRecord::Tasks::DatabaseTasks.migrations_paths
|
16
|
+
assert_equal [SecondBase::Railtie.fullpath('migrate')], ActiveRecord::Tasks::DatabaseTasks.migrations_paths
|
17
17
|
assert_equal SecondBase::Railtie.fullpath, ActiveRecord::Tasks::DatabaseTasks.db_dir
|
18
18
|
end
|
19
19
|
refute SecondBase.is_on_base
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|
@@ -0,0 +1,40 @@
|
|
1
|
+
ENV['RAILS_ENV'] ||= 'test'
|
2
|
+
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../../Gemfile', __FILE__)
|
3
|
+
require 'bundler/setup'
|
4
|
+
require 'rails/all'
|
5
|
+
Bundler.require(:default, Rails.env)
|
6
|
+
|
7
|
+
module Dummy
|
8
|
+
class Application < ::Rails::Application
|
9
|
+
|
10
|
+
# Basic Engine
|
11
|
+
config.root = File.join __FILE__, '..'
|
12
|
+
config.cache_store = :memory_store
|
13
|
+
config.assets.enabled = false
|
14
|
+
config.secret_token = '012345678901234567890123456789'
|
15
|
+
config.active_support.test_order = :random
|
16
|
+
|
17
|
+
# Mimic Test Environment Config.
|
18
|
+
config.consider_all_requests_local = true
|
19
|
+
config.action_controller.perform_caching = false
|
20
|
+
config.action_dispatch.show_exceptions = false
|
21
|
+
config.action_controller.allow_forgery_protection = false
|
22
|
+
config.action_mailer.delivery_method = :test
|
23
|
+
config.active_support.deprecation = :stderr
|
24
|
+
config.allow_concurrency = true
|
25
|
+
config.cache_classes = true
|
26
|
+
config.dependency_loading = true
|
27
|
+
config.preload_frameworks = true
|
28
|
+
config.eager_load = true
|
29
|
+
config.secret_key_base = '012345678901234567890123456789'
|
30
|
+
|
31
|
+
# Keep pending test:prepare via pending migrations from running.
|
32
|
+
config.active_record.maintain_test_schema = false if ActiveRecord::Base.respond_to?(:maintain_test_schema)
|
33
|
+
|
34
|
+
config.active_record.schema_format = ENV['SCHEMA_FORMAT'] ? :sql : :ruby
|
35
|
+
|
36
|
+
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
Dummy::Application.initialize!
|
File without changes
|
File without changes
|
data/test/test_helper.rb
CHANGED
@@ -5,7 +5,13 @@ Bundler.require :default, :development
|
|
5
5
|
require 'second_base'
|
6
6
|
require 'active_support/test_case'
|
7
7
|
require 'active_support/testing/autorun'
|
8
|
-
|
8
|
+
|
9
|
+
if Rails.version.to_i == 4
|
10
|
+
require 'dummy_apps/rails_four/init'
|
11
|
+
else
|
12
|
+
require 'dummy_apps/rails_five/init'
|
13
|
+
end
|
14
|
+
|
9
15
|
require 'rails/test_help'
|
10
16
|
Dir['test/test_helpers/*.{rb}'].each { |f| require_relative "../#{f}" }
|
11
17
|
|
@@ -14,7 +20,11 @@ ActiveSupport.test_order = :random if ActiveSupport.respond_to?(:test_order)
|
|
14
20
|
module SecondBase
|
15
21
|
class TestCase < ActiveSupport::TestCase
|
16
22
|
|
17
|
-
|
23
|
+
if Rails.version.to_i == 4
|
24
|
+
self.use_transactional_fixtures = false
|
25
|
+
else
|
26
|
+
self.use_transactional_tests = false
|
27
|
+
end
|
18
28
|
|
19
29
|
include RailsVersionHelpers,
|
20
30
|
DummyAppHelpers,
|
@@ -41,7 +41,11 @@ module SecondBase
|
|
41
41
|
@dummy_migration ||= begin
|
42
42
|
vers = Time.now.utc.strftime '%Y%m%d%H%M%S'
|
43
43
|
file = dummy_root.join 'db', 'secondbase', 'migrate', "#{vers}_create_foos.rb"
|
44
|
-
|
44
|
+
if rails_50_up?
|
45
|
+
migr = %|class CreateFoos < ActiveRecord::Migration[4.2] ; def change ; create_table(:foos) ; end ; end|
|
46
|
+
else
|
47
|
+
migr = %|class CreateFoos < ActiveRecord::Migration ; def change ; create_table(:foos) ; end ; end|
|
48
|
+
end
|
45
49
|
File.open(file,'w') { |f| f.write(migr) }
|
46
50
|
{version: vers, file: file}
|
47
51
|
end
|
@@ -52,7 +56,7 @@ module SecondBase
|
|
52
56
|
FileUtils.rm_rf dummy_secondbase_schema
|
53
57
|
Dir.chdir(dummy_db) { Dir['**/structure.sql'].each { |structure| FileUtils.rm_rf(structure) } }
|
54
58
|
Dir.chdir(dummy_db) { FileUtils.rm_rf(dummy_database_sqlite) } if dummy_database_sqlite
|
55
|
-
FileUtils.rm_rf(dummy_migration[:file]) if @dummy_migration
|
59
|
+
FileUtils.rm_rf(dummy_migration[:file]) if defined?(@dummy_migration) && @dummy_migration
|
56
60
|
`mysql -uroot -e "DROP DATABASE IF EXISTS secondbase_test"`
|
57
61
|
end
|
58
62
|
|
@@ -78,12 +82,12 @@ module SecondBase
|
|
78
82
|
|
79
83
|
def assert_dummy_databases
|
80
84
|
assert_equal 'base.sqlite3', dummy_database_sqlite
|
81
|
-
assert_match
|
85
|
+
assert_match(/secondbase_test/, `mysql -uroot -e "SHOW DATABASES"`)
|
82
86
|
end
|
83
87
|
|
84
88
|
def refute_dummy_databases
|
85
89
|
assert_nil dummy_database_sqlite
|
86
|
-
refute_match
|
90
|
+
refute_match(/secondbase_test/, `mysql -uroot -e "SHOW DATABASES"`)
|
87
91
|
end
|
88
92
|
|
89
93
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: secondbase
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Karle Durante
|
@@ -10,20 +10,20 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2016-
|
13
|
+
date: 2016-05-11 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: rails
|
17
17
|
requirement: !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
- - "
|
19
|
+
- - ">="
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: '4.0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
requirements:
|
26
|
-
- - "
|
26
|
+
- - ">="
|
27
27
|
- !ruby/object:Gem::Version
|
28
28
|
version: '4.0'
|
29
29
|
- !ruby/object:Gem::Dependency
|
@@ -40,48 +40,6 @@ dependencies:
|
|
40
40
|
- - ">="
|
41
41
|
- !ruby/object:Gem::Version
|
42
42
|
version: '0'
|
43
|
-
- !ruby/object:Gem::Dependency
|
44
|
-
name: guard
|
45
|
-
requirement: !ruby/object:Gem::Requirement
|
46
|
-
requirements:
|
47
|
-
- - ">="
|
48
|
-
- !ruby/object:Gem::Version
|
49
|
-
version: '0'
|
50
|
-
type: :development
|
51
|
-
prerelease: false
|
52
|
-
version_requirements: !ruby/object:Gem::Requirement
|
53
|
-
requirements:
|
54
|
-
- - ">="
|
55
|
-
- !ruby/object:Gem::Version
|
56
|
-
version: '0'
|
57
|
-
- !ruby/object:Gem::Dependency
|
58
|
-
name: guard-minitest
|
59
|
-
requirement: !ruby/object:Gem::Requirement
|
60
|
-
requirements:
|
61
|
-
- - ">="
|
62
|
-
- !ruby/object:Gem::Version
|
63
|
-
version: '0'
|
64
|
-
type: :development
|
65
|
-
prerelease: false
|
66
|
-
version_requirements: !ruby/object:Gem::Requirement
|
67
|
-
requirements:
|
68
|
-
- - ">="
|
69
|
-
- !ruby/object:Gem::Version
|
70
|
-
version: '0'
|
71
|
-
- !ruby/object:Gem::Dependency
|
72
|
-
name: mysql
|
73
|
-
requirement: !ruby/object:Gem::Requirement
|
74
|
-
requirements:
|
75
|
-
- - ">="
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
version: '0'
|
78
|
-
type: :development
|
79
|
-
prerelease: false
|
80
|
-
version_requirements: !ruby/object:Gem::Requirement
|
81
|
-
requirements:
|
82
|
-
- - ">="
|
83
|
-
- !ruby/object:Gem::Version
|
84
|
-
version: '0'
|
85
43
|
- !ruby/object:Gem::Dependency
|
86
44
|
name: pry
|
87
45
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,7 +112,6 @@ files:
|
|
154
112
|
- Appraisals
|
155
113
|
- CHANGELOG.md
|
156
114
|
- Gemfile
|
157
|
-
- Guardfile
|
158
115
|
- LICENSE.txt
|
159
116
|
- README.md
|
160
117
|
- Rakefile
|
@@ -162,10 +119,13 @@ files:
|
|
162
119
|
- gemfiles/rails40.gemfile
|
163
120
|
- gemfiles/rails41.gemfile
|
164
121
|
- gemfiles/rails42.gemfile
|
122
|
+
- gemfiles/rails50.gemfile
|
165
123
|
- lib/rails/second_base/generators/migration_generator.rb
|
166
124
|
- lib/second_base.rb
|
167
125
|
- lib/second_base/base.rb
|
168
126
|
- lib/second_base/databases.rake
|
127
|
+
- lib/second_base/databases_rails_five.rake
|
128
|
+
- lib/second_base/databases_rails_four.rake
|
169
129
|
- lib/second_base/forced.rb
|
170
130
|
- lib/second_base/on_base.rb
|
171
131
|
- lib/second_base/railtie.rb
|
@@ -178,22 +138,40 @@ files:
|
|
178
138
|
- test/cases/generator_test.rb
|
179
139
|
- test/cases/on_base_test.rb
|
180
140
|
- test/cases/railtie_test.rb
|
181
|
-
- test/
|
182
|
-
- test/
|
183
|
-
- test/
|
184
|
-
- test/
|
185
|
-
- test/
|
186
|
-
- test/
|
187
|
-
- test/
|
188
|
-
- test/
|
189
|
-
- test/
|
190
|
-
- test/
|
191
|
-
- test/
|
192
|
-
- test/
|
193
|
-
- test/
|
194
|
-
- test/
|
195
|
-
- test/
|
196
|
-
- test/
|
141
|
+
- test/cases/rake_test.rb
|
142
|
+
- test/dummy_apps/rails_five/Rakefile
|
143
|
+
- test/dummy_apps/rails_five/app/controllers/application_controller.rb
|
144
|
+
- test/dummy_apps/rails_five/app/helpers/application_helper.rb
|
145
|
+
- test/dummy_apps/rails_five/app/models/application_record.rb
|
146
|
+
- test/dummy_apps/rails_five/app/models/comment.rb
|
147
|
+
- test/dummy_apps/rails_five/app/models/comment_forced.rb
|
148
|
+
- test/dummy_apps/rails_five/app/models/post.rb
|
149
|
+
- test/dummy_apps/rails_five/app/models/user.rb
|
150
|
+
- test/dummy_apps/rails_five/bin/rails
|
151
|
+
- test/dummy_apps/rails_five/config/database.yml
|
152
|
+
- test/dummy_apps/rails_five/config/routes.rb
|
153
|
+
- test/dummy_apps/rails_five/db/migrate/20141209165002_create_users.rb
|
154
|
+
- test/dummy_apps/rails_five/db/migrate/20141214142700_create_posts.rb
|
155
|
+
- test/dummy_apps/rails_five/db/secondbase/migrate/20151202075826_create_comments.rb
|
156
|
+
- test/dummy_apps/rails_five/init.rb
|
157
|
+
- test/dummy_apps/rails_five/log/.keep
|
158
|
+
- test/dummy_apps/rails_five/tmp/.keep
|
159
|
+
- test/dummy_apps/rails_four/Rakefile
|
160
|
+
- test/dummy_apps/rails_four/app/controllers/application_controller.rb
|
161
|
+
- test/dummy_apps/rails_four/app/helpers/application_helper.rb
|
162
|
+
- test/dummy_apps/rails_four/app/models/comment.rb
|
163
|
+
- test/dummy_apps/rails_four/app/models/comment_forced.rb
|
164
|
+
- test/dummy_apps/rails_four/app/models/post.rb
|
165
|
+
- test/dummy_apps/rails_four/app/models/user.rb
|
166
|
+
- test/dummy_apps/rails_four/bin/rails
|
167
|
+
- test/dummy_apps/rails_four/config/database.yml
|
168
|
+
- test/dummy_apps/rails_four/config/routes.rb
|
169
|
+
- test/dummy_apps/rails_four/db/migrate/20141209165002_create_users.rb
|
170
|
+
- test/dummy_apps/rails_four/db/migrate/20141214142700_create_posts.rb
|
171
|
+
- test/dummy_apps/rails_four/db/secondbase/migrate/20151202075826_create_comments.rb
|
172
|
+
- test/dummy_apps/rails_four/init.rb
|
173
|
+
- test/dummy_apps/rails_four/log/.keep
|
174
|
+
- test/dummy_apps/rails_four/tmp/.keep
|
197
175
|
- test/test_helper.rb
|
198
176
|
- test/test_helpers/dummy_app_helpers.rb
|
199
177
|
- test/test_helpers/rails_version_helpers.rb
|
@@ -219,7 +197,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
219
197
|
version: '0'
|
220
198
|
requirements: []
|
221
199
|
rubyforge_project:
|
222
|
-
rubygems_version: 2.4.
|
200
|
+
rubygems_version: 2.4.5.1
|
223
201
|
signing_key:
|
224
202
|
specification_version: 4
|
225
203
|
summary: Seamless second database integration for Rails.
|
@@ -229,22 +207,40 @@ test_files:
|
|
229
207
|
- test/cases/generator_test.rb
|
230
208
|
- test/cases/on_base_test.rb
|
231
209
|
- test/cases/railtie_test.rb
|
232
|
-
- test/
|
233
|
-
- test/
|
234
|
-
- test/
|
235
|
-
- test/
|
236
|
-
- test/
|
237
|
-
- test/
|
238
|
-
- test/
|
239
|
-
- test/
|
240
|
-
- test/
|
241
|
-
- test/
|
242
|
-
- test/
|
243
|
-
- test/
|
244
|
-
- test/
|
245
|
-
- test/
|
246
|
-
- test/
|
247
|
-
- test/
|
210
|
+
- test/cases/rake_test.rb
|
211
|
+
- test/dummy_apps/rails_five/Rakefile
|
212
|
+
- test/dummy_apps/rails_five/app/controllers/application_controller.rb
|
213
|
+
- test/dummy_apps/rails_five/app/helpers/application_helper.rb
|
214
|
+
- test/dummy_apps/rails_five/app/models/application_record.rb
|
215
|
+
- test/dummy_apps/rails_five/app/models/comment.rb
|
216
|
+
- test/dummy_apps/rails_five/app/models/comment_forced.rb
|
217
|
+
- test/dummy_apps/rails_five/app/models/post.rb
|
218
|
+
- test/dummy_apps/rails_five/app/models/user.rb
|
219
|
+
- test/dummy_apps/rails_five/bin/rails
|
220
|
+
- test/dummy_apps/rails_five/config/database.yml
|
221
|
+
- test/dummy_apps/rails_five/config/routes.rb
|
222
|
+
- test/dummy_apps/rails_five/db/migrate/20141209165002_create_users.rb
|
223
|
+
- test/dummy_apps/rails_five/db/migrate/20141214142700_create_posts.rb
|
224
|
+
- test/dummy_apps/rails_five/db/secondbase/migrate/20151202075826_create_comments.rb
|
225
|
+
- test/dummy_apps/rails_five/init.rb
|
226
|
+
- test/dummy_apps/rails_five/log/.keep
|
227
|
+
- test/dummy_apps/rails_five/tmp/.keep
|
228
|
+
- test/dummy_apps/rails_four/Rakefile
|
229
|
+
- test/dummy_apps/rails_four/app/controllers/application_controller.rb
|
230
|
+
- test/dummy_apps/rails_four/app/helpers/application_helper.rb
|
231
|
+
- test/dummy_apps/rails_four/app/models/comment.rb
|
232
|
+
- test/dummy_apps/rails_four/app/models/comment_forced.rb
|
233
|
+
- test/dummy_apps/rails_four/app/models/post.rb
|
234
|
+
- test/dummy_apps/rails_four/app/models/user.rb
|
235
|
+
- test/dummy_apps/rails_four/bin/rails
|
236
|
+
- test/dummy_apps/rails_four/config/database.yml
|
237
|
+
- test/dummy_apps/rails_four/config/routes.rb
|
238
|
+
- test/dummy_apps/rails_four/db/migrate/20141209165002_create_users.rb
|
239
|
+
- test/dummy_apps/rails_four/db/migrate/20141214142700_create_posts.rb
|
240
|
+
- test/dummy_apps/rails_four/db/secondbase/migrate/20151202075826_create_comments.rb
|
241
|
+
- test/dummy_apps/rails_four/init.rb
|
242
|
+
- test/dummy_apps/rails_four/log/.keep
|
243
|
+
- test/dummy_apps/rails_four/tmp/.keep
|
248
244
|
- test/test_helper.rb
|
249
245
|
- test/test_helpers/dummy_app_helpers.rb
|
250
246
|
- test/test_helpers/rails_version_helpers.rb
|
data/Guardfile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
clearing :on
|
2
|
-
notification :terminal_notifier if defined?(TerminalNotifier)
|
3
|
-
ignore!([
|
4
|
-
/test\/dummy_app/,
|
5
|
-
/byebug/
|
6
|
-
])
|
7
|
-
|
8
|
-
guard :minitest, {
|
9
|
-
all_on_start: true,
|
10
|
-
autorun: false,
|
11
|
-
include: ['lib', 'test'],
|
12
|
-
test_folders: ['test'],
|
13
|
-
test_file_patterns: ["*_test.rb"]
|
14
|
-
} do
|
15
|
-
watch(%r{.*}) { 'test' }
|
16
|
-
end
|