2

comfortable-mexican-sofa CMSとOmniauth 0.2.6を使用したRails 3.0.9アプリケーションを統合しました。Rails3 CMS快適メキシカンソファはomniauthで不一致のルーティングを取得します

すべて動作良好なブログです。私はcms-adminにログインし、管理コンソールで作業し、投稿を作成してログオフすることができます(cms-adminには自分の認証システムがあり、私のアプリケーションとは異なります...)。私は次のエラーを取得するに

問題は、私のアプリの残りの部分は、omniauthでユーザーを認証することを、私がログオフしたときです/:

Started GET "/auth/github" for 127.0.0.1 at 2011-07-25 21:04:46 +0200 
    Processing by CmsContentController#render_html as HTML 
    Parameters: {"cms_path"=>"auth/github"} 
    SQL (0.3ms) SELECT COUNT(*) FROM "cms_sites" 
    Cms::Site Load (0.3ms) SELECT "cms_sites".* FROM "cms_sites" LIMIT 1 
Completed 500 Internal Server Error in 156ms 

NoMethodError (undefined method `gsub!' for nil:NilClass): 

私Gemfile.lockはここにある:http://pastie.org/2270005

どんな助力も大歓迎です。 Luca G. Soave

答えて

5

ルーティングの問題でした。

Omniauthが404エラーページを検出することによって動作します:

それがルート/ AUTHと一致した場合に/:プロバイダは、それは、要求は、プロバイダ

に送信キャッチ...しかしcomfortable-mexican-sofa cms(のようなrefineryおよび他のもの)は、すべての経路をキャッチしているため、omniauthが検出できる404エラーが返されませんでした。

快適・メキシカン・ソファ場合

、それは代わりに次のように行くべき正しいomniauthパスの

NoMethodError in CmsContentController#render_html 
undefined method `gsub!' for nil:NilClass 

なっ"cms_path"=>"auth/github"を通過:

Started GET "/" for 127.0.0.1 at 2011-07-25 22:27:26 +0200 
    Processing by HomeController#index as HTML 
Rendered home/index.html.haml within layouts/application (29.5ms) 
Completed 200 OK in 44ms (Views: 42.8ms | ActiveRecord: 0.0ms) 


Started GET "/auth/github" for 127.0.0.1 at 2011-07-25 22:27:35 +0200 
MONGODB gitwatch_dev['users'].find({:provider=>"github", :uid=>1573}) 


Started GET "/auth/github/callback?code=4334bab983hd5fec19dd" for 127.0.0.1 at 2011-07-25 22:27:36 +0200 
    Processing by SessionsController#create as HTML 
    Parameters: {"code"=>"4334bab983hd5fec19dd", "provider"=>"github"} 
Redirected to http://localhost:3001/ 
Completed 302 Found in 255ms 
MONGODB gitwatch_dev['users'].find({:_id=>BSON::ObjectId('4e23114b1d41c80f180005b2')}) 


Started GET "/" for 127.0.0.1 at 2011-07-25 22:27:39 +0200 
    Processing by HomeController#index as HTML 
Rendered home/index.html.haml within layouts/application (415.6ms) 
Completed 200 OK in 890ms (Views: 428.6ms | ActiveRecord: 0.0ms) 

を私の場合は解決策は次のようです次のようになります。

in app/controllers/errors_controller.rb

class ErrorsController < ApplicationController 
    def error 
    render :file => "#{Rails.root}/public/404.html", :status => 404, :layout => false 
    end 
end 

設定で/ Omniouth最後のルートの後に...下

match '/auth/:provider' => 'errors#error'

に追加routes.rbを

`match "/auth/:provider/callback" => "sessions#create"` 

おかげでFederico GonzalezへとOleg Khabarov

Iに行きますこれが他の誰かを助けることを望みます;-)

bye Luca G. Soave

関連する問題