¿Ruta del directorio raíz de Rails?

Resuelto fivetwentysix asked hace 14 años • 9 respuestas

¿Cómo obtengo la ruta del directorio raíz de mi aplicación Rails?

fivetwentysix avatar Sep 16 '10 14:09 fivetwentysix
Aceptado

En Rails 3 y posteriores:

Rails.root

que devuelve un Pathnameobjeto. Si quieres una cadena tienes que agregar .to_s. Si desea otra ruta en su aplicación Rails, puede usarla joinasí:

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

En Rails 2 puedes usar la RAILS_ROOTconstante, que es una cadena.

Mischa avatar Sep 16 '2010 07:09 Mischa

Para una súper corrección, debes usar:

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

lo que permitirá que su aplicación funcione en plataformas donde /no existe el separador de directorios, en caso de que alguien intente ejecutarla en una.

malclocke avatar Sep 16 '2010 08:09 malclocke

Puede acceder a la ruta de la aplicación Rails utilizando la variable RAILS_ROOT.

Por ejemplo:

render :file => "#{RAILS_ROOT}/public/layouts/mylayout.html.erb"
Anubhaw avatar Sep 16 '2010 07:09 Anubhaw

En algunos casos, es posible que desee la raíz de Rails sin tener que cargar Rails.

Por ejemplo, obtienes un ciclo de retroalimentación más rápido cuando TDD hace modelos que no dependen de Rails al requerir spec_helperen lugar 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

Lo que le permite cargar fácilmente objetos Ruby antiguos desde sus archivos de especificaciones.

# spec/models/poro_spec.rb

require 'spec_helper'

require 'poro'

RSpec.describe ...
Dennis avatar Apr 09 '2016 14:04 Dennis