Tag: 资产管道

Rails资产管道不包括application.js清单中的必需文件

rails资产管道不包括application.js中所需的文件。 呈现给浏览器的唯一javascript文件是application.js,并且require行不会被编译为包含标记,因为它们应该是: // This is a manifest file that’ll be compiled into application.js, which will include all the files // listed below. // // Any JavaScript/Coffee file within this directory, lib/assets/javascripts, vendor/assets/javascripts, // or vendor/assets/javascripts of plugins, if any, can be referenced here using a relative path. // // It’s not advisable to add code […]

如何让Rails 3资产更快地预编译?

我有一个正在运行的Rails 3.2.1应用程序,我正在通过Capistrano deploy/assets来运行deploy:assets:precompile任务。 一切都很好,除了编译本身很慢。 我没有那么多CSS和JavaScript(总共大约8200行)。 编译资产通常需要大约1-3分钟,大约占整个部署时间的90%。 有没有办法优化这个? 也许使用不同的程序来编译资产或以某种方式优化它? 我正在Linode 512上运行应用程序1.9.2-p290,Rails 3.2.1并使用therubyracer gem如果有任何相关性。

Rails指定javascript文件的加载顺序?

在我的application.js文件中,我有: //= require jquery //= require jquery_ujs //= require underscore //= require backbone //= require_tree . // //= require .//community_app // //= require_tree ../templates/ //= require_tree .//models //= require_tree .//collections //= require_tree .//views //= require_tree .//routers 但生成的html不遵守此顺序: CommunityApp 在模型之前加载集合,这会在前端出现错误。 我怎样才能使它以特定的方式加载js文件? 谢谢

Rails 4.0.3使用asset_sync生成不正确的资产路径

我之前已多次使用asset_sync gem取得了巨大成功,但在Rails 4.0.3项目中使用它似乎导致了问题。 资产被上传,散列和gzip到目标目录(我只是使用默认的’assets’),但是当在临时/生产环境中运行应用程序时,路径是不正确的。 他们采取以下forms: S3_DOMAIN.com/stylesheets/application.css 代替: S3_DOMAIN.com/assets/application-HASH.css 还有其他人遇到过这个问题吗? 我发现反转此行为的唯一方法是将config.assets.compile设置为true,但这在生产环境中不起作用。 以下是相关的配置文件: ## environments/staging.rb config.serve_static_assets = false config.assets.compress = true config.assets.js_compressor = :uglifier config.assets.css_compressor = :sass # Have to set this to true to make asset_sync generate the correct links config.assets.compile = false config.assets.digest = true config.assets.enabled = true config.assets.initialize_on_precompile = true config.action_controller.asset_host = “//#{Figaro.env.fog_directory}.s3.amazonaws.com” config.action_mailer.asset_host […]

开发模式下的资产编译速度慢

我有一个包含数百个咖啡脚本文件的大型rails应用程序。 有时当我对coffeescript文件进行微小更改或切换分支时,整个资产都被预编译,我必须等待很长时间才能加载页面: Started GET “/assets/application.js” for 127.0.0.1 at 2013-01-11 19:39:45 +0100 Compiled sprockets/commonjs.js (0ms) (pid 18142) Compiled jquery.js (2ms) (pid 18142) Compiled jquery_ujs.js (0ms) (pid 18142) Compiled underscore.js (0ms) (pid 18142) Compiled backbone.js (0ms) (pid 18142) Compiled backbone_rails_sync.js (0ms) (pid 18142) Compiled handlebars.runtime.js (0ms) (pid 18142) Compiled moment.js (0ms) (pid 18142) …and so on 我使用以下资产配置config/development.rb […]

资产编译崩溃在服务器环境中:“NoMethodError:未定义的方法`’为nil:NilClass”

我一直在为这一个拔头发。 我一直与资产管道关系不好,总是给我带来麻烦……今天又来了…… 当我尝试在本地编译我的资产时,一切都很好: $ RAILS_ENV=production rake assets:precompile –trace 但是当我使用Capistrano进行部署时: cd /var/www/xxx/releases/20140717164232 && ( RAILS_ENV=production bundle exec rake assets:precompile ) 它崩溃时出现以下错误: rake aborted! NoMethodError: undefined method `[]’ for nil:NilClass (in /var/www/xxx/releases/20140717164232/app/assets/stylesheets/application-sign-in.css) /var/www/xxx/shared/bundle/ruby/2.1.0/gems/sprockets-2.11.0/lib/sprockets/sass_functions.rb:63:in `sprockets_context’ 我真的不知道如何调试这个..本地我无法重现它,在我的服务器上错误只是没有指向我任何地方.. 我已经搜索了错误并尝试了几件事,但没有任何帮助。 有人说通过更新来消除错误..或者通过在sass-rails gem之前添加sprockets gem。 我的项目设置如下: 带有gem的常规rails 4 app,其中包含代表模板的资产。 我使用以下行来确保编译所有内容: config.assets.precompile += %w(*.png *.jpg *.jpeg *.gif *.css *.js *.eot *.woff *.ttf *.svg) 谁知道如何解决这个问题,或者如何调试它? […]

在推送到heroku之后,我的大多数资产突然返回404

我已经部署了这个应用程序(rails 3.2.11)一百万次了,我没有搞乱任何设置,但现在我受到了欢迎: 为什么这发生在蓝色之外? 我的application.rb包括config.assets.enabled = true – 从来没有任何问题。 事实上,在端口3000上本地运行它似乎没有任何问题。 在今天早上部署到heroku之后,它似乎没有加载内部/ assets / 有趣的是,在复制文件以尝试并创建一个新应用程序后, git commit产生您期望的所有内容,以及我认为可能与之相关的LONG列表: 编辑:有趣的是,一些资产已经加载,如徽标和背景,但其余的,你可以看到返回404。

Ruby On Rails 3.1 – 资产管道 – 资产呈现两次

大更新 : 当我终于找到真正的解决方案时,我也发现了真正的问题。 正如我在这里写下了很多无用的信息,考虑到真正的问题,我正在对问题进行大量更新,以便其他人可以轻松找到正在发生的事情,并且可以看到解决方案。 问题 :这是因为Rails 3.1的资产管道 实际上……这很简单:资产在开发环境中呈现两次。 做了很多调查,我发现我的Rails 3.1服务器正在从“app / assets”和“public / assets”文件夹中呈现资产。 所以,我把每个.js和.css文件都复制了,这打破了我所有的javascript动画(是的……绑定两次相同的事件和处理程序到同一个元素不是你想要的……通常)。 如果问题突然出现,那是因为我必须运行“rake assets:precompile”来部署我的应用程序。 从那时起,当我的应用程序在开发中运行时,服务器正在呈现静态预编译资产和动态预编译资产。 解决方案(现在有一个更好的几行) – 但你仍然可以阅读它 第一个:我只需要从公共文件夹中删除所有预编译资产。 更好的一个:将config.serve_static_assets = false添加到development.rb,这将阻止从/ public / assets加载文件。 另外,不要忘记重置浏览器缓存。 [编辑:2012年7月20日] 高级一:由于这些静态资产,我最近遇到了一个新问题。 您知道,当您使用paperclip或其他某些gem时,他们会将您的图像添加到某个系统子文件夹的公共文件夹中,因为如果您想使用capistrano部署应用程序,则会更好。 嗯,那太好了,但是! 当我们添加config.serve_static_assets = false时,这些图像不会在开发中呈现,如果你想对它们做一些css则不好。 所以! 该怎么办? 事实上,你必须像开发一样开启静态资产: # Expands the lines which load the assets config.assets.debug = true config.serve_static_assets = true 然后,为防止rails两次渲染其他资源(预编译的资源),只需执行以下命令: rake […]

Heroku rails 3.1 app – 在本地编译资产与在slug编译期间编译资产

我正在Heroku Cedar堆栈上运行rails 3.1 app,它支持资产管道。 Heroku 列出了3种编译资产的方法 在本地编译资产。 在slug编译期间编译资产。 在运行时编译资产。 显然#3对性能有害,而Heroku文档也建议不要这样做。 但我不确定#1和#2之间哪个更好。 #1要求您运行rake assets:precompile并在git中包含您的public/assets文件夹。 你的slug会更大,但我认为部署网站的停机时间会更短。 但更大的段塞大小意味着应用程序启动速度较慢,所以可能是一个洗牌。 由于在Heroku端进行了预编译,#2将使部署更新需要更长的时间。 但是,你会有一个较小的slu and,而且管理/记忆的次数较少。 我的问题是 – 哪个选项(#1或#2)最适合制作,为什么? 到目前为止它看起来像选项#2但我想确保我不会忽视某些东西。

使用Rails 3.1引擎的资产

如何在Rails 3.1中的引擎中提供资产? 它们应该放在哪里,是否可以自动包含在内? ( 最初由Tomas Celizna提出 )