标签: asset-pipeline

Rails 3.1:确定资产是否存在

是否存在一种内置的方法来确定资产是否存在而不依赖于File.exists?(File.join(Rails.root, "foo", "bar", "baz"))资产路径.

我的应用程序从Resque队列上的远程服务器获取图像; 直到我们下载图像我想要提供占位符图像.目前我正在使用File.exists...但这意味着对路径进行硬编码,这会淹没或查看配置的资产路径.看起来这应该已经存在,但我在文档中找不到它.

ruby-on-rails-3.1 asset-pipeline

49
推荐指数
3
解决办法
1万
查看次数

Rails 3.1资产预编译 - 包括所有javascript文件

我希望Rails 3.1能够获取更多我的资产以进行预编译.特别是,用于编译文件的默认匹配器不会添加.js文件vendor/assets/javascripts.我可以将资源添加到config.assets.precompile列表中,但这看起来很烦人.我不想在application.js清单中引用它们,因为我不希望它们包含在所有页面中.

总之,任何方式请求获取所有.js文件vendor/assets/javascripts得到预编译rake assets:precompile,但没有将它们包含在所有页面中?

ruby-on-rails-3.1 asset-pipeline

48
推荐指数
1
解决办法
3万
查看次数

从Rails资产管道清除缓存

我正在Rails中开始一个新项目,看起来application.js清单文件正在用我引用的javascripts做一些有趣的事情 - 它是否将这些文件缓存为资产管道的一部分?

这是发生了什么.我将名为jquery.autoresize.js的javascript文件添加到vendor/assets/javascripts文件夹,然后在application.js清单中引用该文件,如下所示:

//= require jquery.autoresize.js 
Run Code Online (Sandbox Code Playgroud)

然后我启动了rails服务器.但在我的应用程序中导航后,我意识到我不小心添加了错误版本的jquery.autoresize.js文件.因此,我删除了该文件,然后将正确的版本添加到vendor/assets/javascripts文件夹中.但是,令我恐惧的是,当我重新加载页面时,它仍在加载旧的javascript文件.

我尝试清空浏览器缓存,然后退出并重新启动Rails服务器,但无济于事.我通过简单地重命名我的javascript文件并引用新名称一起破解了一个解决方案,这个工作正常.但必须有一个更好的解决方案.

新资产管道是否以某种方式缓存您引用的文件?如果是这样,我该如何清除缓存?谢谢你的帮助!

javascript caching ruby-on-rails ruby-on-rails-3.1 asset-pipeline

46
推荐指数
5
解决办法
6万
查看次数

sass-rails helpers"image-url","asset-url"在rails 3.2.1中不起作用

我在3.2.1,sass-rails-3.2.4和sass-3.1.15 ......

资产管道的文档说:

asset-url("rails.png", image) becomes url(/assets/rails.png)
image-url("rails.png") becomes url(/assets/rails.png)
Run Code Online (Sandbox Code Playgroud)

...

所以我做了以下文件:

# app/assets/stylesheets/public/omg.css.sass

body
  background: asset-url('snake.gif', image)

#lol
  background: image-url('snake.gif')
Run Code Online (Sandbox Code Playgroud)

当我访问localhost:3000/assets/public/omg.css时,我得到:

body {
  background: asset-url("snake.gif", image); }

#lol {
  background: image-url("snake.gif"); }
Run Code Online (Sandbox Code Playgroud)

...我也尝试将文件更改为omg.css.scss并将语法更改为:

# app/assets/stylesheets/public/omg.css.scss

body {
  background: asset-url('snake.gif', image);
}

#lol {
  background: image-url('snake.gif');
}
Run Code Online (Sandbox Code Playgroud)

但得到相同的结果......有没有人知道为什么这些助手不工作?

ruby-on-rails sass ruby-on-rails-3 asset-pipeline

45
推荐指数
3
解决办法
6万
查看次数

Uncompile Development Asset Pipeline

我正在为我的生产环境编译我的资产管道,它适用于我的所有环境.如何为我的开发环境重新编译资产管道?

我检查了我的配置/开发环境,但找不到修复程序.

在此先感谢任何帮助......

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

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

如何获取Rails资产管道以生成源映射?

我想让Rails在编译的coffeescript/minified JS旁边生成源映射,以便更好地记录错误.但是,网上似乎没有关于如何执行此操作的全面文档.有没有人这样做过?

我在Rails 3.2和Heroku上.

javascript ruby-on-rails heroku sprockets asset-pipeline

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

宝石更新后:测试失败,"资产未声明在生产中预编译"

由于我更新了几个宝石,所有测试都失败并出现错误:

ActionView :: Template :: Error:未声明资产在生产中预编译.

添加Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )config/initializers/assets.rb和重新启动服务器

应用程序/视图/布局/ _faviconsheader.html.erb:14:在 _app_views_layouts__faviconsheader_html_erb__1320

应用程序/视图/布局/ application.html.erb:21:在 _app_views_layouts_application_html_erb__4340

该错误似乎是指_faviconsheader.html.erb包含该行的部分:

<%= content_tag :link, nil, rel: :manifest, href: image_path("favicons/manifest.json.erb") %>
Run Code Online (Sandbox Code Playgroud)

这个部分载入application.html.erb:<%= render partial: 'layouts/faviconsheader' %>.

知道是什么导致了这个错误,该怎么办?在gem更新之前,所有测试都通过了.

我使用Rails 4.2.5.其中一个更新的宝石是sprockets(更新的链轮到版本3.5.2).我在github上读到有关链轮4出现问题的内容,但我没有使用版本4.


PS即使我添加Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )config/initializers/assets.rb错误仍然存在.但即使这样可行,我也想了解为什么会出现这个问题,除了更新一些宝石之外没有任何变化.

ruby ruby-on-rails sprockets asset-pipeline

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

Rails应用程序不在生产环境中提供资产

我的应用程序在开发环境中运行时工作正常.在production(rails server -e production)中,浏览器无法访问css和js文件,并且在控制台上有以下消息:

I, [2013-07-27T21:00:59.105459 #11449]  INFO -- : Started GET "/javascripts/application.js" for 99.102.22.124 at 2013-07-27 21:00:59 +0000
F, [2013-07-27T21:00:59.108302 #11449] FATAL -- : 
ActionController::RoutingError (No route matches [GET] "/javascripts/application.js"):
Run Code Online (Sandbox Code Playgroud)

在生产环境中来自html源头部分:

<head>
  <title>a Social Server</title>
  <link data-turbolinks-track="true" href="/stylesheets/application.css" media="all" rel="stylesheet">
  <link href="//netdna.bootstrapcdn.com/font-awesome/3.2.1/css/font-awesome.css" rel="stylesheet">
  <script data-turbolinks-track="true" src="/javascripts/application.js"></script>
  <meta content="authenticity_token" name="csrf-param">
<meta content="jYM4IAXTXAuKWeD4FEVrXgXRNFeB6EazU68ZBQfRqNY=" name="csrf-token">
</head>
Run Code Online (Sandbox Code Playgroud)

另一方面,在开发环境中,头部看起来像:

<head>
  <title>a Social Server</title>
  <link data-turbolinks-track="true" href="/assets/application.css?body=1" media="all" rel="stylesheet">
<link data-turbolinks-track="true" href="/assets/twitter-bootstrap-static/bootstrap.css?body=1" media="all" rel="stylesheet">
<link data-turbolinks-track="true" href="/assets/twitter-bootstrap-static/fontawesome.css?body=1" media="all" rel="stylesheet">
<link data-turbolinks-track="true" href="/assets/bootstrap_and_overrides.css?body=1" media="all" …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails asset-pipeline

42
推荐指数
6
解决办法
4万
查看次数

Rails Active Admin css与Twitter Bootstrap css冲突

我对Rails资产管道有些新意,所以我可能做错了什么.我正在尝试使用Active Admin作为我的后端和twitter bootstrap css用于我的前端应用程序.

我将bootstrap.css添加到/ app/assets/stylesheets然后还添加了:

//= require bootstrap
Run Code Online (Sandbox Code Playgroud)

到application.css - 然后我在本地进行了资产的预编译

它似乎工作正常,但一些样式并没有完全通过,我认为这是因为主动管理员的css覆盖它.

我的理解是应用程序将css资产编译到应用程序css公共资产中,应用程序在运行时使用该文件.

我需要以某种方式将两者分开并使其使用twitter bootstrap css作为前端的主要css,并且可能告诉它不要在前端使用活动管理员的css文件.

最好的方法是什么?

css ruby-on-rails asset-pipeline twitter-bootstrap

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

如何调试无法忍受的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万
查看次数