首页 文章

Rails根目录路径?

提问于
浏览
274

如何获取Rails应用程序的根目录路径?

8 回答

  • -1

    为了超级正确,您应该使用:

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

    这将允许您的应用程序在 / 不是目录分隔符的平台上工作,任何人都可以尝试在其中运行它 .

  • 99

    除了所有其他正确的答案,由于 Rails.root 是一个Pathname对象,这不起作用:

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

    你可以使用像 join 这样的东西

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

    如果你想要一个字符串使用这个:

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

    在某些情况下,您可能需要Rails根,而无需加载Rails .

    例如,当TDD的模型不依赖于Rails时,通过要求 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
    

    这使您可以轻松地从其spec文件中加载Plain Old Ruby Objects .

    # spec/models/poro_spec.rb
    
    require 'spec_helper'
    
    require 'poro'
    
    RSpec.describe ...
    
  • 0

    在Rails 3和更新版本中:

    Rails.root
    

    返回一个Pathname对象 . 如果你想要一个字符串,你必须添加 .to_s . 如果您想在Rails应用程序中使用其他路径,可以像这样使用join

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

    在Rails 2中,您可以使用 RAILS_ROOT 常量,这是一个字符串 .

  • 500

    您可以使用:

    Rails.root
    

    但要加入您可以使用的资产:

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

    希望这对你有所帮助 .

  • -1

    只需通过Rails.root或者如果你想附加一些我们就可以使用它像Rails.root.join('app','assets') . to_s

  • 3

    只需编写 Rails.root 并通过 Rails.root.join(*%w( app assets)).to_s 附加任何内容

  • 21

    您可以使用变量 RAILS_ROOT 访问rails app路径 .

    例如:

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

相关问题