我一直在这里试图让资产在我的生产服务器上进行预编译(使用ruby 1.9.2和Rails 3.1.1进行简单的ubuntu安装,并使用新的链轮2.10尝试3.1.2RC) .
"require_tree参数必须是目录".我已经在堆栈上看到了与此相关的其他问题,但情况并不完全相同,并且所提出的解决方案都没有帮助 - 比如在子文件夹中创建存根文件,然后仅在该点相对引用.没运气.
最重要的是,当然,这在所有开发机器上都是完美的(mac具有相同的配置,甚至可以匹配宝石的宝石),在生产环境中.
这是我的/app/assets/javascript/application.js:
//= require ../../views/app/manifest
//= require_self
Run Code Online (Sandbox Code Playgroud)
不是很多.基本上只是指向应用程序区域的真实清单文件(是的,不完全是盒装香草Rails但是......)
这是我的观点/ admin(/views/app/manifest.coffee.js)中的存根清单:
# = require ./app
# = require_tree ./models
# = require_directory ./views <- or using require_directory, either would work fine.
Run Code Online (Sandbox Code Playgroud)
就像我说的那样,在开发环境中,没有任何问题.资产管道即时编译,一切都很好.运行,rake资产:在dev机器上预编译,也没有问题.
我把它发送到生产机器并运行完全相同的代码,我得到:
require_tree参数必须是目录
这里必须有一些细微的差别,我只是没有看到.任何帮助将非常感激!
ruby-on-rails production-environment ruby-on-rails-3 sprockets asset-pipeline
如何在Rails 3.1中的引擎中提供资产?它们应该放在哪里,是否可以自动包含在内?
有许多解决方案可用于创建自定义错误处理页面,但Rails 4几乎没有:
鼓励人们修改的标准答案404.html中/public不适合我,因为我想用驻留在资产管道的CSS主题.有没有办法让html文件可以访问资产管道中定义的那些样式?如果没有,有没有办法创建一个可以访问管道的自定义错误处理程序?
今天我遇到了视图助手功能"提供".通过查看其手册,我仍然对它与"content_for"的区别感到困惑.
提供(name,content = nil,&block)
与content_for相同,但与流式传输一起使用时直接返回布局.换句话说,如果要在呈现给定模板时多次连接到同一缓冲区,则应使用content_for,否则,使用provide来告诉布局停止查找更多内容.
问题1:这对我来说非常抽象 - 任何人都可以通过给出一个示范性的例子来充实它吗?
问题2:使用资产管道,性能更好,为什么?
谢谢!
我们在Rails应用程序中使用React on Rails.部署时,资产预编译需要大约20分钟.
根据部署日志,似乎大部分时间花在预编译3.3MB javascript文件上.该文件"app.js"连接由webpack生成的两个文件:
# app.js
//= require vendor-bundle (250KB)
//= require app-bundle (3.3MB)
Run Code Online (Sandbox Code Playgroud)
考虑到app-bundle的大小,我们是否应该期待很长的预编译时间?或者,我们能改进吗?
作为补充说明,我们尝试直接编译app-bundle,而不是通过app.js要求它,并且花费了相同的时间.
更新:
我们最终将客户端代码分解为一个单独的create-react-app项目,该项目通过API连接到我们的Rails应用程序.我们的devops和部署管道的复杂性大大降低 - 没有真正深入挖掘这个错误.
我正在尝试将CSS框架Blueprint加载到我的Rails 3.1应用程序中.
在Rails 3.0+中,我在views/layouts/application.html.erb中会有类似的东西:
<%= stylesheet_link_tag 'blueprint/screen', 'application' %>
<%= stylesheet_link_tag 'blueprint/print', 'media' => 'print' %>
<!--[if lt IE 8]>
<%= stylesheet_link_tag 'blueprint/ie' %>
<![endif]-->
Run Code Online (Sandbox Code Playgroud)
但是,Rails 3.1现在使用SASS.加载这些Blueprint CSS文件的正确方法是什么?
目前,我在app/assets/stylesheets /中有蓝图目录
我的app/assets/stylesheets/application.css看起来像:
/*
* This is a manifest file that'll automatically include all the stylesheets available in this directory
* and any sub-directories. You're free to add application-wide styles to this file and they'll appear at
* the top of the compiled file, but it's generally better to create a new …Run Code Online (Sandbox Code Playgroud) 在CSS文件中,您可以使用以下命令获取图像资产的正确名称(带指纹):
background-image: url(image-url("rails.png"))
Run Code Online (Sandbox Code Playgroud)
但是你如何从JavaScript文件中做同样的事情呢?
我将Rails 3.0应用程序升级到Rails 3.1,其中涉及到这个
/*
*= require_self
*= require_tree .
*/
Run Code Online (Sandbox Code Playgroud)
在application.css文件中.但是,有一个admin.css文件现在覆盖了主应用程序css文件.
有没有办法排除admin.css文件被包含?在网站的管理部分,我手动包含admin.css文件,但我需要一种方法将其从用户界面中排除.
在Rails 5.1.3中,我在app/assets/images中更改徽标文件然后错误不知道要修复什么.谁知道?
The asset "logo.png" is not present in the asset pipeline.
Run Code Online (Sandbox Code Playgroud)
已经尝试重新启动rails,rails clean,rails或rails assets:precompile
这是我的config/initializers/assets.rb
# Be sure to restart your server when you modify this file.
# Version of your assets, change this if you want to expire all your assets.
Rails.application.config.assets.version = '1.0'
# Add additional assets to the asset load path.
# Rails.application.config.assets.paths << Emoji.images_path
# Add Yarn node_modules folder to the asset load path.
Rails.application.config.assets.paths << Rails.root.join('node_modules')
# Precompile additional assets.
# application.js, application.css, and …Run Code Online (Sandbox Code Playgroud) 命令"rake assets:precompile"对我来说非常慢.特别是在我的Amazon EC2 Micro生产服务器上,它没有很多处理器资源.在EC2上,我必须在每次部署期间等待1分钟或更长时间,仅用于此预编译任务.有没有办法让它更快?
以前我用Jammit来压缩/缩小css和js.Jammit在同一个网站和服务器上的工作速度提高了近10倍.
asset-pipeline ×10
ruby ×2
content-for ×1
image ×1
javascript ×1
rails-3.1 ×1
reactjs ×1
sprockets ×1
webpack ×1