Rails uygulamamın kök dizin yolunu nasıl edinebilirim?
Rails uygulamamın kök dizin yolunu nasıl edinebilirim?
Yanıtlar:
Rails 3 ve daha yeni sürümlerde:
Rails.root
bir Pathname
nesne döndürür . Bir dize eklemek istiyorsanız eklemeniz gerekir .to_s
. Rails uygulamanızda başka bir yol istiyorsanız, şu şekilde kullanabilirsiniz join
:
Rails.root.join('app', 'assets', 'images', 'logo.png')
Rails 2'de RAILS_ROOT
bir dize olan sabiti kullanabilirsiniz .
Rails.root.join(*%w( app assets images logo.png ))
.
Rails.root / 'app' / 'assets' / 'images' / 'logo.png'
Süper doğruluk için şunları kullanmalısınız:
Rails.root.join('foo','bar')
Bu, uygulamanızın /
herhangi biri üzerinde bir tane çalıştırmayı denemesi durumunda dizin ayırıcısı olmayan platformlarda çalışmasına izin verir .
Rails.root.join('foo','bar')
@ yolu '/ Users / purplejacket / my_rails_app / foo / bar' olan Purplename nesnesi olarak değerlendirilir
Değişkenleri kullanarak raylar uygulama yoluna erişebilirsiniz RAILS_ROOT
.
Örneğin:
render :file => "#{RAILS_ROOT}/public/layouts/mylayout.html.erb"
Diğer tüm doğru cevaplara ek olarak Rails.root
, bir Pathname
nesne olduğundan, bu işe yaramaz:
Rails.root + '/app/assets/...'
Gibi bir şey kullanabilirsiniz join
Rails.root.join('app', 'assets')
Bir dize istiyorsanız bunu kullanın:
Rails.root.join('app', 'assets').to_s
Rails.root + 'app/assets'
yaptığı işi, ama evet join
kıvrımlara olduğunu.
Bazı durumlarda Rails'i Rails yüklemek zorunda kalmadan isteyebilirsiniz.
Örneğin, TDD'ing modelleri yerine Rails'e bağımlı olmayan modeller spec_helper
yerine daha hızlı bir geri bildirim döngüsü elde edersiniz 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
Bu, kendi düz dosyalarından Düz Eski Yakut Nesneleri kolayca yüklemenizi sağlar.
# spec/models/poro_spec.rb
require 'spec_helper'
require 'poro'
RSpec.describe ...
Kullanabilirsiniz:
Rails.root
Ancak varlıklara katılmak için şunları kullanabilirsiniz:
Rails.root.join(*%w( app assets))
Umarım bu size yardımcı olur.