gpt4 book ai didi

ruby-on-rails-3.1 - Assets 预编译缺少独立的 javascript/css

转载 作者:行者123 更新时间:2023-12-04 15:14:43 28 4
gpt4 key购买 nike

我有一种偷偷摸摸的感觉,我错过了一些明显的东西:

我跑了
RAILS_ENV=production bundle exec rake assets:precompile
在推送到 Heroku 之前预编译我的 Assets 。在看 /public/assets显示 application.jsapplication.css list 成功编译,但 我的独立文件都没有预编译 :

admin.js.coffee
blog.js.coffee.erb
[ ... several more similarly named ... ]
twitter.js.coffee.erb


admin.css.less
home.css.less
public.css.less

都从 /public/assets 丢失.

我认为 Rails 会预编译 application.js/.css 文件,以及其他不以 js/css 结尾的文件:

The default matcher for compiling files includes application.js, application.css and all files that do not end in js or css:

[ /\w+\.(?!js|css).+/, /application.(css|js)$/ ]


来自: http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

我不想手动更新 config.assets.precompile每次 Assets 文件名更改时。我是否遗漏了一些可以让 Rails 预编译这些 Assets 的东西?

更新

基于@Richard Hulse 在下面的回答,我通过为独立 Assets 创建了一个单独的 list 文件来测试它(即,我将 twitter.js.coffee.erb 重命名为 twitter-include.js.coffee.erb 并添加了 twitter.js 和一个 //= require 拉入重命名的原始文件) . 这似乎有效。

一定有比这个更干净的方法 ,而且似乎是 与 Rails 指南相矛盾 以上引用。该指南说唯一不会编译的文件是 .js 或 .css 文件 不是 命名 application .我看到的是 只有 .js 或 .css 被直接编译(即不通过 list ) - 没有别的。

最佳答案

两件事情:

如果这些文件包含在您的应用程序 list 中,则它们将包含在站点的应用程序文件中。

两个应用程序 list 中都应该有一行:require_tree ,这将自动为您提取所有 Assets 。是在这些文件中吗?

编辑回复编辑:

我的结构方式是有两组 list 。标准的 (application.css/.js) 是公开的。管理集用于管理页面。在 admin.js/.css list 中包含您想要的所有内容,并将这些文件添加到预编译数组中:

config.assets.precompile += ['admin.js', 'admin.css']

这将允许您在两个组之间共享代码。例如,您可以在两者中都包含 jquery,但只能在 admin 中包含 jquery_ujs。在您的管理部分布局中,只需包含管理 list 而不是应用程序 list 。

在实践中,您将在开发站点时将新文件添加到应用程序或管理 list 中,并且您不必更改预编译配置。

一旦您到了添加大量 Assets 、管理部分等的地步,预计事情会变得更加复杂,并且您必须明确说明 list 中包含的内容和顺序(而不是 require_tree) .

关于ruby-on-rails-3.1 - Assets 预编译缺少独立的 javascript/css,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684191/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com