私はこれに対する答えを高低で検索しましたが、不足しています。
Postgres スキーマに基づいて、Rails 4、Devise、および Apartment を使用してマルチテナント アプリケーションを構築しようとしています。私のローカル Postgres サーバーには、PostgresApp を使用することにしました。Go Rails マルチテナント ガイドに従い、このエラーが表示され始めたときにそのセットアップ (テナントごとに 1 人のユーザー) が機能していました。これは昨日、Devise の Invitable 拡張機能をインストールしようとしているときにローカルで表示され始めましたが、何が起こっているのかについての手がかりが見つからないようです。
特定のエラーを取得する方法は次のとおりです。
michael$ rake environment db:drop
michael$ rake db:create
michael$ rake db:migrate
== 20160908204559 DeviseCreateUsers: migrating ================================
-- create_table(:users)
-> 0.0091s
-- add_index(:users, :email, {:unique=>true})
-> 0.0032s
-- add_index(:users, :reset_password_token, {:unique=>true})
-> 0.0031s
-- add_index(:users, :confirmation_token, {:unique=>true})
-> 0.0032s
-- add_index(:users, :unlock_token, {:unique=>true})
-> 0.0029s
== 20160908204559 DeviseCreateUsers: migrated (0.0219s) =======================
[WARNING] - The list of tenants to migrate appears to be empty. This could mean a few things:
1. You may not have created any, in which case you can ignore this message
2. You've run `apartment:migrate` directly without loading the Rails environment
* `apartment:migrate` is now deprecated. Tenants will automatically be migrated with `db:migrate`
Note that your tenants currently haven't been migrated. You'll need to run `db:migrate` to rectify this.
michael$ rake db:seed
Seeding test tenant
One of the following schema(s) is invalid: "test" "public"
ローカルでサイトにアクセスすると、Rails がスローします。
アパート::TenantNotFound
次のスキーマのいずれかが無効です: "www" "public"
ここに私の apartment.rb 初期化子があります:
require 'apartment/elevators/subdomain'
Apartment.configure do |config|
config.excluded_models = %w{ User }
config.tenant_names = lambda { User.pluck :subdomain }
config.use_schemas = true
end
Rails.application.config.middleware.use 'Apartment::Elevators::Subdomain'
ここに私のユーザー移行ファイルがあります:
class DeviseCreateUsers < ActiveRecord::Migration
def change
create_table(:users) do |t|
## Database authenticatable
t.string :email, null: false, default: ""
t.string :encrypted_password, null: false, default: ""
## Recoverable
t.string :reset_password_token
t.datetime :reset_password_sent_at
## Rememberable
t.datetime :remember_created_at
## Trackable
t.integer :sign_in_count, default: 0, null: false
t.datetime :current_sign_in_at
t.datetime :last_sign_in_at
t.string :current_sign_in_ip
t.string :last_sign_in_ip
## Confirmable
t.string :confirmation_token
t.datetime :confirmed_at
t.datetime :confirmation_sent_at
t.string :unconfirmed_email # Only if using reconfirmable
## Lockable
t.integer :failed_attempts, default: 0, null: false # Only if lock strategy is :failed_attempts
t.string :unlock_token # Only if unlock strategy is :email or :both
t.datetime :locked_at
## Invitable
#t.string :invitation_token
#t.datetime :invitation_created_at
#t.datetime :invitation_sent_at
#t.datetime :invitation_accepted_at
#t.integer :invitation_limit
#t.integer :invited_by_id
#t.string :invited_by_type
## User Info
t.string :first_name
t.string :last_name
t.string :subdomain
t.string :role
t.timestamps
end
add_index :users, :email, unique: true
add_index :users, :reset_password_token, unique: true
add_index :users, :confirmation_token, unique: true
add_index :users, :unlock_token, unique: true
#add_index :users, :invitation_token, unique: true
end
end
また、コマンド ラインでローカルの Postrgres データベースにもアクセスしました。ドロップが機能し、データベースの作成が機能しています。必要に応じてこれらを提供できます。現時点での私の推測では、Rails が PostgresApp と通信する方法、または移行を行う方法に問題があると言っています。しかし、経験豊富な誰かが、私が見逃していたことを指摘してくれるかもしれません。
だから私の質問は、これを引き起こすために私は何をしているのでしょうか? どうすれば修正できますか?また、何が問題なのかについて詳しく知るにはどうすればよいですか?