Rails Root directory path?

Come posso ottenere il percorso della root directory dell’app di Rails?

In Rails 3 e successivi:

Rails.root 

che restituisce un object Pathname . Se vuoi una stringa devi aggiungere .to_s . Se vuoi un altro percorso nell’app Rails, puoi usare join come questo:

 Rails.root.join('app', 'assets', 'images', 'logo.png') 

In Rails 2 puoi usare la costante RAILS_ROOT , che è una stringa.

Per la super correttezza, dovresti usare:

 Rails.root.join('foo','bar') 

che consentirà alla tua app di funzionare su piattaforms in cui / non è il separatore di directory, se qualcuno dovesse tentare di eseguirlo su uno.

È ansible accedere al percorso dell’app rails utilizzando la variabile RAILS_ROOT .

Per esempio:

 render :file => "#{RAILS_ROOT}/public/layouts/mylayout.html.erb" 

Oltre a tutte le altre risposte corrette, poiché Rails.root è un object Rails.root , questo non funzionerà:

 Rails.root + '/app/assets/...' 

Potresti usare qualcosa come join

 Rails.root.join('app', 'assets') 

Se vuoi una stringa usa questo:

 Rails.root.join('app', 'assets').to_s 

In alcuni casi potresti desiderare la root di Rails senza dover caricare Rails.

Ad esempio, si ottiene un ciclo di feedback più rapido quando i modelli TDD che non dipendono da Rails richiedono spec_helper invece di 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 

Che ti permette di caricare facilmente Plain Old Ruby Objects dai loro file spec.

 # spec/models/poro_spec.rb require 'spec_helper' require 'poro' RSpec.describe ... 

Puoi usare:

 Rails.root 

Ma per unire le risorse puoi usare:

 Rails.root.join(*%w( app assets)) 

Spero che questo ti aiuti.

Semplicemente da Rails.root o se vuoi aggiungere qualcosa, possiamo usarlo come Rails.root.join (‘app’, ‘assets’). To_s

Semplicemente scrivendo Rails.root e aggiungi qualsiasi cosa da Rails.root.join (*% w (app)) to_s