问题标签 [rails-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 投票
14 回答
55195 浏览

ruby-on-rails - 如何在 Ruby on Rails 3.1 中禁用资产管道(链轮)消息的日志记录?

默认情况下,在 Ruby on Rails 3.1 (RC1) 下,Sprockets 在 (dev) 日志中往往非常冗长:

我想降低详细程度或完全禁用它。

我假设有一种干净的方法来禁用或减少日志记录的详细程度,方法是在其中一个environment.rbdevelopment.rb类似的配置行中添加一个配置行,以config.active_record.logger = nil使 ActiveRecord SQL 语句静音。

0 投票
1 回答
662 浏览

ruby-on-rails - Rails 链轮 3.0 find_asset

我曾经使用rails-sprockets2.x,并在电子邮件布局模板中使用以下内容来包含css

Rails.application.assets.find_asset('file').to_s.html_safe

但是,这在 3.x 中不再有效,rails-sprockets建议使用

Rails.application.assets_manifest.assets['file.css']

这仅返回文件的字符串名称(如果存在)。我将如何获取文件的主体以便可以在视图中输出它?

0 投票
1 回答
361 浏览

ruby-on-rails - 如何使用 sprockets 将 rails 资产依赖项添加到环境变量中?

我做了以下js.erb:

我希望链轮在web_socket_server_url更新时重新生成资产。

我尝试使用depend_on,但它只适用于文件。我还尝试在初始化程序中添加一个配置块(我希望在更改时重新加载所有资产,而不仅仅是相关的):

在看到 sprocket-rails https://github.com/rails/sprockets-rails/commit/9a61447e1c34ed6d35c358935bcae4522b60b48d的这个提交后,我有了这个想法

但这并没有像我预期的那样奏效。

理想情况下,我希望能够在我的初始化程序中注册依赖解析器,然后添加//= depend_on 'web-socket-server-url'我的资产,这样只有资产会被重新加载。

作为一种解决方法,我可能会在 HTML 标记中添加配置,并在不使用 ERB 的情况下进入 javascript,但感觉不太好。

我怎么能用 sprockets 完成这项工作?

0 投票
0 回答
112 浏览

ruby-on-rails - 如何链接 Sprockets 3+ 处理器?

我正在尝试制作一个小宝石来呈现一些 javascript 并将其传递给 Sprocket 的 JST 处理器。所以文件看起来像foo.jst.bar然后你可以通过调用它JST[foo]()

我无法弄清楚处理器链接是如何发生的。我认为它会通过注册的 mime 类型自动处理?由于 JST 处理器已注册处理application/javastcript+function(请参阅:https ://github.com/rails/sprockets/blob/master/lib/sprockets.rb#L169 ),我需要做的就是像这样注册我的处理器:

这没有做任何事情。如果我忘记了链接并定义了我自己的JST命名空间,它就可以正常工作。我觉得我错过了一些不链接到 JSTProcessor 的超级明显的东西。

0 投票
0 回答
742 浏览

ruby-on-rails - Rails 4.2.6 链轮在开发中不起作用

我不确定为什么会发生这种情况,但这让我发疯。我正在尝试将 rails 更新4.1.1到最新的稳定版本4.2.6。更新没有发生任何奇怪的事情,资产现在列在 assets.rb 中。

我发现它在将sprocketsgem更新为 时会刹车3.5.2,因此将其强制恢复为2.11.0,但这不是解决方法。

但是在开发模式下,config.assets.debug = true头文件没有链接样式表,为什么?!

如果我尝试rake assets:precompile创建的文件是空的。我忘记了什么吗?

标题

和布局;

Rails.application.config.assets.precompile += %w( default.css )在资产.rb

0 投票
3 回答
801 浏览

ruby-on-rails - Sprockets 错误 Sprockets::NotImplementedError: 自定义asset_path 助手未实现

尝试在本地预编译我的资产时,我得到以下信息

我一生都无法弄清楚为什么会发生这种情况-任何有关如何解决的建议都将不胜感激!

更新

仅当我添加具有以下内容的初始化程序时,我才能进行预编译:

但是,如果我这样做,当我推送到我的暂存环境时,来自 Bootstrap 的字形图标有一个空路径,因此不会渲染:

更新 2

如果我将初始化程序修改为以下内容,我会在我的预编译引导资产中为 glypicons 获得一个路径,但它不是预编译的 Glyphicon 文件,而是非编译的资产路径:

这是我的 gemfile.lock ,因为它与资产/链轮宝石有关:

0 投票
2 回答
1176 浏览

sprockets - 如何从rails完全禁用turbo链接

我已经浏览了很多帖子和 turbolinks 文档,但我想我还没有完全掌握它。我正在尝试完全关闭 rails 5 应用程序中的 turbolinks。这就是我的做法

  1. 已移除gem 'trubolinks'
  2. //=require turbolinks从 application.js中删除所有出现的
  3. data-turbolinks-trackstylesheet_link_tag和删除javascript_include_tag

application.html.erb 现在看起来像这样

application.js 文件:

和 application.css

我在考虑使用data-turbolinks=falseon body 标签应该有助于禁用此布局中所有页面的它。但这并没有帮助,页面无法加载并出现错误

在主页的这一行

<%= image_tag("pages/home/xyz_logo.png", class: "img-responsive", alt: "Customer") %>

如果我查看堆栈跟踪,ActionView 总是依赖于 turbolinks:

看起来 sprockets 仍然需要 turbolinks js 或者 image_tag url 需要它。我不想最终data: { turbolinks: false }在每个链接或图像上添加一个。如何让这个工作?

0 投票
1 回答
328 浏览

ruby-on-rails-3.2 - 为生产预编译资产时,没有方法错误,[ ] 未定义 nil 类

在我的开发模式下,当我使用命令预编译应用程序的资产时

我收到以下错误

当我使用rails s命令在开发模式下运行我的服务器时,会出现一个错误,我认为这可能是导致预编译错误的原因,如下所示

我通读了 rails assets pipeline 和 sprockets,但似乎无法全神贯注并解决问题,因为我是 rails 框架的新手,任何方向或帮助将不胜感激。

解决方案 我已经编辑了文件

比如,从第 120 行开始,我在第 122 行添加了“puts 'path'”行,这样我就可以看到预编译错误来自的路径

我保存了文件然后再次运行

我看到我在 css 文件中使用了 sasss 辅助方法“image-url”,因此预编译器无法以某种方式访问​​该文件,我创建了一个扩展名为 css.scss 的新文件,这解决了我的问题,我可以'不能更好地解释它,因为我并不完全理解它,但设法从人们的经验,结帐,http ://guides.rubyonrails.org/asset_pipeline.html#css-and-sass 和How to reference images in Rails 4 中的 CSS

0 投票
0 回答
35 浏览

ruby-on-rails - Rails:查找已在生产中编译的资产

我正在开发一个遗留应用程序,我刚刚发现它config.assets.compile被设置trueproduction.rb

现在,虽然我们将在 staging 中对其进行测试,但如果可以的话,我想找到应该成为precompile数组一部分的所有资产。

我所做的是进入tmp/cache目录并环顾四周:

我发现了我所期望的文件legacy.js,我知道预编译中缺少该文件。我是否可能只需要将与我的域名匹配的文件添加到资产预编译中,然后就可以将其推送到生产环境,config.assets.compile = false或者我应该寻找其他地方/文件来修复。

我确实找到了一堆assets文件 - 像这样:

./assets/D1D/0F0/sprockets%2F663a54e3907dfc958d784233a6dd0e9a

并且其中的内容确实包含指向图像等的链接,但我可以看到那些指纹资产public/assets(是的,我们实际上是在生产中预编译资产)。还是这些 sprockets 文件中的任何一个都指向存在问题并且应该修复的问题?

我想我的问题是,我怎样才能最容易地找到任何丢失的资产,而不仅仅是设置标志、推送到暂存和点击。

0 投票
2 回答
458 浏览

javascript - 使用 Rails 时如何在清单文件中读取 Sprockets 指令?

Rails 新手,所以请多多包涵……我今天在研究资产管道时正在查看清单文件(application.js),并且很好奇这些指令是如何//= require jquery被读取的。这是 Sprockets 在后台做的事情吗?如何?为什么必须先注释掉指令,然后加上等号?如果我取消注释指令并在我的浏览器中加载 application.js 文件,我将不再看到 jquery 库内容。只是好奇这是如何在后台工作的。

另外,当我添加自己的自定义 css 样式表时,我是在 application.css 清单文件中添加一个 require 指令,还是添加样式表链接,例如<link rel="stylesheet" type="text/css" href="mystyle.css">?还是我两者都做?我假设我不应该直接在清单文件中添加 css ...

谢谢!