我正在使用這兩個寶石:social_stream(rails引擎)和rails3_acts_as_paranoid(lib)。使用多個寶石時衝突的模塊名稱(在我的情況下:social_stream和rails3_acts_as_paranoid)
當我嘗試看看網頁,我得到以下錯誤:
NameError in Home#index
顯示/home/pinouchon/code/sharewizz/webapp/app/views/home/index.html.erb哪裏線#25提出: 未初始化的常量ActsAsParanoid ::關係::公共 提取的源(左右線#25):
22:
23: <%=
24: render :partial => "activities/index",
25: :locals => { :activities => current_subject.wall(:home).page(params[:page]),
26: :owner => current_subject }
27: %>
28:
完整跟蹤:
social_stream-base (0.21.0) app/models/relation.rb:159:in `ids_shared_with'
app/models/activity.rb:70:in `block in <class:Activity>'
activerecord (3.2.2) lib/active_record/scoping/named.rb:180:in `call'
activerecord (3.2.2) lib/active_record/scoping/named.rb:180:in `block (2 levels) in scope'
# ...
我想這是因爲那些寶石定義2個模塊共享同一個名字:Relation
。
在/home/pinouchon/.rvm/gems/[email protected]/gems/rails3_acts_as_paranoid-0.2.5/lib/acts_as_paranoid/relation.rb:
module ActsAsParanoid
module Relation
# ...
在/home/pinouchon/.rvm/gems/[email protected]/gems/social_stream-base-0.21.0/app/models/relation.rb:
class Relation < ActiveRecord::Base
#...
def ids_shared_with(subject)
# line 159:
ids = [Relation::Public.instance.id]
# ...
在/home/pinouchon/.rvm/gems/[email protected]/gems/social_s tream基-0.21.0 /應用/模型/關係/ public.rb:
class Relation::Public < Relation::Single
# ...
之前,我只使用社會流,沒有沒有衝突的模塊名稱。現在,這是因爲如果在ActsAsParanoid::Relation
線.../social_stream/.../relation.rb
正在取代Relation
,因此問題159
但是,什麼是令人驚訝的是,rails3_acts_as_paranoid
關係模塊是很好的命名空間中module ActsAsParanoid
。所以它不應該干擾在全球範圍內定義的social_stream的Relation
,但它是。我可能錯過了一些東西。
我對錯是什麼原因嗎? 有什麼方法可以解決這個問題嗎?