मुझे अपनी रेल एप्लिकेशन की रूट निर्देशिका पथ कैसे मिल सकती है?
मुझे अपनी रेल एप्लिकेशन की रूट निर्देशिका पथ कैसे मिल सकती है?
जवाबों:
रेल 3 और नए में:
Rails.root
जो एक Pathname
वस्तु देता है । यदि आप एक स्ट्रिंग चाहते हैं तो आपको जोड़ना होगा .to_s
। यदि आप अपने रेल एप्लिकेशन में एक और रास्ता चाहते हैं, तो आप join
इस तरह का उपयोग कर सकते हैं :
Rails.root.join('app', 'assets', 'images', 'logo.png')
रेल 2 में आप RAILS_ROOT
स्थिरांक का उपयोग कर सकते हैं , जो एक स्ट्रिंग है।
Rails.root.join(*%w( app assets images logo.png ))
।
Rails.root / 'app' / 'assets' / 'images' / 'logo.png'
सुपर शुद्धता के लिए, आपको उपयोग करना चाहिए:
Rails.root.join('foo','bar')
जो आपके एप्लिकेशन को उन प्लेटफ़ॉर्म पर काम करने की अनुमति देगा जहां /
निर्देशिका विभाजक नहीं है, किसी को भी इसे एक पर चलाने और चलाने की कोशिश करनी चाहिए।
Rails.root.join('foo','bar')
Pathname ऑब्जेक्ट का मूल्यांकन करता है , जिसका @path '/ Users / purplejacket / my_rails_app / foo / bar' है
आप चर का उपयोग करके रेल पथ तक पहुँच सकते हैं RAILS_ROOT
।
उदाहरण के लिए:
render :file => "#{RAILS_ROOT}/public/layouts/mylayout.html.erb"
अन्य सभी सही उत्तरों के अलावा, चूंकि Rails.root
एक Pathname
वस्तु है, यह काम नहीं करेगा:
Rails.root + '/app/assets/...'
आप कुछ का उपयोग कर सकते हैं join
Rails.root.join('app', 'assets')
यदि आप एक स्ट्रिंग का उपयोग करना चाहते हैं:
Rails.root.join('app', 'assets').to_s
Rails.root + 'app/assets'
में काम करता है , लेकिन हाँ join
, निरर्थक है।
कुछ मामलों में आप रेल को लोड करने के लिए बिना रूट रूट कर सकते हैं।
उदाहरण के लिए, आपको एक त्वरित प्रतिक्रिया चक्र मिलता है जब TDD'ing मॉडल जो आवश्यकता के spec_helper
बजाय रेल पर निर्भर नहीं होते हैं rails_helper
।
# spec/spec_helper.rb
require 'pathname'
rails_root = Pathname.new('..').expand_path(File.dirname(__FILE__))
[
rails_root.join('app', 'models'),
# Add your decorators, services, etc.
].each do |path|
$LOAD_PATH.unshift path.to_s
end
जो आपको अपनी पुरानी फाइलों से प्लेन पुरानी रूबी वस्तुओं को आसानी से लोड करने की अनुमति देता है।
# spec/models/poro_spec.rb
require 'spec_helper'
require 'poro'
RSpec.describe ...
आप उपयोग कर सकते हैं:
Rails.root
लेकिन आपके द्वारा उपयोग की जा सकने वाली संपत्तियों में शामिल होने के लिए:
Rails.root.join(*%w( app assets))
उम्मीद है कि यह आपकी मदद करता है।