背景:我希望在我的应用程序中使用freebase建议.
我打算#location使用coffeescript 为输入添加自动完成:
$ ->
$("#location").suggest type: "location"
Run Code Online (Sandbox Code Playgroud)
require_tree我的application.js文件中的资产管道将包含哪些内容:
//= require jquery
//= require jquery_ujs
//= require modernizr
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
我必须复制suggest.min.js到app/assets/javascripts并要求其为
//= require suggest.min
Run Code Online (Sandbox Code Playgroud)
或者我可以直接从其公开网址中提出要求吗?
javascript freebase jquery-ui ruby-on-rails-3 asset-pipeline
好的,当我尝试使用资产管道时,我收到此错误.我不明白是什么导致了它.
Sprockets::Helpers::RailsHelper::AssetPaths::AssetNotPrecompiledError in Photos#show
Showing .../app/views/photos/_photo_view.html.haml where line #2 raised:
jquery.autocomplete isn't precompiled
Extracted source (around line #2):
1: - content_for :scripts do
2: = javascript_include_tag 'jquery.autocomplete'
Run Code Online (Sandbox Code Playgroud)
但是,这是预先编译的.我rake assets:precompile RAILS_ENV=production在启动服务器之前跑了,在我的public/assets目录中我有文件:jquery-5550a245a55b28927b5552cac182e612.autocomplete.js以及它.js.gz,它准确地反映在清单中:
#manifest.yml
---
application.js: application-4277323e3f7506b71f45c71e8a3a7c8f.js
jquery.autocomplete.js: jquery-5550a245a55b28927b5552cac182e612.autocomplete.js
jquery.cycle.all.min.js: jquery-183ef696b43944deaee5778d3094dbdd.cycle.all.min.js
jquery.fancybox.js: jquery-e52e44b2b4fb349bade9beb91461a810.fancybox.js
jquery.plupload.queue.js: jquery-f2e7f6ad7d2e5ca50235ed21f8d573cc.plupload.queue.js
jquery.tools.js: jquery-c53e304240fa56767fe0f2a00cb4bceb.tools.js
plupload.full.js: plupload-5dd26ee3fff6b627c19f196e9d1429dd.full.js
application.css: application-ce5217e1714cbc4e9c3ff6c5dfc9b221.css
fancybox.css: fancybox-9ee9c36f391086e4b0629b7df4042390.css
jquery.plupload.queue.css: jquery-661fbf3f503aa32ff11c004838c0820b.plupload.queue.css
jquery.js: jquery-4d23f0cfea862f56deb04f0a8ab1fcee.js
jquery.min.js: jquery-8a50feed8d29566738ad005e19fe1c2d.min.js
Run Code Online (Sandbox Code Playgroud)
有问题的javascript文件没有加载到我的application.js文件中,因为我只需要在一个视图上使用它,不要在应用程序的任何其他地方使用它.为了解释这一点(并修复链接尝试编译sass部分)我配置了我的预编译regexp,如下所示:
#environments/production.rb
config.assets.precompile = [/^[a-zA-Z]*\..*/]
Run Code Online (Sandbox Code Playgroud)
(上面的regexp预编译任何以字母字符开头的文件,并忽略以非字母字符开头的文件,如下划线).
有没有人能够了解导致这种情况的原因以及如何解决这个问题?资产管道让我脱掉了头发!
刚刚发现Rails.configuration.assets.digests在生产中返回nil.也许问题存在,由于某种原因,链轮没有找到manifest.yml.
我可能错了,但看起来sprockets在查找manifest.yml时没有在config中使用assets_host.
https://github.com/rails/rails/blob/3-2-stable/actionpack/lib/sprockets/railtie.rb#L38
我注意到我的资产似乎被编译了两次,这大大减慢了我的部署,因为这一步是最耗时的部分:
~/projects/rewportal(mapwidget ?) rake assets:precompile
/home/ruy/.rvm/rubies/ruby-1.9.3-p194/bin/ruby /home/ruy/.rvm/gems/ruby-1.9.3-p194@rewportal/bin/rake assets:precompile:all RAILS_ENV=production RAILS_GROUPS=assets
AssetSync: using /home/ruy/projects/rewportal/config/initializers/asset_sync.rb
AssetSync: using /home/ruy/projects/rewportal/config/initializers/asset_sync.rb
AssetSync: Syncing.
Using: Directory Search of /home/ruy/projects/rewportal/public/assets
Uploading: assets/application-5170f52c1dd49cb382d5135bee01d75e.js
[...]
Fetching files to flag for delete
Flagging 8 file(s) for deletion
Deleting: assets/active_admin-4ce46d089d4b0080e87c9abcb6fa6c97.css
[...]
AssetSync: Done.
Run Code Online (Sandbox Code Playgroud)
这是正常的吗?
当我预编译到其他环境(非生产)时,我可以看到每个资产的详细编译两次:
~/projects/rewportal(mapwidget ?) rake RAILS_ENV=qa assets:precompile --trace
** Invoke assets:precompile (first_time)
** Execute assets:precompile
/home/ruy/.rvm/rubies/ruby-1.9.3-p194/bin/ruby /home/ruy/.rvm/gems/ruby-1.9.3-p194@rewportal/bin/rake assets:precompile:all RAILS_ENV=qa RAILS_GROUPS=assets --trace
** Invoke assets:precompile:all (first_time)
** Execute assets:precompile:all
** Invoke assets:precompile:primary (first_time)
** Invoke assets:environment (first_time)
** Execute …Run Code Online (Sandbox Code Playgroud) 我是资产管道的新手,刚刚从Rails 3.0迁移过来.我正在努力让CKEditor进入管道,但是它的所有宝石都不清楚它们是如何工作的,并且很少或没有使用说明.
我更愿意在不使用gem的情况下执行此操作,因为我似乎只需要将源文件放入vendor/assets目录然后将其包含在内application.js.我已经尝试过,但是,当我预编译并推向生产时,似乎没有找到某些文件(editor.css例如),并且编辑器根本没有显示(只是空白区域).
的application.js
//= require jquery
//= require jquery_ujs
//= require ckeditor/ckeditor
//= require_self
Run Code Online (Sandbox Code Playgroud)
这是源文件vendor/assets/javascript/ckeditor/,并指向ckeditor.js.我只是不确定从哪里开始.此代码在开发中工作正常,但在生产中不起作用.我rake assets:precompile在添加并提交git之前运行,然后推送到heroku.
铁轨的快速问题在那里有所帮助......
使用Rails 3.0.x应用程序时,我是Guard和LiveReload的重度用户.但是,似乎在Rails 3.1中使用资产管道时,livereload guard不知道对Sass文件的更改应该触发向浏览器发送新的css.
是否有人使用LiveReload与Asset Pipeline?如果是这样,你是如何使它工作的?
谢谢!
我想使用普通的资产名称,例如在我的视图中app.js调用asset_path帮助程序时.在生产中,它使用缓存破坏名称,例如app-f73cf13e6f100eda6681381e7d3ae9eb.js.
有没有办法让正常的名字使用asset_path?
ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline
在我的开发沙箱中
RAILS_ENV=production rake assets:precompile
Run Code Online (Sandbox Code Playgroud)
需要4分钟才能完成.这是正常的吗?在heroku上花费超过10分钟来完成这项工作,有时会超时.有没有办法解决这个问题和/或加快速度?
UPDATE
我分析了编译的CSS和JS阶段
3.7 s js
175 s css
Run Code Online (Sandbox Code Playgroud)
这些数字是通过这里的仪器制作的
----------------------
/Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@gobbq/gems/sprockets-2.1.2/lib/sprockets/processing.rb
----------------------
266 # Assign a compressor to run on `application/javascript` assets.
267 #
268 # The compressor object must respond to `compress` or `compile`.
269 def js_compressor=(compressor)
270 expire_index!
271
272 unregister_bundle_processor 'application/javascript', :js_compressor
273 return unless compressor
274
275 register_bundle_processor 'application/javascript', :js_compressor do |context, data|
276
277 timeit "js" do
278 compressor.compress(data)
279 end
280
281 end
282 end
Run Code Online (Sandbox Code Playgroud)
和
----------------------
/Users/bradphelan/.rvm/gems/ruby-1.9.2-p180@gobbq/gems/sprockets-2.1.2/lib/sprockets/processing.rb
---------------------- …Run Code Online (Sandbox Code Playgroud) 我可以运行rake assets:precompile特定的JavaScript文件吗?
否则,完整的预编译将持续5分钟,并且快速更改JavaScript文件非常烦人.
我知道这可能是一个简单的问题,但我很难过.
我正在处理的应用程序包含如下资产:
app
--assets
----fonts
----images
----javascripts
Run Code Online (Sandbox Code Playgroud)
我喜欢有效地组织资产以避免混乱,所以我试图像这样分解图像:
app
--assets
----fonts
----images
------icons
------views
--------home
--------admin
Run Code Online (Sandbox Code Playgroud)
理想情况下,我想引用图像,image.png而不必在资产前添加文件夹路径views/home/image.png,我相信尽管不能像开箱即用那样设置.
这个问题让我发疯了...我想我已经尝试了Sass文件,ERB文件,资产帮助器,图像助手等各种可能的组合等.有人请给我新的想法!
语境:
Rails应用程序需要使用资产助手,以便在预编译资产时,源将是指纹资产文件.即,如果你刚刚调用了img src ="X.jpg",那么生产中的网站会寻找X.jpg,但是公共/资产中的文件实际上已被指纹化为X-as; diofua; wemfiwaejfoiawefo.jpg.获取指纹文件的唯一方法是使用资产助手,例如image_url('X.jpg').
现在在我的实时网站上,我正在使用资产助手,但无论出于何种原因,它都没有指向指纹资产.请注意,资产是在开发中找到的(但同样,这是因为开发中没有添加指纹).
码
以"classic-map.png"为标题的图片,位于app/assets/images/galleria
从application.css文件中所需的css.erb文件调用映像.在css.erb文件中,我有以下代码:
background-image: url(<%= asset_path 'galleria/classic-map.png' %>);
Run Code Online (Sandbox Code Playgroud)
供参考,http ://guides.rubyonrails.org/asset_pipeline.html请注意,我选择将其写为css.erb文件,因此使用asset_path与asset-path.此外,我最初认为问题可能是插值,但在页面源中,网址肯定是有效的,只是它指向url(galleria/classic-map.png)而不是url(galleria/classic-地图apsoidufalskjf; kasj.png)
对任何可以提供帮助的人都有一百万的荣誉!
asset-pipeline ×10
activeadmin ×1
ckeditor ×1
css ×1
freebase ×1
heroku ×1
javascript ×1
jquery-ui ×1
performance ×1
precompile ×1
sass ×1
sprockets ×1