Ścieżka głównego katalogu Rails?
Jak uzyskać ścieżkę katalogu głównego mojej aplikacji Rails?
8 answers
W Rails 3 i nowszych:
Rails.root
Który zwraca Pathname
obiekt. Jeśli chcesz mieć ciąg znaków, musisz dodać .to_s
. Jeśli chcesz mieć inną ścieżkę w aplikacji Rails, możesz użyć join
Tak:
Rails.root.join('app', 'assets', 'images', 'logo.png')
W Rails 2 możesz użyć RAILS_ROOT
stałej, która jest ciągiem znaków.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-10 14:12:40
Dla super poprawności należy użyć:
Rails.root.join('foo','bar')
, który pozwoli Twojej aplikacji pracować na platformach, na których /
nie jest separatorem katalogów, jeśli ktoś spróbuje go uruchomić na jednym z nich.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-16 08:16:47
Możesz uzyskać dostęp do ścieżki aplikacji rails używając zmiennej RAILS_ROOT
.
Na przykład:
render :file => "#{RAILS_ROOT}/public/layouts/mylayout.html.erb"
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-23 13:58:43
Oprócz wszystkich innych poprawnych odpowiedzi, ponieważ Rails.root
jest Pathname
obiekt, to nie zadziała:
Rails.root + '/app/assets/...'
Przydałoby się coś w rodzaju join
Rails.root.join('app', 'assets')
Jeśli chcesz mieć ciąg znaków użyj tego:
Rails.root.join('app', 'assets').to_s
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-09-07 19:33:32
W niektórych przypadkach możesz chcieć root Rails bez konieczności ładowania Rails.
Na przykład, można uzyskać szybszy cykl sprzężenia zwrotnego, gdy modele TDD ' ING, które nie zależą od szyn, wymagają spec_helper
zamiast 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
Który pozwala na łatwe ładowanie zwykłych starych obiektów Ruby z ich plików spec.
# spec/models/poro_spec.rb
require 'spec_helper'
require 'poro'
RSpec.describe ...
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-04-09 14:10:26
Możesz użyć:
Rails.root
Ale aby dołączyć do zasobów można użyć:
Rails.root.join(*%w( app assets))
Mam nadzieję, że to ci pomoże.Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-18 05:53:04
Po prostu przez Rails.root lub jeśli chcesz dodać coś możemy użyć go jak Rails.root.join ('app', 'assets'). to_s
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-26 10:48:25
Po prostu pisząc Rails.root i dodawać wszystko przez Rails.root.join (*%w (App assets)). to_s
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-06-18 06:56:16