[英]How do I get the root directory of a Rails app in a Gem
是否可以在應用程序中包含的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
如果這對您有用,請告訴我。
當然:
Rails.root
僅僅因為您正在編寫gem並不意味着您無法訪問全局命名空間。 唯一需要關注的是,如果您的Gem在初始化期間設置Rails模塊之前使用了該訪問權限。 如果您發現問題所在,請發布您正在使用的代碼,它在哪里,我們很樂意幫助您調試問題。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.