关于在Rails 3.1的新资产管道中放置像Galleria这样的jQuery框架,我有点困惑?
从技术上讲,我知道它应该进入/vendors/assets/javascripts 但是,我的理解是,Galleria带有jQuery和主题的文件夹想要/galleria在实时站点的root()中才能正常工作.
此外,当我们在它的时候,在哪里放置以下脚本,以便它只出现在带有图库的页面上?
<script>
$('#gallery').galleria({
width:500,
height:500
});
</script>
Run Code Online (Sandbox Code Playgroud)
编辑:惊讶没有回应!?!也许Galleria不那么受欢迎?这些是我正在尝试加载的文件.虽然我可以很容易地移动它们,但它们是这样捆绑的:
vendor/
assets/
javascripts/
galleria-1.2.5.js
galleria-1.2.5.min.js
galleria/
themes/
classic/
classic-loader.gif
classic-map.png
galleria.classic.css
galleria.classic.js
galleria.classic.min.js
Run Code Online (Sandbox Code Playgroud)
我以为Sprockets require_tree .会加载所有内容app/assets,lib/assets并且vendor/assets?!?
ruby-on-rails galleria ruby-on-rails-3.1 sprockets asset-pipeline
如果我查看源代码,则会向所有资产(css和js)添加一个?body = 1
<script src="/assets/jquery.livequery.js?body=1" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
它是什么?为什么?
我想使用JavaScript库,如jQuery插件.我是否使用Rails资产管道?或者我应该用javascript_include_tag包含它?我有什么选择,推荐的做法是什么?
我正在使用Express.js作为后端构建一个Ember.js应用程序.现在,我单独加载所有*.js文件并将我的Handlebars模板存储在我的HTML文件中.我想用一个类似于Rails中的完整"资产管道"替换.在一个完美的世界中,这将支持:
我简要介绍了Require.js,connect-assets和convoy.前两个似乎没有提供任何简单的方法来预编译Handlebars模板,而Ember护航集成基于Ember的过时版本.
ember-runner还没有更新一段时间.grunt-ember-templates看起来是将Ember模板编译为单个*.js文件的合理方式,因此可能是更大解决方案的构建块.
是否有任何与Ember.js一起使用的Node.js资产编译系统?我很想有一个Node.js的等效烬护栏.
我致力于使用capistrano部署到生产.我面临几个问题,在修复大部分问题的同时,我们还有最后一个问题.
我们的预编译资产选项没有在生产中正确编译它们,因此,我们无法使用最后开发的功能,因为它们严重依赖JS.
不试图影响任何人如何分析这个问题,这是我尝试使它工作的一些方法:
该应用程序只是没有使用新的JS文件.如果您在repo或服务器本身检查代码,我在name.js.coffee中引入了一个简单的注释("显示和隐藏菜单,具体取决于数据库上的数据",这是在xxx行),这不是生产中编译的assets.js.这是一个快速测试,以确保最近的资产被使用.
这里的整个问题是js和css文件,而不是rails.这就是为什么它如此难以测试或找到..因此最近js框架普及的原因之一.如果出现问题,你不必自杀,寻找问题所在.如果问题是红宝石或铁轨,通常不需要那么长时间才能发现.一旦你获得js,css和跨浏览器兼容性,那么这就是手头的问题.
这是我的deploy.rb文件.运行轨道3.2.12 ruby-1.9.3-p327:
# $:.unshift(File.expand_path('./lib', ENV['rvm_path']))
# Load rvm's capistrono plugins
require 'rvm/capistrano'
require 'bundler/capistrano'
set :rvm_type, :user
set :user, 'username'
set :domain, 'ip_address'
set :application, "app_pro"
set :keep_releases, 2 # It keeps on two old releases.
# git repo details
set :scm, :git # You can set :scm explicitly or Capistrano will make an intelligent guess based on known version control …Run Code Online (Sandbox Code Playgroud) deployment capistrano ruby-on-rails amazon-ec2 asset-pipeline
在尝试创建资产时:为生产网站预编译我第一次遇到此错误.
rake assets:precompile undefined method directory? for nil:NilClass
Run Code Online (Sandbox Code Playgroud)
我已经成功更新了网站并完成了一项资产:之前多次预编译.
完整的例子:
# RAILS_ENV=production rake assets:precompile --trace
/usr/local/rvm/gems/ruby-1.9.2-p290@pm/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV_
** Invoke assets:precompile (first_time)
** Execute assets:precompile
/usr/local/rvm/gems/ruby-1.9.2-p290@pm/gems/rack-1.3.4/lib/rack/backports/uri/common_192.rb:53: warning: already initialized constant WFKV_
rake aborted!
undefined method `directory?' for nil:NilClass
Tasks: TOP => assets:precompile
(See full trace by running task with --trace)
Run Code Online (Sandbox Code Playgroud)
我期待着有人对这一点有所了解,我一直在绞尽脑汁,谷歌搜索答案数小时.
更新:
事实证明,有时results.image是零或"",所以这打破了应用程序,因为资产管道正在寻找像""这样的图像而没有找到它.现在我没有显示图像,如果没有图像,但我将不得不为缺失的图像添加默认图像......这应该是一个更永久的修复.
关于heroku cedar和Rails资产管道这个问题,我有很多问题,我尝试了很多解决方案,但是没有一个能够解决,而且可能是因为我遇到的问题有一个皱纹我没见过其他地方.
我的应用程序使用Rails 3.2.6,我已经将它部署在Heroku的雪松堆栈上.这是一个基本的搜索应用程序,通过websolr搜索附加的postgres数据库,所以当你加载索引(索引#index)而没有params [:q] .present?你有一个搜索框,这很好用.但是当我在搜索框中输入内容并点击提交,并且索引#index再次加载但这次尝试显示结果时,我得到:
app[web.1]: Completed 500 Internal Server Error in 440ms
app[web.1]:
app[web.1]: ActionView::Template::Error ( isn't precompiled):
app[web.1]: 12: - @results.each do |result|
app[web.1]: 13: %li
app[web.1]: 14: %div
app[web.1]: 15: = image_tag result.image
app[web.1]: 16: %div
app[web.1]: 17: = result.title
app[web.1]: 18: %div
app[web.1]: app/views/index/index.html.haml:15:in `block in _app_views_index_index_html_haml___4350601325072829986_32734540'
app[web.1]: app/views/index/index.html.haml:12:in _app_views_index_index_html_haml___4350601325072829986_32734540'
Run Code Online (Sandbox Code Playgroud)
关于我的具体案例和我见过的其他人有什么奇怪的是以下几行:
ActionView::Template::Error ( isn't precompiled):
Run Code Online (Sandbox Code Playgroud)
对于我所见过的所有其他问题,括号中有一个css文件,即("foo.css"未预编译),或者在我看来它应该是("index.css")没有预编译).但这里只是空白!
这是我试图开始工作的暂存部署,所以我尝试运行RAILS_ENV =暂存rake资产:precompile(然后提交结果),但这并没有解决它.我甚至尝试在视图中删除(注意那里没有任何实际的样式).什么都行不通,我很茫然.任何帮助将不胜感激.
作为参考,这是我的gemfile:
source 'https://rubygems.org'
gem 'rails', '3.2.6'
gem 'pg'
gem 'haml-rails'
gem 'mongoid'
gem 'sunspot_rails', '~> …Run Code Online (Sandbox Code Playgroud) 我正在开发一个不会在生产中缩小CSS或JS的项目.
不幸的是,我从来没有遇到过这个问题,而且我对资产管道如何详细调试问题并不熟悉.
我的问题是,我需要检查哪些要点/设置以确保启用?
它正确地将不同的文件组合成一个JS和CSS文件......它只是没有缩小.
到目前为止,我已经添加config.assets.js_compressor = :uglifier到production.rb,并uglifier到Gemfile,但仍然没有骰子.
我正在使用从Rails 3.2.12升级的Rails2
假设我有一个文件"example.txt",它位于我的Rails应用程序中的assets/files文件夹中.在制作时,我可以通过网址'/assets/example.txt'访问此文件
如何设置我的routes.rb文件,以便在访问'example.txt'时可以访问example.txt的内容?
我目前正在使用Grails 资源插件,我有许多像这样定义的模块:
bootstrap {
resource url:'js/libs/bootstrap/bootstrap.min.js'
resource url:'css/libs/bootstrap/bootstrap-responsive.css'
resource url:'css/libs/bootstrap/bootstrap-glyphicons.css'
resource url:'css/libs/bootstrap/bootstrap.min.css'
}
Run Code Online (Sandbox Code Playgroud)
这非常方便,因为它将Javascript和CSS文件组合在一起形成一个概念性的Bootstrap模块.
我现在正在研究资产管道插件,看来文件只能require是同一类型的其他文件,这意味着我现在有两棵依赖树(CSS&JS)而不是一棵,这是一个问题,因为存在相互依赖性,例如,bootstrap.js取决于bootstrap.css.
asset-pipeline插件是否允许声明类型间依赖关系?如果没有,处理这个问题的最佳方法是什么?
asset-pipeline ×10
amazon-ec2 ×1
assets ×1
capistrano ×1
deployment ×1
ember.js ×1
express ×1
file ×1
galleria ×1
grails ×1
heroku ×1
javascript ×1
node.js ×1
rake ×1
routes ×1
ruby ×1
sprockets ×1