secondbase 1.0.1 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. checksums.yaml +4 -4
  2. data/.travis.yml +9 -1
  3. data/Appraisals +8 -1
  4. data/Gemfile +0 -2
  5. data/README.md +45 -1
  6. data/VERSION +1 -1
  7. data/gemfiles/rails40.gemfile +1 -1
  8. data/gemfiles/rails41.gemfile +1 -1
  9. data/gemfiles/rails42.gemfile +1 -1
  10. data/gemfiles/rails50.gemfile +8 -0
  11. data/lib/second_base/databases.rake +2 -8
  12. data/lib/second_base/databases_rails_five.rake +22 -0
  13. data/lib/second_base/databases_rails_four.rake +22 -0
  14. data/lib/second_base/on_base.rb +1 -1
  15. data/lib/second_base/railtie.rb +7 -0
  16. data/secondbase.gemspec +1 -4
  17. data/test/cases/dbtask_test.rb +27 -14
  18. data/test/cases/generator_test.rb +1 -1
  19. data/test/cases/on_base_test.rb +1 -1
  20. data/test/{dummy_app/log/.keep → cases/rake_test.rb} +0 -0
  21. data/test/{dummy_app → dummy_apps/rails_five}/Rakefile +0 -0
  22. data/test/{dummy_app → dummy_apps/rails_five}/app/controllers/application_controller.rb +0 -0
  23. data/test/{dummy_app → dummy_apps/rails_five}/app/helpers/application_helper.rb +0 -0
  24. data/test/dummy_apps/rails_five/app/models/application_record.rb +3 -0
  25. data/test/{dummy_app → dummy_apps/rails_five}/app/models/comment.rb +0 -0
  26. data/test/dummy_apps/rails_five/app/models/comment_forced.rb +6 -0
  27. data/test/dummy_apps/rails_five/app/models/post.rb +7 -0
  28. data/test/dummy_apps/rails_five/app/models/user.rb +6 -0
  29. data/test/{dummy_app → dummy_apps/rails_five}/bin/rails +0 -0
  30. data/test/dummy_apps/rails_five/config/database.yml +13 -0
  31. data/test/{dummy_app → dummy_apps/rails_five}/config/routes.rb +0 -0
  32. data/test/dummy_apps/rails_five/db/migrate/20141209165002_create_users.rb +11 -0
  33. data/test/dummy_apps/rails_five/db/migrate/20141214142700_create_posts.rb +12 -0
  34. data/test/dummy_apps/rails_five/db/secondbase/migrate/20151202075826_create_comments.rb +11 -0
  35. data/test/{dummy_app → dummy_apps/rails_five}/init.rb +0 -0
  36. data/test/{dummy_app/tmp → dummy_apps/rails_five/log}/.keep +0 -0
  37. data/test/dummy_apps/rails_five/tmp/.keep +0 -0
  38. data/test/dummy_apps/rails_four/Rakefile +2 -0
  39. data/test/dummy_apps/rails_four/app/controllers/application_controller.rb +7 -0
  40. data/test/dummy_apps/rails_four/app/helpers/application_helper.rb +3 -0
  41. data/test/dummy_apps/rails_four/app/models/comment.rb +6 -0
  42. data/test/{dummy_app → dummy_apps/rails_four}/app/models/comment_forced.rb +0 -0
  43. data/test/{dummy_app → dummy_apps/rails_four}/app/models/post.rb +0 -0
  44. data/test/{dummy_app → dummy_apps/rails_four}/app/models/user.rb +0 -0
  45. data/test/dummy_apps/rails_four/bin/rails +5 -0
  46. data/test/{dummy_app → dummy_apps/rails_four}/config/database.yml +0 -0
  47. data/test/dummy_apps/rails_four/config/routes.rb +3 -0
  48. data/test/{dummy_app → dummy_apps/rails_four}/db/migrate/20141209165002_create_users.rb +0 -0
  49. data/test/{dummy_app → dummy_apps/rails_four}/db/migrate/20141214142700_create_posts.rb +0 -0
  50. data/test/{dummy_app → dummy_apps/rails_four}/db/secondbase/migrate/20151202075826_create_comments.rb +0 -0
  51. data/test/dummy_apps/rails_four/init.rb +40 -0
  52. data/test/dummy_apps/rails_four/log/.keep +0 -0
  53. data/test/dummy_apps/rails_four/tmp/.keep +0 -0
  54. data/test/test_helper.rb +12 -2
  55. data/test/test_helpers/dummy_app_helpers.rb +8 -4
  56. metadata +76 -80
  57. data/Guardfile +0 -16
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ff09fb11d05a96c2248f8b9852ba2efe9318bf0b
4
- data.tar.gz: dd2a93a548ab042c322cd56f7446ba81bdcf0b3f
3
+ metadata.gz: 957af9b02d7c9c9661dbf3068c11e3071a9f16e7
4
+ data.tar.gz: 4ff4ac5bec6b6eaee9f398e14f267b854894e954
5
5
  SHA512:
6
- metadata.gz: 2196e1d015f1838741fee167a014a9ed58943a4fef9d90f0c61280bc9ede6fd284d4685a5920165977a6c9fb57f48e2b4a3e55f356549a06a5385ca70a3f2545
7
- data.tar.gz: e6d1271ff217c8f8f01e4ef1b804b08b929b6f9be894d2881bafbed14a33631dbcb44f8cad2729e57acaf263fa9a3666ea604b568dc8f1d4f3c25a73aa0f9b97
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.3
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
@@ -1,4 +1,2 @@
1
1
  source "https://rubygems.org"
2
2
  gemspec
3
-
4
- gem 'terminal-notifier-guard' if RUBY_PLATFORM =~ /darwin/
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://secure.travis-ci.org/customink/secondbase.png)](http://travis-ci.org/customink/secondbase)
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.0.1
1
+ 2.0.0
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "terminal-notifier-guard"
6
5
  gem "rails", "~> 4.0.0"
6
+ gem "mysql"
7
7
 
8
8
  gemspec :path => "../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "terminal-notifier-guard"
6
5
  gem "rails", "~> 4.1.0"
6
+ gem "mysql"
7
7
 
8
8
  gemspec :path => "../"
@@ -2,7 +2,7 @@
2
2
 
3
3
  source "https://rubygems.org"
4
4
 
5
- gem "terminal-notifier-guard"
6
5
  gem "rails", "~> 4.2.0"
6
+ gem "mysql"
7
7
 
8
8
  gemspec :path => "../"
@@ -0,0 +1,8 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "rails", "~> 5.0.0.rc1"
6
+ gem "mysql2"
7
+
8
+ gemspec :path => "../"
@@ -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 drop:all purge:all purge
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
@@ -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
@@ -12,6 +12,13 @@ module SecondBase
12
12
 
13
13
  rake_tasks do
14
14
  load 'second_base/databases.rake'
15
+
16
+ if Rails.version.to_i == 4
17
+ load 'second_base/databases_rails_four.rake'
18
+ else
19
+ load 'second_base/databases_rails_five.rake'
20
+ end
21
+
15
22
  end
16
23
 
17
24
  generators do
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', '~> 4.0'
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'
@@ -43,8 +43,7 @@ class DbTaskTest < SecondBase::TestCase
43
43
  assert_dummy_databases
44
44
  run_db 'purge:all'
45
45
  establish_connection
46
- assert_equal [], ActiveRecord::Base.connection.tables
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
- assert_equal [], ActiveRecord::Base.connection.tables
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 /no migration.*20151202075826/i, run_db('migrate:down VERSION=20151202075826', :stderr)
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 /no migration.*20151202075826/i, run_db('migrate:up VERSION=20151202075826', :stderr)
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
- assert_equal [], ActiveRecord::Base.connection.tables
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 /1 pending migration/, stdout
190
- assert_match /#{version}/, stdout
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 /version: 0/, run_secondbase(:version)
204
+ assert_match(/version: 0/, run_secondbase(:version))
208
205
  run_db :migrate
209
- assert_match /version: 20141214142700/, run_db(:version)
210
- assert_match /version: 20151202075826/, run_secondbase(:version)
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
- tables = model.connection.tables
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 /second_base\:migration/, output
12
+ assert_match(/second_base\:migration/, output)
13
13
  end
14
14
 
15
15
  def test_description_uses_rails_base
@@ -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
@@ -0,0 +1,3 @@
1
+ class ApplicationRecord < ActiveRecord::Base
2
+ self.abstract_class = true
3
+ end
@@ -0,0 +1,6 @@
1
+ class CommentForced < ApplicationRecord
2
+ self.table_name = 'comments'
3
+ belongs_to :user
4
+ end
5
+
6
+ CommentForced.extend SecondBase::Forced
@@ -0,0 +1,7 @@
1
+ class Post < ApplicationRecord
2
+
3
+ belongs_to :user
4
+ has_many :comments
5
+
6
+
7
+ end
@@ -0,0 +1,6 @@
1
+ class User < ApplicationRecord
2
+
3
+ has_many :posts
4
+
5
+
6
+ end
File without changes
@@ -0,0 +1,13 @@
1
+
2
+ test:
3
+ adapter: sqlite3
4
+ database: ./db/base.sqlite3
5
+
6
+ secondbase:
7
+
8
+ test:
9
+ adapter: mysql2
10
+ database: 'secondbase_test'
11
+ username: root
12
+ password:
13
+ host: localhost
@@ -0,0 +1,11 @@
1
+ class CreateUsers < ActiveRecord::Migration[4.2]
2
+
3
+ def change
4
+ create_table :users, force: true do |t|
5
+ t.string :name
6
+ t.string :email
7
+ t.timestamps null: false
8
+ end
9
+ end
10
+
11
+ end
@@ -0,0 +1,12 @@
1
+ class CreatePosts < ActiveRecord::Migration[4.2]
2
+
3
+ def change
4
+ create_table :posts, force: true do |t|
5
+ t.text :title
6
+ t.text :body
7
+ t.references :user, index: true
8
+ t.timestamps null: false
9
+ end
10
+ end
11
+
12
+ end
@@ -0,0 +1,11 @@
1
+ class CreateComments < ActiveRecord::Migration[4.2]
2
+
3
+ def change
4
+ create_table :comments, force: true do |t|
5
+ t.text :body
6
+ t.references :user, index: true
7
+ t.timestamps null: false
8
+ end
9
+ end
10
+
11
+ end
File without changes
File without changes
@@ -0,0 +1,2 @@
1
+ require File.expand_path '../init', __FILE__
2
+ Dummy::Application.load_tasks
@@ -0,0 +1,7 @@
1
+ class ApplicationController < ActionController::Base
2
+
3
+ def index
4
+ render :html => '<h1>Dummy::Application</h1>'.html_safe, :layout => false
5
+ end
6
+
7
+ end
@@ -0,0 +1,3 @@
1
+ module ApplicationHelper
2
+
3
+ end
@@ -0,0 +1,6 @@
1
+ class Comment < SecondBase::Base
2
+
3
+ belongs_to :user
4
+
5
+
6
+ end
@@ -0,0 +1,5 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ APP_PATH = File.expand_path('../../init', __FILE__)
4
+ require APP_PATH
5
+ require 'rails/commands'
@@ -0,0 +1,3 @@
1
+ Dummy::Application.routes.draw do
2
+ root :to => 'application#index'
3
+ end
@@ -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
- require 'dummy_app/init'
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
- self.use_transactional_fixtures = false
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
- migr = %|class CreateFoos < ActiveRecord::Migration ; def change ; create_table(:foos) ; end ; end|
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 /secondbase_test/, `mysql -uroot -e "SHOW DATABASES"`
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 /secondbase_test/, `mysql -uroot -e "SHOW DATABASES"`
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: 1.0.1
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-04-19 00:00:00.000000000 Z
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/dummy_app/Rakefile
182
- - test/dummy_app/app/controllers/application_controller.rb
183
- - test/dummy_app/app/helpers/application_helper.rb
184
- - test/dummy_app/app/models/comment.rb
185
- - test/dummy_app/app/models/comment_forced.rb
186
- - test/dummy_app/app/models/post.rb
187
- - test/dummy_app/app/models/user.rb
188
- - test/dummy_app/bin/rails
189
- - test/dummy_app/config/database.yml
190
- - test/dummy_app/config/routes.rb
191
- - test/dummy_app/db/migrate/20141209165002_create_users.rb
192
- - test/dummy_app/db/migrate/20141214142700_create_posts.rb
193
- - test/dummy_app/db/secondbase/migrate/20151202075826_create_comments.rb
194
- - test/dummy_app/init.rb
195
- - test/dummy_app/log/.keep
196
- - test/dummy_app/tmp/.keep
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.8
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/dummy_app/Rakefile
233
- - test/dummy_app/app/controllers/application_controller.rb
234
- - test/dummy_app/app/helpers/application_helper.rb
235
- - test/dummy_app/app/models/comment.rb
236
- - test/dummy_app/app/models/comment_forced.rb
237
- - test/dummy_app/app/models/post.rb
238
- - test/dummy_app/app/models/user.rb
239
- - test/dummy_app/bin/rails
240
- - test/dummy_app/config/database.yml
241
- - test/dummy_app/config/routes.rb
242
- - test/dummy_app/db/migrate/20141209165002_create_users.rb
243
- - test/dummy_app/db/migrate/20141214142700_create_posts.rb
244
- - test/dummy_app/db/secondbase/migrate/20151202075826_create_comments.rb
245
- - test/dummy_app/init.rb
246
- - test/dummy_app/log/.keep
247
- - test/dummy_app/tmp/.keep
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