如何获取Rails应用程序的根目录路径?
当前回答
只需编写Rails.root 并附加任何 Rails.root。Join (*%w(应用程序资产)).to_s
其他回答
在某些情况下,您可能需要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
它允许您轻松地从规范文件中加载普通旧Ruby对象。
# spec/models/poro_spec.rb
require 'spec_helper'
require 'poro'
RSpec.describe ...
在Rails 3及更新版本中:
Rails.root
它返回一个Pathname对象。如果你想要一个字符串,你必须添加。to_s。如果你想在你的Rails应用程序中使用另一个路径,你可以像这样使用join:
Rails.root.join('app', 'assets', 'images', 'logo.png')
在Rails 2中,你可以使用RAILS_ROOT常量,它是一个字符串。
简单地通过Rails。或者如果你想追加一些东西,我们可以使用Rails.root。加入.to_s(“应用”、“资产”)
除了所有其他正确答案,因为Rails。root是一个Pathname对象,这行不通:
Rails.root + '/app/assets/...'
您可以使用join之类的东西
Rails.root.join('app', 'assets')
如果你想要一个字符串,使用这个:
Rails.root.join('app', 'assets').to_s
只需编写Rails.root 并附加任何 Rails.root。Join (*%w(应用程序资产)).to_s
推荐文章
- 如何在Ruby On Rails中使用NuoDB手动执行SQL命令
- ActiveRecord OR查询
- 无法安装gem -未能建立gem本地扩展-无法加载这样的文件——mkmf (LoadError)
- 在Rails中使用user_id:integer vs user:references生成模型
- 如何测试参数是否存在在轨道
- 验证多个列的唯一性
- Rails:在where语句中使用大于/小于
- Rails:如何为Rails activerecord的模型中的属性创建默认值?
- 库未加载:libmysqlclient.16。在OS X 10.6上使用mysql2 gem运行'rails server'时出现dylib错误
- 如何确定一个数组是否包含另一个数组的所有元素
- Rails find_or_create_by多个属性?
- Rails ActiveRecord日期之间
- 是什么导致这个ActiveRecord::ReadOnlyRecord错误?
- Rails:dependent =>:destroy VS:dependent =>:delete_all
- 对于PostgreSQL表来说,多大才算太大?