Tag: 链轮

如何在Heroku上使用Sprockets Rails插件?

我刚刚将我的Rails应用程序部署到Heroku,但使用Sprockets插件的Javascripts不起作用。 我明白这一点,因为我的Heroku应用程序是只读的,Sprockets不起作用。 我发现这个sprockets_on_heroku插件应该可以完成这项工作,但我真的不知道如何使用它: 我在config / environment.rb中添加了config.gem sprockets 我在.gems文件中添加了sprockets 我在Heroku上推了这些,并成功安装了Sprockets 我本地运行script/plugin install git://github.com/jeffrydegrande/sprockets_on_heroku.git并且插件已成功安装 在Heroku上没有任何改变,所以我尝试使用heroku plugins:install git://github.com/jeffrydegrande/sprockets_on_heroku.git插件在Heroku上heroku plugins:install git://github.com/jeffrydegrande/sprockets_on_heroku.git ,它返回了sprockets_on_heroku installed但是然后, heroku 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:在’load’中 来自/ opt / local / bin / heroku:19 我该怎么办? 凯文

如何在我的sprockets预处理的js文件(不是视图)中获取escape_javascript和其他帮助器?

我正在使用Rails 3.1和链轮的东西。 我想使用ERB预处理一个js文件,然后使用javascript_include_tag包含该文件。 它是从代码生成的,所以我用ERB预处理它,但是我无法从ActionView :: Helpers :: JavaScriptHelper获取类似escape_javascript的帮助器 假设我的文件名为dynamic.js.erb,它包含 obj = { name: “test”, tag: “” }; 如何阻止它产生错误: throw Error(“NoMethodError: undefined method `escape_javascript’ for #<#:0x116b2be18> (in /Users/me/site/app/assets/javascripts/dynamic.js.erb)”) 当我点击我的本地服务器并要求/assets/dynamic.js

有关创建自定义Sprockets处理器的文档?

我正在尝试为Rails创建一个sprockets预处理器,它在资产管道中找到.png.rb文件,并使用它们在我的应用程序中生成各种页面的png屏幕截图。 我已经阅读了很多这个主题,但我似乎找不到任何关于如何设置这个问题的简单文档。 请帮忙? 这是我到目前为止所拥有的: /initializers/sprockets.rb : require ‘screenshot_preprocessor’ Rails.application.assets.register_mime_type(‘screenshot/png’, ‘.png.rb’) Rails.application.assets.register_preprocessor(‘screenshot/png’, ScreenshotPreprocessor) /lib/screenshot_preprocessor.rb: class ScreenshotPreprocessor # What API do I need to provide here? # – What methods do I need to provide? # – What parameters does Sprockets pass me? # – What do I need to return to Sprockets? end

Rails资产最佳实践

我是Rails的新手,无法找出组织资产的最佳方法。 这个问题的目的是收集我的想法,征求意见,并随着时间的推移进化文档 – 也许有一天它可能是一个Rails指南。 (Rails Wiki似乎已经死了。)这将作为新手概念化的辅助,而不是参考,因此它将仅限于最常见的场景。 资产管道 – 概述 有关管道的目的,好处和内部工作方式的详细信息,请从本指南开始: http : //guides.rubyonrails.org/asset_pipeline.html我将仅在此总结与我的目的相关的位。 管道必要的原因是: 编译:将高级语言(ERb,Haml,Sass,LESS,CoffeeScript …)编译成纯CSS / JS。 该管道的额外好处是: 连接:将多个文件合并为一个以提高客户端性能。 缩小:删除空格和其他巧妙的优化以减小文件大小。 指纹识别:在文件名中添加了文件内容的MD5哈希值,以强制缓存在更改时再次获取文件。 资产管道 – 默认文件系统布局 app|lib|vender/assets/ – 用于将由管道处理的文件。 app/assets/ – 专门针对您为应用程序创建的文件。 lib/assets/ – 专门用于为跨多个应用程序共享而创建的文件。 vendor/assets/ – 专门用于其他人创建的文件,例如jQuery和Twitter Bootstrap(虽然它们经常由gem提供,而不是直接导入/ vender)。 public/ – 此处的文件保留原样,可直接从您的Web应用程序的根路径(’/’)获取。 资产管道 – 默认文件和行为 应用程序/资产/ JavaScript的/ application.js中 //= require jquery //= require jquery_ujs //= […]

rails生成rspec:install – 没有这样的文件加载–sprockets / railtie(LoadError)

我是RoR-Beginner,我开始使用RoR-Tutorial学习它。 其实我正在本章( http://ruby.railstutorial.org/chapters/static-pages#top )并尝试安装rspec。 但每当我尝试使用“rails g rspec:install”时,我收到此错误消息: C:\Sites\rails\rails_projects\sample_appp>rails g rspec:install C:/Sites/rails/rails_projects/sample_appp/config/application.rb:8:in `require’: no such file to load — sprockets/railtie (LoadError) from C:/Sites/rails/rails_projects/sample_appp/config/application.rb:8:i n `’ from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/railties-3.0.9 /lib/rails/commands.rb:15:in `require’ from C:/RailsInstaller/Ruby1.9.2/lib/ruby/gems/1.9.1/gems/railties-3.0.9 /lib/rails/commands.rb:15:in `’ from script/rails:6:in `require’ from script/rails:6:in `’ 有人有意帮助我吗? 我已经尝试在application.rb中对它进行注释,或者在gemfile中明确提及它。 但我仍然收到此错误消息。 如果有人能帮助我会很棒。 顺便说一句。 我的操作系统是Windows XP,我使用的是Ruby版本1.9.2.p290和Rails版本3.1.0.rc6。

如何覆盖资产的gem资产中的单个文件:precompile?

情况 我使用带有自己的JavaScript和样式表资源的gem。 此gem使用标准的application.js和application.css清单来要求其所有资产: [gem]/app/assets/javascripts/gem_name/application.js require_tree . [gem]/app/assets/javascripts/gem_name/backoffice/menu.js … some JavaScript code … [gem]/app/assets/javascripts/gem_name/backoffice/forms.js … some JavaScript code … 在开发模式中,我可以通过将它们放在[my_app]/app/assets文件夹中来覆盖单个资产文件,例如: [my_app]/app/assets/javascripts/gem_name/backoffice/menu.js 然后在Rails中配置的加载路径确保[my_app]/app/assets文件覆盖[gem]/app/assets 。 但是当我使用rake assets:precompile ,覆盖文件menu.js不会替换gem中的原始文件 。 已编译的application.js包含原始menu.js中的代码。 演示 请参阅此测试应用程序的行为: https : //github.com/widescape/AssetCompileTest 注意事项 到目前为止,我发现require_tree 只在当前文件的目录中查找文件,并且不会查看多个加载路径(例如app / assets或vendor / assets)。 因此,如果当前文件是[gem]/app/assets/javascripts/gem_name/application.js ,则Sprockets#require_tree将仅在[gem]/app/assets/javascripts/gem_name/查找更多文件,并且不会使用其他文件加载路径,如[my_app]/app/assets/… 我不愿意将gem中的所有资产文件复制到我的app / assets中,只能覆盖一个文件。 并且分支gem来定制单个文件也没有很大的吸引力。 还有别的办法吗? 注意:我知道我可以创建一个自定义JavaScript文件menu_patched.js ,它覆盖原始文件中定义的对象和方法,并将其放置,以便在调用原始对象和方法之前应用其定义(猴子修补JavaScript样式)。 但我在这里寻找更清洁的解决方案。

Rails 3.1:公共目录不再提供js资产。 如何在加载页面后加载其他js文件?

我使用一个jQuery插件,在初始页面加载后从服务器加载另一个js文件。 由于所有js资产在Rails 3.1中连接,并且公共目录不用于提供js资产,我如何引用此文件? 我把它放在哪里?

链轮中的链轮意味着什么

所以,我才刚刚意识到我完全不知道什么链轮在轨道上。 当使用bootstrap或实现时,请求在application.js文件中包含sprocket (bootstrap-sprocket或materialize-sprocket)。 我搜索的所有内容都谈到了资产管道,让我更加困惑。 根据ruby指南, 资产管道在技术上不再是Rails 4的核心function,它已从框架中提取到sprockets-rails gem中。 当我做bundle show sprockets-rails ,我得到了: /Users/Sunday/workspace/resilience/vendor/bundle/ruby/2.1.0/gems/sprockets-rails-2.3.1 这表明我至少拥有gem。 但我的困惑和我的问题是sprockets的重要性是什么,而不是sprockets-rails ,它使其他gem像bootstrap和materialize ,可能还有一些其他gem有sprockets ,特别是在他们的javascript文件中? 谢谢。

Ruby on Rails中的源映射通过链接器

我想在我正在研究的rails 3.2应用程序上添加源映射支持。 据我所知,Sprockets不支持生成源映射,并且从其github页面看起来该function计划为4.0。 我正在使用Sprockets 2.2,我认为猴子修补是唯一的方法。 主Sprockets模块下的模块处理可以访问js_compressor函数,该函数可以修补以生成单个文件的源映射。 但是,我不知道如何在JS文件组合时添加它。 我使用Uglifier 2.4作为压缩器。 该项目混合了CoffeeScript,JS和EJS文件。 所以,我认为这就是链轮将它们组合在一起的方式。 首先,它会将Coffeescript和EJS转换为JS,然后使用js_compressor压缩单个文件,然后将它们连接成组。 现在,由于组合到同一文件的多个文件的源映射是单个文件。 因此,我需要稍微更改编译过程,并在连接完成后使js_compressor在文件上运行。 那么,任何人都可以帮忙吗? 甚至解释链轮编译过程和使用的模块以及所涉及的function也会有很大帮助。 我不关心目前为CoffeeScript代码制作源地图文件。 即使映射到他们转换的JS文件也可以。 此外,如果有一些gem可以提供帮助,我想非常欢迎。

通过构建所有asset_path值来避免使用* .js.erb文件

因此,我希望避免使用ERB处理JavaScript文件,这样我就可以获得适当的资产路径,例如图像。 目前,这似乎是流行的方法: var myImage = “”; 当然,这需要将文件名更改为“* .erb”,以便进行处理。 我更倾向于将ERB丑陋与我项目中的一个点隔离,制作一个清单文件(例如“assets.js.erb”)来计算并提供我需要的所有资产路径。 我当然可以通过逐案解决来做到这一点: ASSETS = “my_image”: “” window.assetPath = (path) -> ASSETS[path] 但是,我真的只是编写一些ERB来递归我的所有asset_paths.asset_environment.paths并为我构建一个大对象文字清单,这样我真正的应用程序JavaScript就可以自信地调用: var myImage = assetPath(‘my_image’); 关于(1)是否有更容易的方法来做我错过的任何想法,或者(2)我如何完成对asset_path的所有潜在有效参数的asset_path ?