2012-02-12 57 views
6

我得到錯誤從設計「用戶不響應'設計'方法」當運行「導軌生成設計:安裝」。想法重新如何解決?從設計得到錯誤「用戶不響應'設計'方法」在運行時「rails生成設計:安裝」

事實上,當試圖運行「rails generate devise:install」時,我也注意到了這個錯誤。

注:

Gregs-MacBook-Pro:testapp greg$ rails generate devise:install 
/Library/Ruby/Gems/1.8/gems/devise-2.0.1/lib/devise/rails/routes.rb:406:in `raise_no_devise_method_error!': User does not respond to 'devise' method. This usually means you haven't loaded your ORM file or it's being loaded too late. To fix it, be sure to require 'devise/orm/YOUR_ORM' inside 'config/initializers/devise.rb' or before your application definition in 'config/application.rb' (RuntimeError) 
    from /Library/Ruby/Gems/1.8/gems/devise-2.0.1/lib/devise/rails/routes.rb:207:in `devise_for' 
    from /Library/Ruby/Gems/1.8/gems/devise-2.0.1/lib/devise/rails/routes.rb:203:in `each' 
    from /Library/Ruby/Gems/1.8/gems/devise-2.0.1/lib/devise/rails/routes.rb:203:in `devise_for' 
    from /Users/greg/source_rails/testapp/config/routes.rb:2 
    from /Library/Ruby/Gems/1.8/gems/actionpack-3.2.1/lib/action_dispatch/routing/route_set.rb:272:in `instance_exec' 
    from /Library/Ruby/Gems/1.8/gems/actionpack-3.2.1/lib/action_dispatch/routing/route_set.rb:272:in `eval_block' 
    from /Library/Ruby/Gems/1.8/gems/actionpack-3.2.1/lib/action_dispatch/routing/route_set.rb:249:in `draw' 

Gregs-MacBook-Pro:testapp greg$ ruby -v 
**ruby 1.8.7** (2010-01-10 patchlevel 249) [universal-darwin11.0] 

Gregs-MacBook-Pro:testapp greg$ rails -v 
**Rails 3.2.1** 

Gregs-MacBook-Pro:testapp greg$ gem list 

*** LOCAL GEMS *** 

actionmailer (3.2.1) 
actionpack (3.2.1) 
activemodel (3.2.1) 
activerecord (3.2.1) 
activeresource (3.2.1) 
activesupport (3.2.1) 
addressable (2.2.6) 
arel (3.0.0) 
bcrypt-ruby (3.0.1) 
builder (3.0.0) 
bundler (1.0.22) 
coffee-rails (3.2.2) 
coffee-script (2.2.0) 
coffee-script-source (1.2.0) 
devise (2.0.1) 
erubis (2.7.0) 
execjs (1.3.0) 
faraday (0.7.6) 
hike (1.2.1) 
i18n (0.6.0) 
journey (1.0.1) 
jquery-rails (2.0.0) 
json (1.6.5) 
mail (2.4.1) 
mime-types (1.17.2) 
multi_json (1.0.4) 
multipart-post (1.1.4) 
mysql (2.8.1) 
mysql2 (0.3.11) 
oauth (0.4.5) 
oauth-plugin (0.4.0.rc2) 
oauth2 (0.5.2) 
orm_adapter (0.0.6) 
polyglot (0.3.3) 
rack (1.4.1) 
rack-cache (1.1) 
rack-ssl (1.3.2) 
rack-test (0.6.1) 
rails (3.2.1) 
railties (3.2.1) 
rake (0.9.2.2) 
rdoc (3.12) 
rubygems-update (1.8.15) 
sass (3.1.15, 3.1.14) 
sass-rails (3.2.4) 
sprockets (2.1.2) 
sqlite3 (1.3.5) 
thor (0.14.6) 
tilt (1.3.3) 
treetop (1.4.10) 
tzinfo (0.3.31) 
uglifier (1.2.3) 
warden (1.1.0) 

回答

46

這聽起來像你已經有被稱爲在您的用戶模型中的色器件的方法。也許你已經跑了rails g devise User

評論出來,並註釋掉你的路線文件中的devise_for :users行,如果那是在那裏。

+0

TKS - 這似乎解決它 - 是什麼問題? - 我是否按錯誤的順序發出了命令,不知怎的,事情被塞滿了?現在我假設我必須再次取消註釋行嗎? (我上面的命令是:「rails generate devise:install」,「rails generate devise User」和「rake db:migrate」。 – Greg 2012-02-12 08:48:00

+5

@greg - 運行'rails g devise:install'將初始化程序設置爲文件'config/initializers/devise.rb'。這就是加載所有的設計方法,以便你的應用程序可以使用它們。如果你在初始化程序到位之前運行'rails g devise User',那麼你的用戶模型包含調用方法應用程序不知道,所以無論何時你運行任何rails命令,它都會失敗,因爲......你得到的錯誤。如果您嘗試運行'rails server'或'rails c'或其他任何東西,它也會失敗。 – declan 2012-02-12 22:40:11

+0

非常感謝這個 – cancelledout 2012-04-07 09:31:28

1

尖端對於來到這裏由於以下錯誤的人:

User does not respond to 'devise' method. This usually means you haven't loaded your ORM file or it's being loaded too late. To fix it, be sure to require 'devise/orm/YOUR_ORM' inside 'config/initializers/devise.rb' or before your application definition in 'config/application.rb' (RuntimeError)

但是你已經有你的ORM正確初始化,也可能是創業板有關。我在舊應用程序中遇到了同樣的問題,這是由於與active_reload寶石不兼容。 gem active_reload與Rails 3.2不兼容,應該刪除。 active_reload已被合併到Rails 3.2中,因此可以安全地刪除。

我從這裏的解決方案:http://anlek.com/2012/02/user-does-not-respond-to-devise-method/

3

完成鋼軌&這些問題的答案對我來說沒有工作的教程,但經過一番尋找找到了解決辦法。希望這可以幫助任何新的和遇到這個問題的人。

  1. 轉到:的config/routes.rb中文件
  2. 註釋掉devise_for :installs(把一個散列標籤在前面)
  3. 轉到你的Ruby終端,並重新輸入:rails generate devise:install

現在設計應該正確安裝&後續錯誤應該消失。

Source

+0

請在做這個之前備份任何配置... – simonmorley 2014-04-25 00:13:37