Rails Chemin du répertoire racine?

Comment puis-je obtenir le chemin du répertoire racine de l’application Rails?

Dans Rails 3 et plus récents:

Rails.root 

qui renvoie un object Pathname . Si vous voulez une chaîne, vous devez append .to_s . Si vous voulez un autre chemin dans votre application Rails, vous pouvez utiliser la join comme ceci:

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

Dans Rails 2, vous pouvez utiliser la constante RAILS_ROOT , qui est une chaîne.

Pour plus de précision, vous devez utiliser:

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

ce qui permettra à votre application de fonctionner sur des plates-formes où / n’est pas le séparateur de répertoire, si quelqu’un essaie de l’exécuter sur un seul.

Vous pouvez accéder au chemin des applications rails en utilisant la variable RAILS_ROOT .

Par exemple:

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

En plus de toutes les autres réponses correctes, Rails.root étant un object Pathname , cela ne fonctionnera pas:

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

Vous pourriez utiliser quelque chose comme join

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

Si vous voulez une chaîne, utilisez ceci:

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

Dans certains cas, vous pouvez souhaiter que la racine Rails ne soit pas obligée de charger Rails.

Par exemple, vous obtenez un cycle de rétroaction plus rapide lorsque vous utilisez des modèles TDD qui ne dépendent pas de Rails en exigeant spec_helper au lieu de 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 

Ce qui vous permet de charger facilement des objects Old Ruby Plain à partir de leurs fichiers de spécifications.

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

Vous pouvez utiliser:

 Rails.root 

Mais pour rejoindre les actifs que vous pouvez utiliser:

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

J’espère que cela vous aide.

Simplement par Rails.root ou si vous voulez append quelque chose, nous pouvons l’utiliser comme Rails.root.join (‘app’, ‘assets’).

Simplement en écrivant Rails.root et en ajoutant quelque chose par Rails.root.join (*% w (app assets)).