[ruby-on-rails] 레일스 루트 디렉토리 경로?

Rails 앱의 루트 디렉토리 경로는 어떻게 얻습니까?



답변

Rails 3 이상에서 :

Rails.root

Pathname객체 를 반환 합니다. 문자열을 원하면 추가해야합니다 .to_s. Rails 앱에서 다른 경로를 원하면 join다음과 같이 사용할 수 있습니다 .

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

Rails 2에서는 RAILS_ROOT상수 인 문자열을 사용할 수 있습니다 .


답변

정확성을 높이려면 다음을 사용해야합니다.

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

/디렉토리 분리기가 아닌 플랫폼에서 앱을 작동시킬 수 있습니다 .


답변

variable을 사용하여 rails 앱 경로에 액세스 할 수 있습니다 RAILS_ROOT.

예를 들면 다음과 같습니다.

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


답변

다른 모든 정답뿐만 아니라, 이후는 Rails.rootA는 Pathname목적이하지 않습니다 일 :

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

당신은 같은 것을 사용할 수 있습니다 join

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

문자열을 원하면 다음을 사용하십시오.

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


답변

경우에 따라 Rails를로드하지 않고 Rails 루트를 원할 수도 있습니다.

예를 들어 Rails에 의존하지 않는 모델을 TDD 할 때 spec_helper대신 에 요구함으로써 피드백주기가 더 빨라집니다 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

스펙 파일에서 Plain Old Ruby Objects를 쉽게로드 할 수 있습니다.

# spec/models/poro_spec.rb

require 'spec_helper'

require 'poro'

RSpec.describe ...


답변

당신이 사용할 수있는:

Rails.root

그러나 자산에 가입하려면 다음을 사용할 수 있습니다.

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

잘하면 이것이 당신을 도울 것입니다.


답변

Rails.root로 간단하게 추가하거나 무언가를 추가하고 싶다면 Rails.root.join ( ‘app’, ‘assets’). to_s와 같이 사용할 수 있습니다.