是否有可能在應用程序中包含的gem代碼中瞭解應用程序的Rails文件系統根目錄?如何在Gem中獲取Rails應用程序的根目錄
這是寶石源的樣本:
module MyGem
def self.included(base)
puts Rails.root # return nil
end
end
ActionController::Base.send :include, MyGem
感謝的和對不起我的英文不好
是否有可能在應用程序中包含的gem代碼中瞭解應用程序的Rails文件系統根目錄?如何在Gem中獲取Rails應用程序的根目錄
這是寶石源的樣本:
module MyGem
def self.included(base)
puts Rails.root # return nil
end
end
ActionController::Base.send :include, MyGem
感謝的和對不起我的英文不好
我發現解決類似問題的解決方案是使用railtie初始化器包含我的模塊。
所以,在你/lib/mygem/railtie.rb
module MyGem
class Railtie < Rails::Railtie
initializer "Include your code in the controller" do
ActiveSupport.on_load(:action_controller) do
include MyGem
end
end
end
有了這個代碼,您的模塊將在ActionController的加載後包括在內,你將能夠使用Rails.root
讓我知道這是否適合你。
它似乎工作。非常感謝! – sailor
當然:
Rails.root
僅僅因爲你正在編寫一個寶石沒有按這意味着你不能訪問全局名稱空間。唯一的問題是,如果你的Gem在初始化期間設置Rails模塊之前使用了這個訪問。如果您發現問題所在,請將您使用的代碼發佈到哪裏,我們很樂意幫助您解決問題。
聊天說話不鼓勵在這裏。如果您要爲帖子添加「謝謝」(您不應該這麼做),請鍵入「謝謝」,而不是「thx」。 – meagar
我還沒有做過多與紅寶石寶石,但我想知道'''root_path'''不工作? –
文件系統根目錄?或URL root_path? –