问题标签 [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.
javascript - sprockets:我可以在两个不同的控制器中包含两个不同的 javascript 文件吗
我正在开发一个 ruby on rails 应用程序。所有控制器都有一个 javascript 文件。但是,有两个控制器需要一个功能(称为 business.js)。现在仅仅因为两个控制器需要它,我不想把这个逻辑放在 application.js 中,这将使所有控制器都可以使用这个逻辑。
我希望页面只有他们必须需要的 javascript 文件,而不是额外的。
我想知道 sprockets 是否足够灵活以满足我的要求。从 sprocket 的文档中我无法得到任何明确的答案。
ruby-on-rails - 如何在 Heroku 上使用 Sprockets Rails 插件?
我刚刚将我的 Rails 应用程序部署到 Heroku,但是使用 Sprockets 插件的 Javascripts 不起作用。
我明白,因为我的 Heroku 应用程序是只读的,所以 Sprockets 无法工作。我发现这个sprockets_on_heroku插件应该可以完成这项工作,但我真的不知道如何使用它:
- 我
config.gem sprockets
在 config/environment.rb 中添加 - 我
sprockets
在我的 .gems 文件中添加了 - 我在 Heroku 上推送了这些,并且 Sprockets 已成功安装
- 我在本地运行
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 restart
或heroku 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
我该怎么办?
凯文
javascript - Rails 3 的 Javascript 组织策略
我目前正在开发一个包含大量 javascript 代码的应用程序。我在每个页面/部分上编写内联 javascript 代码,但是大部分代码都在其他地方重新使用。我试图想办法将这些小脚本重构为更方便和可维护的东西。我使用的是 jQuery,所以我没有使用任何内置的 JS 生成器。
到目前为止,我想到了以下几点:
只需将所有内容移入
application.js
并从新的 UJS 样式助手中受益。这仅比我现在拥有的好一点,因为我最终会得到一个又大又笨重的 JS 文件。使用js_erb gem,它提供了一种将 javascript 源代码写入
app/javascripts
并自动获取 i18n、HTML 模板和编译的方法。使用sprockets-rails这似乎也是一个不错的选择,即使我从未尝试过,而且我不确定它是否与 rails3 兼容。
您对此类主题有任何经验/建议吗?
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
这是两个不同的依赖系统。我怎样才能把它们放在一起?
ruby-on-rails-3.1 - 如何注释掉rails 3.1资产需求声明
是否可以在新的 app/assets/application.js 文件中注释掉这一行?如果是这样,怎么做?
我的意思是,它已经被注释掉以避免被误解为 CoffeeScript 或 JavaScript,但它显然仍然是有目的的。
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
每次我改变一些东西时我都必须跑步。这是痛苦的。
(我想需要一些关于这一切如何工作的文档)。
谢谢。
ruby-on-rails - 如何使用 Sprockets 架构在 Rails 3.1 中引用 JQuery 插件中的文件?
Plupload插件就是一个很好的例子。这是添加到vendor
目录的插件列表:
与其将这些文件重新定位到各种样式表、javascript 和图像目录中,不如将它们留在原处并使用 Sprockets 的 require 指令引用它们。这是如何完成的,尤其是对于图像文件和其他资产,如 .swf 和 .xap?
ruby-on-rails - Rails 3.1beta Sprockets 找到图像但图像不显示?
我不确定解释这一点的最佳方式,我已经在 Windows 7 上安装了带有 Ruby 1.9.2 的 Rails 3.1beta,创建了一个具有这些路由的新应用程序:
sass 的一个例子是:
当请求路由时:
图片位于 app/assets/images/summit-logo.png
关于为什么 Sprockets 似乎找到它但没有显示的任何想法?
谢谢!
ruby-on-rails - 如何在 Rails 3.1 中管理 CSS 样式表资产?
我只是在学习 Rails 3.1 中的新资产管道。我遇到的一个特殊问题是 Sprockets 只是将所有找到的 CSS 样式表混合到一个庞大的样式表中。我理解为什么这比手动合并样式表和缩小生产更有利。但我希望能够有选择地级联样式表,而不是将所有规则都混在一起。例如,我想要:
大师.css
由 Rails 应用程序中的所有页面加载,但我想要
admin.css 仅由管理部分/命名空间中的页面/视图加载。
我怎样才能利用 Rails 3.1 结合样式表并将它们缩小以用于生产的好方法,同时又具有以前的灵活性,即每个布局只能加载某些样式表组合?
或者这应该通过在布局中向 body 标签添加一个类来完成 -
身体类="管理员"
然后根据需要定位样式规则。使用 SASS 范围选择器这可能是一个合理的解决方案。
ruby-on-rails - Rails 3.1 和 sprockets 让使用 firebug 进行调试变得更加困难?
在 Rails 3.1 中,Sprocket用于管理资产并将它们打包到单个文件中。总的来说,这并不是一个坏主意。
正如从外部来源引用的那样,它解释了手头的问题:
这种方法的一个问题是它可能使调试变得更加困难,如果您必须查看生产中的“连接” CSS 文件以了解包含哪些代码而不包含哪些代码,那么与仅包含哪些代码相比,更难知道来自哪里原始源代码文件。
一种解决方案是有一种方法可以轻松地在“串联”和“正常”模式之间切换(也许已经有可能,我不知道),这样正常的开发就不会受到阻碍。但是你必须求助于大的连接文件在生产中进行调试。
在 Rails 3.0.X 中,我们的设计人员可以使用 Firebug 轻松定位 CSS 设置,这将直接指示文件和行号,因为所有 CSS 文件都是独立的,而不是打包成一个。
还是我错过了重点?