Apartment Ruby Gem:例外を捉えたいのですが -- ruby フィールド と ruby-on-rails-3 フィールド と apartment-gem フィールド 関連 問題

Apartment ruby gem : Want to Catch an exception












12
vote

問題

日本語

これを使用していますアパートメント Ruby Gem。

これをApplication.RBファイルに追加しました:

<事前> <コード> config.middleware.use 'Apartment::Elevators::Subdomain'

ブラウザのURL 'test.domain.local:3000' PostgreSQLにsub domain 'test'スキーマが存在しない場合は、このエラー

を参照してください。 <事前> <コード> Apartment::SchemaNotFound (One of the following schema(s) is invalid: test, "public")

私はこれがgemの通常の動作であることを知っていますが、この例外をキャッチして他のページにユーザーをリダイレクトしたいのですが、どうすればよいですか?

英語

I am using this apartment a ruby gem.

I have add this in application.rb file:

config.middleware.use 'Apartment::Elevators::Subdomain' 

When i try hit this in browser url 'test.domain.local:3000' where sub domain 'test' schema does not exist in PostgreSQL, i see this error

Apartment::SchemaNotFound (One of the following schema(s) is invalid: test, "public") 

I know this is normal behavior of gem but want to catch this exception and redirect user to some other page, how can i do that?

</div
        

回答リスト

16
 
vote

これは私がしたことです:

lib / rescued_apartment_middleware.rb

の下のファイルの作成 <事前> <コード> href4

とアパートの初期化ファイルに追加します。

<事前> <コード> href5

これは魅力のように機能します! (Ruby 2.1とRails 4.1でテスト済み)

 

This is what I did:

Create file under lib/rescued_apartment_middleware.rb

module RescuedApartmentMiddleware   def call(*args)     begin       super     rescue Apartment::TenantNotFound       Rails.logger.error "ERROR: Apartment Tenant not found: #{Apartment::Tenant.current.inspect}"       return [404, {"Content-Type" => "text/html"}, ["#{File.read(Rails.root.to_s + '/public/404.html')}"] ]     end   end end 

and add to your Apartment initializer file following lines:

require 'rescued_apartment_middleware'  Rails.application.config.middleware.use 'Apartment::Elevators::Subdomain' Apartment::Elevators::Subdomain.prepend RescuedApartmentMiddleware 

This works like a charm! (Tested with ruby 2.1 and Rails 4.1)

</div
 
 
 
 

関連する質問

1  新しいスキーマのためのアパートGEMでデータをシードする?  ( Seeding data with apartment gem for new schemas ) 
スコープのためにアパートの宝石を使用するマルチテナントアプリに新しいテナントをどのように種子に播種することができますか? 私はseeds.rbに次のものを追加しましたが、アパートでは機能していないようです。 <事前> <コード> tenants = Tenan...

1  マルチテナントアプリレール用のカスタムレーキタスクを実行します  ( Running custom rake task for multi tenant app rails ) 
カスタムレーキタスク <事前> <コード> namespace :abc do desc "seeds abc to a database" do task seed_abc: :environment do Tenant.fin...

3  新しいテナントを作成する代わりにschema.rbのstructure.sqlを使用してMySQL用のコンフィグアパート、宝石  ( Config apartment gem for mysql using structure sql instead of schema rb to creat ) 
私はstructure.sqlにschema.rbから変更する必要がありますので、私は自分のRailsアプリで表示SQLやストアドプロシージャを必要としています。これが私の中に設定され、<コード> config/application.rb を <事前> <コ...

1  管理者勘定からテナントアカウントを管理するための構造  ( Structure for managing tenant accounts from an admin account ) 
レール5を使用してマルチテナントWebアプリのAPIを作成しようとしています。 しかし、私は私たちがこれを行うことを可能にするアプリケーション構造を立ち向かうのに問題があります: 彼らの組織のアカウントを取得するためにユーザーが自分自身を登録することを可能...

5  Rails&Apartment:クッキーやドメインに基づくスイッチングテナント  ( Rails apartment switching tenant based on cookie or domain ) 
アパート gem and Railsを使用してマルチテナントアプリを設定しています。 4.1。 マイアプローチは、管理インターフェイスが単一のドメインでホストされてから、カスタムドメインのテナント固有のデータを提供することです。管理ユーザーは複数のテナント...

5  マルチテナントアプリのテナントのためのCSSをカスタマイズするための最良の方法?  ( Best way to customize css for tenants on a multi tenant app ) 
私は、マルチテナントアプリ(異なるPostgresのスキーマ内の各テナントの生活)を構築するためにアパートの宝石を使用しています。 テナントごとにカスタムCSSオーバーライドを定義するためのRailsでの最良の方法は何でしょうか。 ...

0  Apartment Gem - テーブルを作成しないPostgreSQL  ( Apartment gem not creating tables postgresql ) 
Rails <コード> #{item.description}1 、Postgres、<コード> #{item.description}2 gem #{item.description}3 他の20テーブルが作成されていない場合に作成された2つのテー...

1  PG :: UndefinedTable:エラー:マルチテナントレールアプリに関係はありません  ( Pgundefinedtable error relation does not exist for multitenant rails app ) 
私は他の開発者と共にレールアプリの上のマルチテナントルビーに取り組んでいます。私は彼の支店を引っ張って新しい移行ファイルを受け取りました。 RAK RAKE DB:移行。私はそのコントローラのインデックスを訪問し、未定義のエラーが発生しました。 研究後に私が...

2  コンソールに入力した後に特定のテナントを選択しますか?  ( How select specific tenant after enter on console ) 
config/initializers/console.rb で保管されているコードは、初めてI EXEC rails console CLIでのみ機能します。終了してもう一度入力すると、選択メッセージは表示されませんが、選択されたプレビューテナントが...

-1  Rails - セッション変数はアパートスイッチを永続化していません  ( Rails session variable not persisting through apartment switch ) 
状況があります。 <事前> <コード> >rails -v Rails 4.2.4 >ruby -v ruby 2.1.8p440 (2015-12-16 revision 53160) [i386-mingw32] アパートGEM を使用してマルチテ...




© 2022 cndgn.com All Rights Reserved. Q&Aハウス 全著作権所有