apartment 2.2.0 → 2.2.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
  SHA256:
3
- metadata.gz: 12cd184ff975b1b35f44289fb83ffc7a6a644035f90ea4c01fc93d249b814ef2
4
- data.tar.gz: 448a27893a2ca2564d368c1ca7140582ddcedbb3f209f07f7a8b2e148bfd252e
3
+ metadata.gz: be448dd133ac9668f7ba463444dbf7ea92c12d844b3b87a319c2b380cc26d9a6
4
+ data.tar.gz: 36ad7e20ba2897f2696262c010295a2912c52a10050445971495fc3c452afd1f
5
5
  SHA512:
6
- metadata.gz: ff5cdb7a876920cbf88f1f5d0cd9821b91de5e518a0eea3eae262552fc6ca1608227ce6f1d2d367f1dca8d97d660f081c61bf89a1ecf2709eb38f8c85582a251
7
- data.tar.gz: b84c9287ca34937c46dfb6ec9746d6eadd27e81def1f0016b37281f8007a75092d2d58a4826f94da307bf4c75caf4b0b7d0725a478b3ec70c3b92dc8c4b8f5c0
6
+ metadata.gz: f4a32ff51228ad18573838b29980fe507df2856e23b3269f9eb0be8dcddd4a3e86e08c40038e45a21d41f884fa7e1c38ae570753ba40e7e21e512bf243a047e3
7
+ data.tar.gz: 42231f505295be8cd0babe3e58252867d1a6bc59ef5df3c9eacda2a80858ba8ba3d0fa584c73883986ab136b7611a865684c50f8bd540b6acc9a2f8b37cd90de
@@ -1,12 +1,15 @@
1
+ sudo: required
1
2
  language: ruby
3
+ services:
4
+ - docker
2
5
  rvm:
6
+ - jruby-9.1.15.0
3
7
  - 2.1.9
4
8
  - 2.2.9
5
9
  - 2.3.6
6
10
  - 2.4.3
7
11
  - 2.5.0
8
12
  - ruby-head
9
- - jruby-9.1.15.0
10
13
  gemfile:
11
14
  - gemfiles/rails_4_2.gemfile
12
15
  - gemfiles/rails_5_0.gemfile
@@ -15,6 +18,9 @@ gemfile:
15
18
  - gemfiles/rails_master.gemfile
16
19
  bundler_args: --without local
17
20
  before_install:
21
+ - sudo /etc/init.d/mysql stop
22
+ - sudo /etc/init.d/postgresql stop
23
+ - docker-compose up -d
18
24
  - gem install bundler -v '> 1.5.0'
19
25
  env:
20
26
  RUBY_GC_MALLOC_LIMIT: 90000000
data/HISTORY.md CHANGED
@@ -1,3 +1,14 @@
1
+ # 2.2.1
2
+ * June 19, 2019
3
+
4
+ ## Added
5
+ - #566: IGNORE_EMPTY_TENANTS environment variable to ignore empty tenants
6
+ warning. [Pysis868]
7
+
8
+ ## Fixed
9
+ - #586: Ignore `CREATE SCHEMA public` statement in pg dump [artemave]
10
+ - #549: Fix Postgres schema creation with dump SQL [ancorcruz]
11
+
1
12
  # 2.2.0
2
13
  * April 14, 2018
3
14
 
data/README.md CHANGED
@@ -533,6 +533,31 @@ end
533
533
 
534
534
  See [apartment-sidekiq](https://github.com/influitive/apartment-sidekiq) or [apartment-activejob](https://github.com/influitive/apartment-activejob).
535
535
 
536
+ ## Callbacks
537
+
538
+ You can execute callbacks when switching between tenants or creating a new one, Apartment provides the following callbacks:
539
+
540
+ - before_create
541
+ - after_create
542
+ - before_switch
543
+ - after_switch
544
+
545
+ You can register a callback using [ActiveSupport::Callbacks](https://api.rubyonrails.org/classes/ActiveSupport/Callbacks.html) the following way:
546
+
547
+ ```ruby
548
+ require 'apartment/adapters/abstract_adapter'
549
+
550
+ module Apartment
551
+ module Adapters
552
+ class AbstractAdapter
553
+ set_callback :switch, :before do |object|
554
+ ...
555
+ end
556
+ end
557
+ end
558
+ end
559
+ ```
560
+
536
561
  ## Contributing
537
562
 
538
563
  * In both `spec/dummy/config` and `spec/config`, you will see `database.yml.sample` files
@@ -1,14 +1,33 @@
1
- version: '2'
1
+ version: '2.3'
2
2
  services:
3
3
  postgresql:
4
- image: postgres:10.3
4
+ image: postgres:9.5.12
5
5
  environment:
6
6
  POSTGRES_PASSWORD: ""
7
7
  ports:
8
8
  - "5432:5432"
9
+ healthcheck:
10
+ test: pg_isready -U postgres
11
+ start_period: 10s
12
+ interval: 10s
13
+ timeout: 30s
14
+ retries: 3
9
15
  mysql:
10
16
  image: mysql:5.7
11
17
  environment:
12
18
  MYSQL_ALLOW_EMPTY_PASSWORD: "yes"
13
19
  ports:
14
20
  - "3306:3306"
21
+ healthcheck:
22
+ test: mysqladmin -h 127.0.0.1 -uroot ping
23
+ start_period: 15s
24
+ interval: 10s
25
+ timeout: 30s
26
+ retries: 3
27
+ healthcheck:
28
+ image: busybox
29
+ depends_on:
30
+ postgresql:
31
+ condition: service_healthy
32
+ mysql:
33
+ condition: service_healthy
@@ -120,6 +120,25 @@ module Apartment
120
120
  end
121
121
  alias_method :seed, :seed_data
122
122
 
123
+ # Prepend the environment if configured and the environment isn't already there
124
+ #
125
+ # @param {String} tenant Database name
126
+ # @return {String} tenant name with Rails environment *optionally* prepended
127
+ #
128
+ def environmentify(tenant)
129
+ unless tenant.include?(Rails.env)
130
+ if Apartment.prepend_environment
131
+ "#{Rails.env}_#{tenant}"
132
+ elsif Apartment.append_environment
133
+ "#{tenant}_#{Rails.env}"
134
+ else
135
+ tenant
136
+ end
137
+ else
138
+ tenant
139
+ end
140
+ end
141
+
123
142
  protected
124
143
 
125
144
  def process_excluded_model(excluded_model)
@@ -163,25 +182,6 @@ module Apartment
163
182
  raise_connect_error!(tenant, exception)
164
183
  end
165
184
 
166
- # Prepend the environment if configured and the environment isn't already there
167
- #
168
- # @param {String} tenant Database name
169
- # @return {String} tenant name with Rails environment *optionally* prepended
170
- #
171
- def environmentify(tenant)
172
- unless tenant.include?(Rails.env)
173
- if Apartment.prepend_environment
174
- "#{Rails.env}_#{tenant}"
175
- elsif Apartment.append_environment
176
- "#{tenant}_#{Rails.env}"
177
- else
178
- tenant
179
- end
180
- else
181
- tenant
182
- end
183
- end
184
-
185
185
  # Import the database schema
186
186
  #
187
187
  def import_database_schema
@@ -110,6 +110,9 @@ module Apartment
110
110
  /SET lock_timeout/i, # new in postgresql 9.3
111
111
  /SET row_security/i, # new in postgresql 9.5
112
112
  /SET idle_in_transaction_session_timeout/i, # new in postgresql 9.6
113
+ /CREATE SCHEMA public/i,
114
+ /COMMENT ON SCHEMA public/i,
115
+
113
116
  ]
114
117
 
115
118
  def import_database_schema
@@ -204,7 +207,7 @@ module Apartment
204
207
  if Apartment.pg_excluded_names.any? { |name| match.include? name }
205
208
  match
206
209
  else
207
- match.gsub(default_tenant, %{"#{current}"})
210
+ match.gsub("#{default_tenant}.", %{"#{current}".})
208
211
  end
209
212
  end
210
213
  end
@@ -8,7 +8,7 @@ module Apartment
8
8
  extend self
9
9
  extend Forwardable
10
10
 
11
- def_delegators :adapter, :create, :drop, :switch, :switch!, :current, :each, :reset, :set_callback, :seed, :current_tenant, :default_tenant
11
+ def_delegators :adapter, :create, :drop, :switch, :switch!, :current, :each, :reset, :set_callback, :seed, :current_tenant, :default_tenant, :environmentify
12
12
 
13
13
  attr_writer :config
14
14
 
@@ -1,3 +1,3 @@
1
1
  module Apartment
2
- VERSION = "2.2.0"
2
+ VERSION = "2.2.1"
3
3
  end
@@ -130,7 +130,7 @@ apartment_namespace = namespace :apartment do
130
130
  end
131
131
 
132
132
  def warn_if_tenants_empty
133
- if tenants.empty?
133
+ if tenants.empty? && ENV['IGNORE_EMPTY_TENANTS'] != "true"
134
134
  puts <<-WARNING
135
135
  [WARNING] - The list of tenants to migrate appears to be empty. This could mean a few things:
136
136
 
@@ -9,6 +9,8 @@ connections:
9
9
  url: jdbc:postgresql://localhost:5432/apartment_postgresql_test
10
10
  timeout: 5000
11
11
  pool: 5
12
+ host: localhost
13
+ port: 5432
12
14
 
13
15
  mysql:
14
16
  adapter: mysql
@@ -19,6 +21,8 @@ connections:
19
21
  url: jdbc:mysql://localhost:3306/apartment_mysql_test
20
22
  timeout: 5000
21
23
  pool: 5
24
+ host: 127.0.0.1
25
+ port: 3306
22
26
  <% else %>
23
27
  connections:
24
28
  postgresql:
@@ -28,12 +32,16 @@ connections:
28
32
  username: postgres
29
33
  schema_search_path: public
30
34
  password:
35
+ host: localhost
36
+ port: 5432
31
37
 
32
38
  mysql:
33
39
  adapter: mysql2
34
40
  database: apartment_mysql_test
35
41
  username: root
36
42
  password:
43
+ host: 127.0.0.1
44
+ port: 3306
37
45
 
38
46
  sqlite:
39
47
  adapter: sqlite3
@@ -29,6 +29,8 @@ test:
29
29
  min_messages: WARNING
30
30
  pool: 5
31
31
  timeout: 5000
32
+ host: localhost
33
+ port: 5432
32
34
 
33
35
  development:
34
36
  adapter: postgresql
@@ -37,4 +39,6 @@ development:
37
39
  min_messages: WARNING
38
40
  pool: 5
39
41
  timeout: 5000
42
+ host: localhost
43
+ port: 5432
40
44
  <% end %>
@@ -0,0 +1,13 @@
1
+ migration_class = (ActiveRecord::VERSION::MAJOR >= 5) ? ActiveRecord::Migration[4.2] : ActiveRecord::Migration
2
+ class CreatePublicTokens < migration_class
3
+ def up
4
+ create_table :public_tokens do |t|
5
+ t.string :token
6
+ t.integer :user_id, foreign_key: true
7
+ end
8
+ end
9
+
10
+ def down
11
+ drop_table :public_tokens
12
+ end
13
+ end
@@ -1,4 +1,3 @@
1
- # encoding: UTF-8
2
1
  # This file is auto-generated from the current state of the database. Instead
3
2
  # of editing this file, please use the migrations feature of Active Record to
4
3
  # incrementally modify your database, and then regenerate this schema definition.
@@ -9,41 +8,48 @@
9
8
  # from scratch. The latter is a flawed and unsustainable approach (the more migrations
10
9
  # you'll amass, the slower it'll run and the greater likelihood for issues).
11
10
  #
12
- # It's strongly recommended to check this file into your version control system.
11
+ # It's strongly recommended that you check this file into your version control system.
13
12
 
14
- ActiveRecord::Schema.define(:version => 20111202022214) do
13
+ ActiveRecord::Schema.define(version: 2018_04_15_260934) do
15
14
 
16
- create_table "books", :force => true do |t|
17
- t.string "name"
18
- t.integer "pages"
15
+ # These are extensions that must be enabled in order to support this database
16
+ enable_extension "plpgsql"
17
+
18
+ create_table "books", force: :cascade do |t|
19
+ t.string "name"
20
+ t.integer "pages"
19
21
  t.datetime "published"
20
22
  end
21
23
 
22
- create_table "companies", :force => true do |t|
24
+ create_table "companies", force: :cascade do |t|
23
25
  t.boolean "dummy"
24
- t.string "database"
26
+ t.string "database"
25
27
  end
26
28
 
27
- create_table "delayed_jobs", :force => true do |t|
28
- t.integer "priority", :default => 0
29
- t.integer "attempts", :default => 0
30
- t.text "handler"
31
- t.text "last_error"
29
+ create_table "delayed_jobs", force: :cascade do |t|
30
+ t.integer "priority", default: 0
31
+ t.integer "attempts", default: 0
32
+ t.text "handler"
33
+ t.text "last_error"
32
34
  t.datetime "run_at"
33
35
  t.datetime "locked_at"
34
36
  t.datetime "failed_at"
35
- t.string "locked_by"
37
+ t.string "locked_by"
36
38
  t.datetime "created_at"
37
39
  t.datetime "updated_at"
38
- t.string "queue"
40
+ t.string "queue"
41
+ t.index ["priority", "run_at"], name: "delayed_jobs_priority"
39
42
  end
40
43
 
41
- add_index "delayed_jobs", ["priority", "run_at"], :name => "delayed_jobs_priority"
44
+ create_table "public_tokens", id: :serial, force: :cascade do |t|
45
+ t.string "token"
46
+ t.integer "user_id"
47
+ end
42
48
 
43
- create_table "users", :force => true do |t|
44
- t.string "name"
49
+ create_table "users", force: :cascade do |t|
50
+ t.string "name"
45
51
  t.datetime "birthdate"
46
- t.string "sex"
52
+ t.string "sex"
47
53
  end
48
54
 
49
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: apartment
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.2.0
4
+ version: 2.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Brunner
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2018-04-13 00:00:00.000000000 Z
12
+ date: 2019-06-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activerecord
@@ -272,6 +272,7 @@ files:
272
272
  - spec/dummy/config/routes.rb
273
273
  - spec/dummy/db/migrate/20110613152810_create_dummy_models.rb
274
274
  - spec/dummy/db/migrate/20111202022214_create_table_books.rb
275
+ - spec/dummy/db/migrate/20180415260934_create_public_tokens.rb
275
276
  - spec/dummy/db/schema.rb
276
277
  - spec/dummy/db/seeds.rb
277
278
  - spec/dummy/db/seeds/import.rb
@@ -359,7 +360,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
359
360
  version: '0'
360
361
  requirements: []
361
362
  rubyforge_project:
362
- rubygems_version: 2.7.6
363
+ rubygems_version: 2.7.8
363
364
  signing_key:
364
365
  specification_version: 4
365
366
  summary: A Ruby gem for managing database multitenancy
@@ -396,6 +397,7 @@ test_files:
396
397
  - spec/dummy/config/routes.rb
397
398
  - spec/dummy/db/migrate/20110613152810_create_dummy_models.rb
398
399
  - spec/dummy/db/migrate/20111202022214_create_table_books.rb
400
+ - spec/dummy/db/migrate/20180415260934_create_public_tokens.rb
399
401
  - spec/dummy/db/schema.rb
400
402
  - spec/dummy/db/seeds.rb
401
403
  - spec/dummy/db/seeds/import.rb