相关疑难解决方法(0)

在Rails资产管道中使用字体

我在我的Scss文件中配置了一些字体,如下所示:

@font-face {
  font-family: 'Icomoon';
  src: asset-url('icoMoon.eot?#iefix', font) format('embedded-opentype'),
       asset-url('icoMoon.woff', font) format('woff'),
       asset-url('icoMoon.ttf', font)  format('truetype'),
       asset-url('icoMoon.svg#Icomoon', font) format('svg');
}
Run Code Online (Sandbox Code Playgroud)

实际的字体文件存储在/ app/assets/fonts /中

我已经添加config.assets.paths << Rails.root.join("app", "assets", "fonts")到我的application.rb文件中

编译CSS源代码如下:

@font-face {
  font-family: 'Icomoon';
  src: url(/assets/icoMoon.eot?#iefix) format("embedded-opentype"), url(/assets/icoMoon.woff) format("woff"), url(/assets/icoMoon.ttf) format("truetype"), url(/assets/icoMoon.svg#Icomoon) format("svg");
}
Run Code Online (Sandbox Code Playgroud)

但是当我运行应用程序时,找不到字体文件.日志:

开始获取"/assets/icoMoon.ttf"为127.0.0.1在2012-06-05 23:21:17 +0100服务资产/icoMoon.ttf - 404未找到(13ms)

为什么资产管道没有将字体文件缩小为just/assets?

人们有什么想法?

亲切的问候,尼尔

额外信息:

在检查rails控制台的资产路径和assetprecompile时,我得到以下内容:

1.9.2p320 :001 > y Rails.application.config.assets.precompile
---
- !ruby/object:Proc {}
- !ruby/regexp /(?:\/|\\|\A)application\.(css|js)$/
- .svg
- .eot
- .woff
- .ttf
=> nil



1.9.2p320 :002 > …
Run Code Online (Sandbox Code Playgroud)

assets ruby-on-rails sass font-face asset-pipeline

337
推荐指数
8
解决办法
17万
查看次数

如何调试无法忍受的Rails资产预编译

我正在开发一个Rails 3.2项目,最近几个月资产增加了不少,尽管我不认为这个项目很大.资产包括JS(没有咖啡脚本)和SASS文件; 我们有很多图像,但是从早期开始它们就已经存在了很多,所以我不认为它们是一个重要的因素.我们可能有大约十二个库,大多数是小的,最大的是Jquery UI JS.部署是通过Capistrano完成的,并且开始显示部署到分段的速度明显快于生产.为了说明同时避免不同服务器和网络效果的因素,我只需在笔记本电脑上按顺序运行以下三个命令,如下所示:

$ time RAILS_ENV=production bundle exec rake assets:precompile
^Crake aborted!
[Note I aborted this run as I felt it was getting stupidly long...]
real    52m33.656s
user    50m48.993s
sys 1m42.165s

$ time RAILS_ENV=staging bundle exec rake assets:precompile
real    0m41.685s
user    0m38.808s
sys 0m2.803s

$ time RAILS_ENV=development bundle exec rake assets:precompile
real    0m12.157s
user    0m10.567s
sys 0m1.531s
Run Code Online (Sandbox Code Playgroud)

所以我一直在挠头.为什么各种环境之间存在如此巨大的差异?我可以理解开发和分期之间的差距,但我们对分期和生产的配置是相同的.(我应该指出生产编译将在大约2小时后完成!)

虽然最终的结果是让我的预编译更快,但我想通过了解所有时间的进展以及为什么Rails环境之间存在如此大的差异来实现这一目标.我已经看过其他关于使用不同压缩器等的帖子,但我找不到任何有关如何调试这些rake任务的信息,以确定花费时间的地方并确定哪些设置可能导致如此显着的差异.

我不知道人们可能需要哪些其他信息,因此会在评论提出时更新.TIA

更新:下面提供的其他信息

config/environments/production.rbconfig/environments/staging.rb(他们完全一样):

MyRailsApp::Application.configure do
  # Code is not reloaded between requests
  config.cache_classes = …
Run Code Online (Sandbox Code Playgroud)

debugging rake ruby-on-rails asset-pipeline ruby-on-rails-3.2

40
推荐指数
2
解决办法
2万
查看次数

Unicorn在资产预编译期间触发mongoid错误

我有一个使用在Heroku上运行的Mongoid 3的rails应用程序.我刚刚更新它以使用Unicorn.当我尝试将其部署到Heroku时,我收到以下错误:

Running: rake assets:precompile
rake aborted!
   undefined method `match' for nil:NilClass
   /tmp/build_3nnbzpfmnjpns/vendor/bundle/ruby/1.9.1/gems/mongoid-3.0.21/lib/mongoid/sessions/mongo_uri.rb:49:in `initialize'
Run Code Online (Sandbox Code Playgroud)

完整的堆栈跟踪可以在http://pastebin.com/8YcJHEmS找到

但是如果我从我的Gemfile中删除Unicorn,资产编译就会成功.查看Mongoid代码,我可以看到当mongoid.yml文件被解析时发生错误,但我无法弄清楚为什么Unicorn会导致失败.我的mongoid.yml文件看起来像这样:

production:
  sessions:
    default:
      uri: <%= ENV['MONGOHQ_URL'] %>
      options:
        skip_version_check: true
        safe: true
Run Code Online (Sandbox Code Playgroud)

我的Gemfile:

source 'https://rubygems.org'
ruby '1.9.3'

gem 'rails', '3.2.11'
gem 'thin'

group :assets do
  gem 'sass-rails',   '~> 3.2'
  gem 'coffee-rails', '~> 3.2'
  gem 'uglifier', '>= 1.0.3'
  gem "twitter-bootstrap-rails", '>=2.1.8'
  gem "bootstrap_form"

end

gem "jquery-rails"
gem 'jquery-ui-rails', "3.0.1"

gem 'newrelic_rpm'
gem "httparty"
gem "resque"
gem "resque-loner"
gem "unicorn", "4.4.0"
gem "mongoid", "~> …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails heroku unicorn ruby-on-rails-3 mongoid3

11
推荐指数
2
解决办法
1436
查看次数

在Rails中从/ public目录提供字体的缺点是什么?

我喜欢资产管道,但对于我的生活,我无法让它服务我的字体.我浪费了几个小时谷歌搜索和尝试SO解决方案(nope,nope,nope).

相反,我创建了/public/fonts,删除了我的所有字体并引用它们url('/fonts/myAwesomeFont.ttf').一切都很完美.

这种方法有不利之处吗?

字体文件是否在资产预编译中压缩?

fonts ruby-on-rails ruby-on-rails-3.1 asset-pipeline

5
推荐指数
1
解决办法
2773
查看次数