2017-06-02 17 views
0

私のアプリケーションの1つをhttp://localhost:3000/api/v1/oauth/applicationsから削除しようとすると、以下のエラーが表示されます。 UIからの既存のアプリケーションを「破棄」にしようとしたときNameError(初期化されていない定数Mongoid :: Relations :: Cascading :: DeleteAll):

gem 'rails', '4.2.8' 
gem 'mongoid', '~> 5.2.1' 
gem 'doorkeeper-mongodb', github: 'doorkeeper-gem/doorkeeper-mongodb' 
gem "doorkeeper-grants_assertion", github: "doorkeeper-gem/doorkeeper-grants_assertion" 

これはのみ発生:

Started DELETE "/api/v1/oauth/applications/5930bd2aa54dd321f7248178" for ::1 
at 2017-06-01 21:53:22 -0400 
Processing by Doorkeeper::ApplicationsController#destroy as HTML 
Parameters: {"utf8"=>"✓", 
"authenticity_token"=>"+IxdEDUYW65Hj99VUqdJ/rydjZjJE8CIFy7El5KuuZ0rf36wLE0M4qJxBUL61D1IeRW+VvgWw1o9ckXxpHBkVw==", "commit"=>"Destroy", "id"=>"5930bd2aa54dd321f7248178"} 
MONGODB | localhost:27017 | playco_development.find | STARTED | {"find"=>"oauth_applications", "filter"=>{"_id"=>BSON::ObjectId('5930bd2aa54dd321f7248178')}} 
MONGODB | localhost:27017 | playco_development.find | SUCCEEDED | 0.000784s 
Completed 500 Internal Server Error in 9ms 

NameError (uninitialized constant Mongoid::Relations::Cascading::DeleteAll): 
    activesupport (4.2.8) lib/active_support/inflector/methods.rb:263:in `const_get' 
    activesupport (4.2.8) lib/active_support/inflector/methods.rb:263:in `block in constantize' 
    activesupport (4.2.8) lib/active_support/inflector/methods.rb:259:in `each' 
    activesupport (4.2.8) lib/active_support/inflector/methods.rb:259:in `inject' 
    activesupport (4.2.8) lib/active_support/inflector/methods.rb:259:in `constantize' 
    activesupport (4.2.8) lib/active_support/core_ext/string/inflections.rb:66:in `constantize' 
    mongoid (5.2.1) lib/mongoid/relations/metadata.rb:98:in `cascade_strategy' 
    mongoid (5.2.1) lib/mongoid/relations/cascading.rb:30:in `block in cascade!' 

はここmongoidに関連している私が使用しています宝石とレールです。

ご協力いただければ幸いです。

答えて

0

gem 'doorkeeper-mongodb'の問題は、バージョン> = 4.00のgem 'doorkeeper'が必要です。 gem 'doorkeeper'のバージョンがv3.1.0より大きい場合は、dependent: :delete_allアソシエーションがあります(ドアキーパーのgemファイル内のdoorkeeper/lib/doorkeeper/models/application_mixin.rbを参照)。 :delete_allのカスケード関係は現在までのMongoidのいずれのバージョンでもサポートされておらず、NameErrorの例外が発生します。

これを回避するには、gem 'doorkeeper', '~> 3.1.0'が必要です。しかし、これにより、gem 'doorkeeper-grants_assertion'の宝石依存性の問題が発生しました。これは、以下に示すように私のgemファイル内の特定のコミットバージョンを要求することで修正されました。

gem 'mongoid', '~> 5.1.0' 
gem 'doorkeeper-mongodb', github: 'doorkeeper-gem/doorkeeper-mongodb' 
gem 'doorkeeper', '~> 3.1.0' 
gem 'doorkeeper-grants_assertion', github: "doorkeeper-gem/doorkeeper- 
grants_assertion", :ref => 'f4391f2f07d96845db0d9dd6889f58d4bd4d23bb' 
関連する問題