[英]Rails Root directory path?
如何獲取 Rails 應用的根目錄路徑?
對於超級正確性,您應該使用:
Rails.root.join('foo','bar')
這將允許您的應用程序在/
不是目錄分隔符的平台上工作,如果有人嘗試在一個平台上運行它。
您可以使用變量RAILS_ROOT
訪問 rails 應用程序路徑。
例如:
render :file => "#{RAILS_ROOT}/public/layouts/mylayout.html.erb"
除了所有其他正確答案之外,由於Rails.root
是一個Pathname
對象,這將不起作用:
Rails.root + '/app/assets/...'
你可以使用像join
這樣的東西
Rails.root.join('app', 'assets')
如果你想要一個字符串使用這個:
Rails.root.join('app', 'assets').to_s
在某些情況下,您可能需要 Rails 根目錄而不必加載 Rails。
例如,通過要求spec_helper
而不是rails_helper
對不依賴於 Rails 的模型進行spec_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
這使您可以輕松地從規范文件中加載普通的舊 Ruby 對象。
# spec/models/poro_spec.rb
require 'spec_helper'
require 'poro'
RSpec.describe ...
module Rails
def self.root
File.expand_path("..", __dir__)
end
end
來源: https : //github.com/rails/rails/blob/5259062868dcf10fbcf735d6520e6a14e15fdcdb/actionmailer/test/abstract_unit.rb#L12
您可以使用:
Rails.root
但是要加入您可以使用的資產:
Rails.root.join(*%w( app assets))
希望這對你有幫助。
簡單地通過 Rails.root 或者如果你想要附加一些東西我們可以使用它像 Rails.root.join('app', 'assets').to_s
只需編寫Rails.root並通過Rails.root.join(*%w( app assets)).to_s附加任何內容
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.