0

プライベートベータ版の選択された個人に私のアプリケーションを公開したいと思います。私はこの仕事のためのサブドメインを作成しました:beta.company.com。Rails 3 subdomain

私のワークステーションではアプリケーションが正常に動作しますが、サーバーにプッシュするとアプリケーションは認証ページに戻ります。参考までに、私は宣言認可、authlogic、Passengerを使用しています。

routes.rbを:

#Application controller 
    match "/not_authorized", :to => "application#not_authorized", :as => :not_authorized 

    #UserSessions controller 
    match "/quit", :to => "user_sessions#destroy", :as => :quit 
    match "/authenticate", :to => "user_sessions#new", :as => :authenticate 
    resources :user_sessions, :only => :create 

    #Users controller 
    match "/enroll", :to => "users#new", :as => :enroll 

    # root url 
    root :to => "users#index" 

症状:

  • 匿名経路(例えばuser_sessions#がnot_authorized作成)アノンため予想通り働きます。拒否されたHTML パーミッションようがUserControllerの#インデックスによって

    処理:私のワークステーション

で期待どおりユーザー

  • アプリケーションは、私がproduction.logを見てみると、私のようなエントリを参照して動作します。 #@role_symbols = [:guest]>(roles [:guest]、privileges [:index、:read、:manage]、context:users)のインデックスに一致するルールは見つかりませんでした。 1についてはhttp://beta.company.com/authenticate

    **編集**

    にリダイレクト は、がUserController#インデックスアクションはありません、とあった場合、匿名ユーザーはそれにアクセスすることができません。私はなぜそれが(成功した認証の後に行くべきであるルートurlの代わりに)そこにルーティングしようとしているのか混乱しています。

    これはサブドメイン固有のルーティングの問題のようですが、わかりません。

    この「エラー」をもっと詳しく読んでください。 UserController#indexアクションがあり、匿名ユーザーはアクセスできません。一見すると、存在しないアクションであるUserSessionController#indexを読み込んだと思った。

    認証されたユーザーが作成または保存されていないため、UserSession#new action(AKA authenticate path)に再ルーティングされているようです。

    ** /編集**

    **編集II **

    私はactive_record_storeするcookie_storeから変更:

    # cookie store 
    # MyApp::Application.config.session_store :cookie_store, :key => '_myApp_session' 
    # active-record store 
    MyApp::Application.config.session_store :active_record_store 
    

    は、テーブルを追加しました($すくいデシベル:セッション:作成) ($ rake db:migrate)、Apache($ touch tmp/restart.txt)を再起動し、ブラウザのキャッシュをクリアしてブラウザを再起動しました。

    セッションはセッションテーブルに正常に追加されましたが、まだ問題が発生します。

    ** /編集II **

    非常に感謝しています。1については

    手始めに
  • 答えて

    0

    問題はコントローラのSELECT文に関連していました。 SELECT文 "SELECT Users。*"のテーブル名の大文字と小文字の区別は、エラーを引き起こしていました。なんらかの理由で、このエラーはproduction.logファイルには含まれていませんでした。その後の展開では、Capistranoを使用せず、このエラーをproduction.logファイルに含めることができるようにしました。

    は今、私はちょうど「何かが」だったことを...

    0

    ...

    、がUserController#インデックスアクションはありません、とあった場合、匿名ユーザーはそれにアクセスすることができません。私はなぜそれが(成功した認証の後に行くべきであるルートurlの代わりに)そこにルーティングしようとしているのか混乱しています。

    # root url 
    root :to => "users#index" 
    

    チェックを使用すると、ベータ版のドメインにCookieを設定していることを確認する:

    あなたのルートURLはがUserController#インデックスです。リダイレクトするか、完全なURL(パスだけでなくuser_url(@user)user_path(@user))を使用するリンクを設定すると、ルートドメインに対してまっすぐ進むことができます。

    +0

    私は密接に十分なログを読んでいないと思いますかを判断することができれば - ポストを編集しました。ベータドメインにCookieを設定するにはどうすればよいですか(私が今行っていることとは異なる必要があります)認証が成功すると、 'root_url'にルーティングされます。代わりにusers_pathにルーティングすることをお勧めしますか? – craig

    +0

    は、session_store.rbをMyApp :: Application.config.session_store:cookie_store、:key => '_MyApp_session'、:domain =>:allに設定しました。変化なし。 – craig