小编New*_*ria的帖子

Rails 3.1资产管道 - 从公共/资产中丢失文件 - 为什么这不是默认值?

在今天下午将我升级的Rails 2.3.x - > 3.1(rc4)应用程序部署到我们的测试环境后,我们所有的样式表和JavaScript文件都返回了404错误.我们已经将rake资产:预编译任务添加到我们的部署后脚本中,并且花了一些时间来确定assets文件夹为什么没有我们预期的预编译文件.

最后,文件没有被编译,因为默认情况下只处理application.css和application.js(+非JS/CSS文件).

我们需要更改以下配置值,如下所示:

config.assets.precompile += %w( *.js *.css )
Run Code Online (Sandbox Code Playgroud)

问题:为什么这不是默认值?

我原本预计,任何不必作为清单文件处理的东西都会被复制到公共/资产中.我在资产管道上阅读的大部分内容基本上是"将资产放在app/assets中,配置清单文件,它应该正常工作".由于资产:预编译任务没有吐出任何有关它正在做什么的信息,因此需要一段时间才能确定它只是没有查看我们认为会存在的文件.

有什么理由说这对于预编译配置来说不是一个好的价值吗?

谢谢!

assets ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline

9
推荐指数
1
解决办法
6408
查看次数

在SASS中访问HTML属性值

是否可以在SASS中访问HTML属性值?我有一行代码说

<ul id="my_id" data-count="3">
Run Code Online (Sandbox Code Playgroud)

3是一些jQuery的结果.我需要3计算一些CSS.如何将其保存为SASS变量?

或者,有没有办法计算某个父元素的子元素数?说我有这个代码:

<ul id="my_id" data-count="3">
    <li>First list item</li>
    <li>Second list item</li>
    <li>Third list item</li>
</ul>
Run Code Online (Sandbox Code Playgroud)

(正如您可能已经猜到的那样,data-count匹配列表项的数量的值.)SASS可以计算列表项并将该数字保存为变量吗?

任何想法将不胜感激.

html dom sass

9
推荐指数
2
解决办法
2万
查看次数

如何在rails4中为default_url使用摘要感知资产?

在Rails 3,作为使用资产从管道default_urlcarrierwave的上传,你不喜欢的东西如下:

class MyUploader
  # Include the Sprockets helpers for Rails 3.1+ asset pipeline compatibility:
  include Sprockets::Helpers::RailsHelper
  include Sprockets::Helpers::IsolatedHelper

  def default_url
    # For Rails 3.1+ asset pipeline compatibility:
    asset_path("fallback/" + [version_name, "default.png"].compact.join('_'))
  end
end
Run Code Online (Sandbox Code Playgroud)

在导轨4中,管道被抽象到sprockets-rails gem/railtie中,因此上面的内容将为您提供:

未初始化的常量链轮::助手

看看sprockets-rails gem,替换助手似乎就是这样Sprockets::Rails::Helper.但是包含这个模块,asset_path("fallback/default.png")返回,简单地说:

# wrong:
"/fallback/default.png"
Run Code Online (Sandbox Code Playgroud)

不是我期望的资产和摘要感知网址:

"/assets/fallback/default-b3beee1588afe2ae582c64888cd007db.png"
Run Code Online (Sandbox Code Playgroud)

如何asset_path在视图外获得正确的行为?

helper carrierwave asset-pipeline ruby-on-rails-4

9
推荐指数
1
解决办法
3003
查看次数

org.xml.sax.SAXNotRecognizedException:无法识别功能"http://javax.xml.XMLConstants/feature/secure-processing"

嗨,在我们的项目中,我们正在使用XJC ant任务进行xsd2schema生成,之后我们正在编译src文件并将它们分组到模式jar中.我们的类路径是:

jaxb-ri-2.2.6 - jaxb-impl.jar,jaxb-api.jar,jaxb-xjc.jar
Run Code Online (Sandbox Code Playgroud)

这个ant任务在eclipse中工作得很好,jar被创建了,但它在unix环境中抛出了错误.

错误是:

java.lang.IllegalStateException:org.xml.sax.SAXNotRecognizedException:无法识别功能" http://javax.xml.XMLConstants/feature/secure-processing ".

当我们将"xercesImpl-2.9.1.jar"添加到unix构建类路径时,该错误消失了,但生成的jar与使用eclipse生成的jar不同.

eclipse构建jar-它只有几个类unix build jar-它有impl文件夹和很多类

在这两种情况下,jaxb罐都是一样的.请帮我解决这个问题....请...................

xml unix ant jaxb

9
推荐指数
3
解决办法
2万
查看次数

Rails 3 - 资产管道 - 对我来说意味着什么?

我正在努力寻找有关新Rails 3资产管道的任何真实文档.我知道有一个视频,但我不希望以这种格式观看一小时的视频.我看了大约10分钟,没有获得任何知识.

那么,我需要了解有关Rails 3资产管道的哪些信息?这对我之前的项目意味着什么,这对我未来的项目意味着什么?

ruby-on-rails-3 asset-pipeline

8
推荐指数
1
解决办法
2912
查看次数

git存储库无法遍历父错误

我是git的新手,直到今晚才开心.我一直在做出改变.我在unfuddle和beanstalk以及本地文件系统远程维护两个遥控器.

从未出现过错误,经过一天的工作后,我将我的更改推到了所有的遥控器上,相信这些让我非常安全.没有错误也没有问题.

今天晚上,我去查看我的项目日志,并为我的痛苦得到了这个错误:

error: Could not read a2b6c2fa16e01db9e38d9509606a444e5831330a
fatal: Failed to traverse parents of commit 
       78e81a9a7f5cafa5e2af4b95d156364b9a430ac9
Run Code Online (Sandbox Code Playgroud)

据我所知,历史可以追溯到5月29日.我无法从任何遥控器克隆副本.我无法在任何地方使用其他克隆来恢复存储库.我甚至不知道什么时候它破了.我检查了常见问题,但我不知道存储库恢复部分的作者正在谈论什么.

当我运行git fsck时,我得到了155行,并且悬空了.很明显,我想清理一下.我可以在5月29日之前没有历史.如果我能从那时起直接得到它.

任何人都可以帮助我直截了当吗?

还有什么可能导致这种情况?在那个时期,我唯一能想到的就是我将netbeans升级到v7,它本应该有git支持但似乎不能识别现有的存储库.

git

8
推荐指数
2
解决办法
1万
查看次数

在部署到子URI时,Rails 3.1中的预编译资产损坏

我正在更新Rails 3应用程序以使用Rails 3.1,作为其中的一部分,我正在利用新的资产管道.到目前为止,我已经把一切都解决了一个我无法解决的相当恼人的问题.

应用程序及其所有资产在开发中运行良好,但在生产中,它使用Passenger(http://the-host/sub-uri/)部署到子URI .这个问题是资产是在部署期间预编译的,我的一个CSS(好吧,它是一个.css.scss文件)文件正在利用gem 中的image-url帮助程序sass-rails.由于在预编译过程中,路径被硬编码到预编译的CSS文件中,因此不考虑子uri:

在我的.css.scss档案中:

body { background-image: image-url("bg.png"); }
Run Code Online (Sandbox Code Playgroud)

编译application-<md5-hash-here>.css文件中的结果:

body { background-image: url(/assets/bg.png); }
Run Code Online (Sandbox Code Playgroud)

它应该是什么使它正常工作:

body { background-image: url(/sub-uri/assets/bg.png); }
Run Code Online (Sandbox Code Playgroud)

这个场景只是要求太多了吗?如果是这样,我将不得不切换回旧的非资产流水线方式,只需提供我的图像和CSS public.然而它似乎应该被考虑和解决的东西......?我错过了解决方案吗?


编辑1:我应该注意,使用erb解决方案会产生与预期相同的结果.


编辑2:回应Benoit Garret的评论

不,问题与此无关config.assets.prefix.我尝试设置(/sub-uri/assets而不是默认值/assets),但事实证明这是错误的做法 - 似乎这个设置已经与Rails应用程序的根目录有关,而不是服务器.删除它(从而恢复到默认值)已经修复了所有引起的奇怪问题(并且有很多,所有资产都进入了/sub-uri/sub-uri/assets- 这一切都非常奇怪).唯一的问题是image-url帮助者和朋友在预编译时不会获取子URI.毋庸置疑,这是合乎逻辑的,因为当它被预编译时,它不可能知道当它在Passenger下运行时,它将以这种方式配置.我的问题是如何告知它,从而最终得到预编译结果中的正确路径.如果确实可以做到的话.

我目前的解决方法是像这样引用CSS中的iamge:url(../images/bg.png)并将其放在非流水线public/images位置.很难理想,因为它不会受益于指纹和管道提供的一切.

assets passenger ruby-on-rails-3.1 sprockets asset-pipeline

8
推荐指数
1
解决办法
6713
查看次数

Jasmine不会从资产管道加载javascript文件

我正在开发一个宝石,我已经安装了Jasmine https://github.com/pivotal/jasmine-gem/

我所需的所有JS文件都在app/assets/javascripts/application.js的清单文件中

//= require underscore
//= require backbone

//= require_tree .//vendor
//= require_tree .//custom

//= require_tree .//templates
//= require_tree .//models
//= require_tree .//collections
//= require_tree .//views
Run Code Online (Sandbox Code Playgroud)

我的jasmine.yml文件引用了:

src_files:
  - 'app/assets/javascripts/application.js'
Run Code Online (Sandbox Code Playgroud)

但是它中指定的文件都没有加载.谁知道为什么?我正在使用最新的Jasmine 1.3.2,它应该支持资产管道,这样你就不需要使用像jasmine-rails这样的东西了.有什么想法吗?

javascript assets ruby-on-rails jasmine asset-pipeline

8
推荐指数
1
解决办法
2994
查看次数

Rails 3.1:文件上传应该添加到资产管道吗?

我有一个rails 3.1应用程序,允许用户上传图片.这些图片是应该存储为资产(在应用程序/资产中),因此受到链接开销(缓存,指纹识别等)的影响?或者我应该将它们保存在公共/图像中并将它们存储在资产管道之外?

ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.1 asset-pipeline

7
推荐指数
1
解决办法
1055
查看次数

是否存在用于返回第一个数组元素的ruby习语,如果只存在一个?

如果数组只包含一个值,我想返回数组的第一个元素.

目前,我使用:

vals.one? ? vals.first : vals.presence
Run Code Online (Sandbox Code Playgroud)

从而:

vals = []; vals.one? ? vals.first : vals.presence
# => nil

vals = [2]; vals.one? ? vals.first : vals.presence
# => 2

vals = [2, 'Z']; vals.one? ? vals.first : vals.presence
# => [2, "Z"]
Run Code Online (Sandbox Code Playgroud)

是否有内置的东西可以做到这一点,还是有更好的设计考虑?


我的用例是特定的,涉及知道该方法会有什么期望的演示者(将实现上述代码).如果这些演示者将所有返回作为数组处理,那么在大多数情况下(~90%),它们将迭代大小1或数组0.

ruby arrays ruby-on-rails

7
推荐指数
1
解决办法
4120
查看次数