簡體   English   中英

如何在Gem中獲取Rails應用程序的根目錄

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM