问题标签 [sprockets]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
282 浏览

javascript - sprockets:我可以在两个不同的控制器中包含两个不同的 javascript 文件吗

我正在开发一个 ruby​​ on rails 应用程序。所有控制器都有一个 javascript 文件。但是,有两个控制器需要一个功能(称为 business.js)。现在仅仅因为两个控制器需要它,我不想把这个逻辑放在 application.js 中,这将使所有控制器都可以使用这个逻辑。

我希望页面只有他们必须需要的 javascript 文件,而不是额外的。

我想知道 sprockets 是否足够灵活以满足我的要求。从 sprocket 的文档中我无法得到任何明确的答案。

0 投票
1 回答
1391 浏览

ruby-on-rails - 如何在 Heroku 上使用 Sprockets Rails 插件?

我刚刚将我的 Rails 应用程序部署到 Heroku,但是使用 Sprockets 插件的 Javascripts 不起作用。

我明白,因为我的 Heroku 应用程序是只读的,所以 Sprockets 无法工作。我发现这个sprockets_on_heroku插件应该可以完成这项工作,但我真的不知道如何使用它:

  1. config.gem sprockets在 config/environment.rb 中添加
  2. sprockets在我的 .gems 文件中添加了
  3. 我在 Heroku 上推送了这些,并且 Sprockets 已成功安装
  4. 我在本地运行script/plugin install git://github.com/jeffrydegrande/sprockets_on_heroku.git,插件安装成功

Heroku 上没有任何变化,所以我尝试在 Heroku 上安装插件heroku plugins:install git://github.com/jeffrydegrande/sprockets_on_heroku.git,它返回sprockets_on_heroku installed但随后,aheroku restartheroku plugins命令将返回:

~/.heroku/plugins/sprockets_on_heroku/init.rb:1: 未初始化的常量 ActionController (NameError)

来自 /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/plugin.rb:25:in `load'

来自 /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/plugin.rb:25:in `load!'

来自 /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/plugin.rb:22:in `each'

来自 /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/plugin.rb:22:in `load!'

来自 /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/../lib/heroku/command.rb:14:in `run'

来自 /opt/local/lib/ruby/gems/1.8/gems/heroku-1.8.3/bin/heroku:14

来自 /opt/local/bin/heroku:19:in `load'

从 /opt/local/bin/heroku:19

我该怎么办?

凯文

0 投票
3 回答
709 浏览

javascript - Rails 3 的 Javascript 组织策略

我目前正在开发一个包含大量 javascript 代码的应用程序。我在每个页面/部分上编写内联 javascript 代码,但是大部分代码都在其他地方重新使用。我试图想办法将这些小脚本重构为更方便和可维护的东西。我使用的是 jQuery,所以我没有使用任何内置的 JS 生成器。

到目前为止,我想到了以下几点:

  • 只需将所有内容移入application.js并从新的 UJS 样式助手中受益。这仅比我现在拥有的好一点,因为我最终会得到一个又大又笨重的 JS 文件。

  • 使用js_erb gem,它提供了一种将 javascript 源代码写入app/javascripts并自动获取 i18n、HTML 模板和编译的方法。

  • 使用sprockets-rails这似乎也是一个不错的选择,即使我从未尝试过,而且我不确定它是否与 rails3 兼容。

您对此类主题有任何经验/建议吗?

0 投票
4 回答
908 浏览

ruby-on-rails-3 - 如何在导轨边缘使用链轮玩道场?

Rails 3.1 edge 使用 sprockets 来处理 .js 和 .scss 文件。Sprocket 使用注释来处理依赖关系。

我将三个文件夹(dojo dijit dojox)放在 vendor/assets/javascripts 中。然后在 app/assets/javascripts/application.js 添加一行 //= require dojo/dojo console.log(dojo);

现在 dojo 已经被合并到 application.js 中。但是dojo本身有依赖系统。当我需要更多的 dojo 模块时。它找不到正确的路径。dojo.require("dojox.grid.DataGrid"); // webkit 控制台中的错误:错误:无法加载 'dojox.grid.DataGrid'; 最后尝试 '../dojox/grid/DataGrid.js' // Rails 服务器日志中的错误:在 4 月 16 日星期六 01:26 开始 GET "/undefined../dojox/grid/DataGrid.js" for 127.0.0.1: 05 +0800 2011

这是两个不同的依赖系统。我怎样才能把它们放在一起?

0 投票
4 回答
4985 浏览

ruby-on-rails-3.1 - 如何注释掉rails 3.1资产需求声明

是否可以在新的 app/assets/application.js 文件中注释掉这一行?如果是这样,怎么做?

我的意思是,它已经被注释掉以避免被误解为 CoffeeScript 或 JavaScript,但它显然仍然是有目的的。

0 投票
1 回答
2177 浏览

ruby-on-rails - Rails 3.1 & Sprockets & 已编译的 JS 文件

因此,只需使用 Sprockets 资产管道试用 Rails 3.1-rc1:

我跑rake assets:precompile

我得到 /public/assets 目录和 application.js 文件的 MD5 哈希:

但问题是这样的:

当我更新我的 JS 并运行时,rake assets:precompile我会得到更多的 JS 文件,它不会删除旧的。

我注意到它是如何工作的——浏览器只选择第一个,我必须手动删除旧的。这似乎不像它应该如何工作。

只是一个侧面的抱怨:似乎rake assets:precompile每次我改变一些东西时我都必须跑步。这是痛苦的。

(我想需要一些关于这一切如何工作的文档)。

谢谢。

0 投票
2 回答
1702 浏览

ruby-on-rails - 如何使用 Sprockets 架构在 Rails 3.1 中引用 JQuery 插件中的文件?

Plupload插件就是一个很好的例子。这是添加到vendor目录的插件列表:

与其将这些文件重新定位到各种样式表、javascript 和图像目录中,不如将它们留在原处并使用 Sprockets 的 require 指令引用它们。这是如何完成的,尤其是对于图像文件和其他资产,如 .swf 和 .xap?

0 投票
2 回答
711 浏览

ruby-on-rails - Rails 3.1beta Sprockets 找到图像但图像不显示?

我不确定解释这一点的最佳方式,我已经在 Windows 7 上安装了带有 Ruby 1.9.2 的 Rails 3.1beta,创建了一个具有这些路由的新应用程序:

sass 的一个例子是:

当请求路由时:

图片位于 app/assets/images/summit-logo.png

关于为什么 Sprockets 似乎找到它但没有显示的任何想法?

谢谢!

0 投票
5 回答
11158 浏览

ruby-on-rails - 如何在 Rails 3.1 中管理 CSS 样式表资产?

我只是在学习 Rails 3.1 中的新资产管道。我遇到的一个特殊问题是 Sprockets 只是将所有找到的 CSS 样式表混合到一个庞大的样式表中。我理解为什么这比手动合并样式表和缩小生产更有利。但我希望能够有选择地级联样式表,而不是将所有规则都混在一起。例如,我想要:

大师.css

由 Rails 应用程序中的所有页面加载,但我想要

admin.css 仅由管理部分/命名空间中的页面/视图加载。

我怎样才能利用 Rails 3.1 结合样式表并将它们缩小以用于生产的好方法,同时又具有以前的灵活性,即每个布局只能加载某些样式表组合?

或者这应该通过在布局中向 body 标签添加一个类来完成 -

身体类="管理员"

然后根据需要定位样式规则。使用 SASS 范围选择器这可能是一个合理的解决方案。

0 投票
6 回答
2087 浏览

ruby-on-rails - Rails 3.1 和 sprockets 让使用 firebug 进行调试变得更加困难?

在 Rails 3.1 中,Sprocket用于管理资产并将它们打包到单个文件中。总的来说,这并不是一个坏主意。

正如从外部来源引用的那样,它解释了手头的问题:

这种方法的一个问题是它可能使调试变得更加困难,如果您必须查看生产中的“连接” CSS 文件以了解包含哪些代码而不包含哪些代码,那么与仅包含哪些代码相比,更难知道来自哪里原始源代码文件。

一种解决方案是有一种方法可以轻松地在“串联”和“正常”模式之间切换(也许已经有可能,我不知道),这样正常的开发就不会受到阻碍。但是你必须求助于大的连接文件在生产中进行调试。

在 Rails 3.0.X 中,我们的设计人员可以使用 Firebug 轻松定位 CSS 设置,这将直接指示文件和行号,因为所有 CSS 文件都是独立的,而不是打包成一个。

还是我错过了重点?