2012-06-29 15 views
5

में रेल ऐप की मूल निर्देशिका कैसे प्राप्त हो सकती है क्या किसी ऐप में शामिल मणि के कोड में किसी एप्लिकेशन की रेल फ़ाइल सिस्टम रूट रूट जानना संभव है?मुझे एक जेम

module MyGem 
    def self.included(base) 
    puts Rails.root # return nil 
    end 
end 

ActionController::Base.send :include, MyGem 

धन्यवाद के और मेरे गरीब अंग्रेज़ी

+0

चैट स्पीच यहां निराश है। यदि आप अपनी पोस्ट में "धन्यवाद" जोड़ने जा रहे हैं (जो आपको वैसे भी नहीं करना चाहिए), "धन्यवाद" टाइप करें, न कि "thx"। – meagar

+0

मैंने रूबी रत्नों के साथ बहुत कुछ नहीं किया है, लेकिन मुझे आश्चर्य है कि 'root_path''' काम नहीं करेगा? –

+0

फाइल सिस्टम रूट निर्देशिका? या यूआरएल root_path? –

उत्तर

7

जिस समाधान को मैंने इसी तरह की समस्या को हल करने के लिए पाया वह रेलवे प्रारंभकर्ताओं का उपयोग करके मेरा मॉड्यूल शामिल करना है।

तो, अपने /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

उपयोग करने के लिए सक्षम हो जाएगा

मुझे बताएं कि यह आपके लिए काम करता है या नहीं।

+0

ऐसा लगता है कि यह काम करता है। बहुत बहुत धन्यवाद! – sailor

2
बेशक

के लिए खेद है:

Rails.root 

सिर्फ इसलिए कि तुम एक रत्न लिख रहे हैं नहीं करता है

यह मणि स्रोत का एक नमूना है इसका मतलब यह नहीं है कि आप वैश्विक नामस्थान तक नहीं पहुंच सकते हैं। एकमात्र चिंता यह होगी कि यदि आपका मणि प्रारंभिकरण के दौरान रेल मॉड्यूल स्थापित होने से पहले उस पहुंच का उपयोग करता है। यदि आपको यह समस्या मिलती है, तो आप जिस कोड का उपयोग कर रहे हैं उसे पोस्ट करें, जहां यह है, और हम इस मुद्दे को डीबग करने में मदद करने में प्रसन्न होंगे।

+0

Rails.root उस मामले में शून्य वापस आती है। – sailor

+0

ऐसा नहीं होना चाहिए। अधिक संदर्भ शायद - क्या वह नमूना है जिसे आपने पूर्ण रेल ऐप में चल रहे प्रश्न में जोड़ा है, या आप इसे आरएसपीईसी या इसी तरह के साथ परीक्षण कर रहे हैं? प्रारंभिक प्रक्रिया में जब आप # भेज रहे हैं: शामिल हैं? –

+0

यह एक पूर्ण रेल ऐप में चल रहा है। इसमें शामिल होने पर मणि शामिल किया जाता है, कोड मूल रूप से वही है ... – sailor

संबंधित मुद्दे