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)).