Ruby on rails 在Rails 3.1中添加新的资源路径

Ruby on rails 在Rails 3.1中添加新的资源路径,ruby-on-rails,path,ruby-on-rails-3.1,asset-pipeline,Ruby On Rails,Path,Ruby On Rails 3.1,Asset Pipeline,有人知道如何在Rails 3.1中将另一个文件夹添加到资产管道中吗 我想以同样的方式提供app/assets/font 更新:5-7-2013 为了给以后发现这个问题的人添加一些澄清,在application.rb文件中显式添加资产路径: config.assets.paths << "#{Rails.root}/app/assets/fonts" config.assets.pathAndrew,app/assets/font实际上已经与图像一起位于您的资产加载路径中。因此,您

有人知道如何在Rails 3.1中将另一个文件夹添加到资产管道中吗

我想以同样的方式提供
app/assets/font


更新:5-7-2013

为了给以后发现这个问题的人添加一些澄清,在application.rb文件中显式添加资产路径:

config.assets.paths << "#{Rails.root}/app/assets/fonts"

config.assets.pathAndrew,
app/assets/font
实际上已经与
图像一起位于您的资产加载路径中。因此,您可以用相同的方式指向资产:
[1]或您引用图像的方式

我也花了一段时间才意识到这一点。我仍然不知道如果在
app/assets/font
app/assets/images
中存在同名文件会发生什么


[1] 假设你在app/assets/fonts/Ubuntu/Ubuntu-R-webfont.eot有一个字体,安德鲁,杰森同意了。FWIW我把它放在我的config/application.rb中

  # Enable the asset pipeline
config.assets.enabled = true
config.assets.paths << "#{Rails.root}/app/assets/fonts"
#启用资产管道
config.assets.enabled=true

config.assets.paths我可以确认,在Rails 3.1.0.rc4(假定更高)中,它可以在不向配置添加新路径的情况下工作。我跳转了服务器,你也可以这么做

它在不添加路径的情况下工作,但请注意,您正在为资源使用有效的文件名

url("#{asset_path 'fontawesome-webfont.eot'}?#iefix") format('embedded-opentype'),
...
url("#{asset_path 'fontawesome-webfont.svg'}#FontAwesome") format('svg');

例如,在这种情况下,将
?#iefix
放在字体文件名之外

创建
资产/字体
文件夹,并在其上添加一些字体,在css文件上使用主题,如下所示

@font-face {
  font-family: Sawasdee;
  src: url(Sawasdee.ttf);
}

通过创建
app/assets/images
app/assets/font
它们将自动添加到资产路径

创建rails控制台后打开它们并检查:

y Rails.application.config.assets.paths 

y
yaml
方法的快捷方式)

为了它的价值,我尝试了这个方法,但似乎不起作用。然后我猜是在
config.assets.path,我也偶然发现了这个,它使用默认设置,但目录在应用程序初始化期间被扫描,因此如果在服务器运行后添加类似字体的文件夹,您将获得404。因此,当您在资产管道中添加目录时,请始终重新启动。要详细说明同名文件:当存在命名冲突时,
config.assets.paths
数组中出现的第一个路径就是所选的文件。这可以通过使用
asset\u path()
helper并指定目录来避免。请注意,重复名称问题通常不会造成问题。所服务的资产通常具有不同的格式,因此不会发生此问题。此外,资产管道在名称中为资产提供种子。这是一种打破用户浏览器本地现金的方法,但也是为了确保所有文件都有一个唯一的名称。预编译(在生产环境中运行)时,会在应用程序中创建一个yaml文件,将生成的文件链接到原始路径。这允许从代码内命名到已编译资产名称的快速链接。这同时避免了重复的名称问题。这在这里得到了完美的回答:据我所见,现在首选的编写方式是
Rails.root.join('app','assets','font'))
从谷歌搜索实际添加新资产路径的方法时有点烦人,而接受的答案实际上并没有完成任务:p(询问者可能实际上不需要这样做,但这是搜索结果中出现的结果)。所以+1用于回答标题的问题,而不是使用
Rails.root.join
解决OP的问题。config.assets.paths@dc10应该是一种跨平台的灵活方式。谢谢!这就是一个assets的原因:在添加字体后,我开始看到一个预编译错误,这导致了一个非常无用的“rake aborted!nil:NilClass”Oops的未定义方法“match”!实际上,我真正的问题已经解决了:
config.assets.path