2010-05-19 95 views
9

我很難獲得與Authlogic一起使用的OpenId身份驗證。看起來問題出現在open_id_authentication插件的更改中。從我迄今爲止閱讀的內容中,需要從使用寶石切換到使用插件。Authlogic OpenID集成

這是我迄今所做獲得Authlogic,OpenID的整合工作:

  1. 刪除相關的寶石:
    • authlogic
    • authlogic - 舊
    • 機架的OpenID
    • 紅寶石-openid *
    • 安裝,配置並啓動authlogic示例應用程序(http://github.com/binarylogic/authlogic_example)--works如預期。這需要:
    • 安裝authlogic(2.1.3)gem($ sudo gem install authlogic)
    • 將依賴項(config.gem「authlogic」)添加到environment.rb文件。
    • 增加了遷移功能,爲用戶模型添加開放標識支持;跑遷移;按預期添加列
    • 對UsersController和UserSessionsController進行了更改,以使用塊來保存每個列。
    • 到新的用戶會話進行更改瀏覽支持開放ID(f.text_field:openid_identifier)
    • 安裝open_id_authentication插件($腳本/插件安裝的git://github.com/rails/open_id_authentication.git)
    • 安裝了authlogic-oid插件($ script/plugin install git://github.com/binarylogic/authlogic_openid.git)
    • 安裝了插件($ script/plugin install git://github.com/glebm/ruby (CTRL-C; $腳本/服務器)

Mogrel啓動失敗,返回以下錯誤:

/Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require': no such file to load -- rack/openid (MissingSourceFile) 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/plugins/open_id_authentication/lib/open_id_authentication.rb:3 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/plugins/open_id_authentication/init.rb:5:in `evaluate_init_rb' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:146:in `evaluate_init_rb' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/core_ext/kernel/reporting.rb:11:in `silence_warnings' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:142:in `evaluate_init_rb' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin.rb:48:in `load' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:38:in `load_plugins' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:37:in `each' 
    from ./script/../config/../vendor/rails/railties/lib/rails/plugin/loader.rb:37:in `load_plugins' 
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:348:in `load_plugins' 
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:163:in `process' 
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:113:in `send' 
    from ./script/../config/../vendor/rails/railties/lib/initializer.rb:113:in `run' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/config/environment.rb:13 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:521:in `new_constants_in' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/activesupport/lib/active_support/dependencies.rb:156:in `require' 
    from /Users/craibuc/NetBeansProjects/authlogic_example/vendor/rails/railties/lib/commands/server.rb:84 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `gem_original_require' 
    from /Library/Ruby/Site/1.8/rubygems/custom_require.rb:31:in `require' 
    from script/server:3 

我懷疑這是與機架的OpenID的寶石,但因爲它是依賴於紅寶石OpenID的寶石,它被刪除時,紅寶石openid寶石被刪除。也許這可以作爲插件安裝。

對此事的任何幫助都非常感謝 - 我正要放棄OpenId集成。

* ruby​​-openid(2.1.2)安裝在/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8。我不確定這是否會影響任何事情。無論如何,我不知道如何卸載它,或者我應該如何卸載它。

**編輯**

看來,有一些在/Library/Ruby/Gems/1.8/gems目錄寶石可能會引發一個問題:

  • authlogic- oid(1.0.4)
  • rack-openid(1.0。3)
  • 紅寶石的OpenID(2.1.7)

問題: - 爲什麼不寶石list命令可以列出這些寶石? - 爲什麼gem uninstall命令不能刪除這些寶石?

回答

0

不知道OSX上是如何工作的,但是在Linux中,如果我將gems作爲常規用戶安裝,他們會放入我的主目錄,如果我使用sudo安裝它們,它們會進入系統目錄。

我對gems也有權限問題,並且必須在我的shell中明確設置一個GEM_PATH才能讓ruby從特定位置加載gem。

  • 如果您運行sudo gem list,那些古老的寶石會出現嗎?
  • 你的主目錄中是否安裝了gems以及/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8

編輯

好吧,我會火起來的irb會議,並看看會發生什麼,當你require寶石明確。

$ irb 
> require 'authlogic' 
> require 'authlogic-oid' 
... 

編輯:

如果authlogic-oid寶石安裝,並在運行sudo gem list出現,請嘗試啓動irb爲超級用戶。如果您可以要求authlogic-oid,那麼您有權限問題:某些或全部gem文件是隻讀的根目錄。

如果這不起作用,您可能會遇到加載路徑問題 - ruby​​對於在哪裏查找已安裝的gems感到困惑。在這種情況下,您的authlogic寶石可能安裝在與您的authlogic-oid寶石不同的位置。

+0

sudo gem list沒有列舉這些寶石。 我在三個位置安裝了gem:/Library/Ruby/Gems/1.8/gems,/craibuc/.gem/ruby/1.8/gems和/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr /lib/ruby/gems/1.8/gems。 – craig 2010-05-20 02:03:20

+0

卸載gem就像刪除gem目錄一樣簡單嗎? – craig 2010-05-20 02:04:58

+0

是的,除非它的其他地方也安裝了可執行文件(例如'rails'和'haml') – nfm 2010-05-20 02:12:29

3

我剛剛在這裏也遇到了同樣的問題,但只是安裝了rack-openid gem。 我會要求他們在文檔中添加rack-openid到所需的庫

3

我經歷了和你一樣的麻煩。 也許你應該檢查了這一點,得到了一切工作:

http://github.com/shripadk/authlogic_openid_selector_example

這包括像OpenID的自動註冊一個計算器了。我已經在heroku上託管了一個示例應用程序,供您在結帳前嘗試如果您想要。