标签: asset-pipeline

资产管道,指南针font-face和eot?iefix调用字体

我正在尝试使用Compass font-face mixin,其中包含
*.eot?iefix

我的app/assets/fonts包含所需的所有字体类型,包括.eot.

当我尝试运行资产时:预编译任务失败说类似:webfont.eot?iefix未预编译

你知道这个问题的可能解决方案吗?

如果我有config.assets.compile = true,它运行时没有错误,但正如我所知,最好不要在生产中使用它.

font-face ruby-on-rails-3.1 sprockets asset-pipeline compass-sass

5
推荐指数
2
解决办法
3755
查看次数

为什么资产管道文件中的Rails I18n.t不起作用?

我想I18n.t在资产管道js.coffee.erb文件中使用帮助器.

我的本地文件:

zh-CN:
  hello: ??
Run Code Online (Sandbox Code Playgroud)

hello.js.coffee.erb:

$->
  alert '<%= t(:hello) %>'
Run Code Online (Sandbox Code Playgroud)

这将导致"Encoding::InvalidByteSequenceError - "\xE5" on US-ASCII"错误.

资产管道文件是否支持使用I18n.t帮助程序?

错误日志:

Encoding::InvalidByteSequenceError - "\xE5" on US-ASCII
  (in /.../hello.js.coffee.erb):
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:123:in `escape'
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:69:in `escape'
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:177:in `encode_json'
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:220:in `block in encode_json'
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:220:in `encode_json'
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:48:in `block in encode'
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:77:in `check_for_circular_references'
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:46:in `encode'
  (gem) activesupport-3.2.12/lib/active_support/json/encoding.rb:31:in `encode'
  (gem) activesupport-3.2.12/lib/active_support/core_ext/object/to_json.rb:16:in `to_json'
  (gem) multi_json-1.6.1/lib/multi_json/adapters/json_common.rb:10:in `dump'
  (gem) multi_json-1.6.1/lib/multi_json.rb:122:in `dump'
  (gem) execjs-1.4.0/lib/execjs/json.rb:11:in `encode'
  (gem) execjs-1.4.0/lib/execjs/external_runtime.rb:33:in …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails asset-pipeline rails-i18n

5
推荐指数
1
解决办法
2097
查看次数

在测试时,每次调整Rails 3.2中的Javascript文件时,是否必须预编译资产?

我正在尝试学习TDD和BDD并以正确的方式做到这一点.我正在使用的堆栈(或试图使用,Spork不能与Guard一起使用)是Minitest-Guard-Spork-Capybara.我专注于单元测试的模型和规格的集成测试.

我在这个应用程序中有很多Ajax.我只是save_and_open_page在我的一个测试中做了一个,当然页面当然很难看,因为它找不到任何资产.

我的问题是,如果我要测试JS功能,我是否必须每次都预编译资产以测试它们,或者是否有某种方法可以将管道默认设置为开发模式以进行测试.

我确定这是一个n00b问题,但这就是我测试的地方.努力做正确的事.

ruby ruby-on-rails minitest asset-pipeline ruby-on-rails-3.2

5
推荐指数
1
解决办法
2317
查看次数

在Rails 4 + unicorn + foreman中禁用资产日志记录

在Rails 4 + thin,quiet_assets gem工作得很好.

一旦我加入独角兽并与领班一起运行,资产再次变得嘈杂.

这有什么解决方案吗?

unicorn sprockets asset-pipeline foreman ruby-on-rails-4

5
推荐指数
2
解决办法
1522
查看次数

在Rails 4中生成样式表和javascript文件的列表或路径

我正在编写一个使用自定义缓存清单文件的Rails4应用程序,该文件需要包含对所有必需的Javascript和CSS文件的引用.由于应用程序的性质,无法使用Rack Offline gem.

stylesheet_link_tagjavascript_include_tag电话产生正确的文件列表(由资产产生的管道),但在HTML代码嵌入其中.

有没有办法获得控制器中所有已编译的javascript和样式表文件的路径?

例如.

/assets/custom.css?body=1
/assets/incidents.css?body=1
/assets/users.css?body=1
/assets/application.css?body=
/assets/jquery.js?body=1
/assets/bootstrap/affix.js?body=1
...
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails sprockets asset-pipeline ruby-on-rails-4

5
推荐指数
1
解决办法
911
查看次数

如何将jQuery DataTables导入Grails 2.4.4

我有一个Grails 2.4.4应用程序,我正在尝试实现一个利用jQuery DataTable的GSP .我看到有一个旧的 DataTable插件,但它看起来没有维护,并且与Grails 2.x不兼容.更不用说,应该有一种方法可以简单地在Grails中包含任何 JS库,而不需要为它明确要求插件.

plugins是我的部分BuildConfig:

plugins {
    build ":release:3.0.1"
    build ":tomcat:7.0.52.1"

    compile "org.grails.plugins:gson:1.1.4"
    compile ":rest-client-builder:1.0.3"
    compile ":yammer-metrics:3.0.1-2"

    runtime ":jquery:1.11.1"
    runtime ":cached-resources:1.0"
    runtime ":resources:1.2.14"
    compile ":cache-headers:1.1.7"

    compile ":rest-client-builder:1.0.3"
    compile ":export:1.6"
    compile ":standalone:1.2.3"
    compile ":cache-headers:1.1.7"
    compile ":scaffolding:2.1.2"
    compile ':cache:1.1.3'

    runtime ":resources:1.2.14"
    runtime ":hibernate:3.6.10.15"
    runtime ":database-migration:1.4.0"
    runtime ":jquery:1.11.1"
}
Run Code Online (Sandbox Code Playgroud)

出于本问题范围之外的原因,我无法删除或更改本plugins节中的任何现有声明,但我可以添加它们.我听说有一种叫做"资源管道"的东西是将JS库添加到Grails应用程序的新方式,但我在这个管道上找到的所有文献都是模糊和高级的.而且我找不到使用此管道在Grails应用程序中包含DataTables的任何真实世界的具体示例.

DataTable 的" Hello World! "版本似乎是这样的:

<table id="example" class="display" cellspacing="0" width="100%">
    <thead>
        <tr>
            <th>Name</th>
            <th>Position</th>
            <th>Office</th> …
Run Code Online (Sandbox Code Playgroud)

jquery datatables asset-pipeline grails-2.4

5
推荐指数
1
解决办法
383
查看次数

强制重新编译rails资产管道中的某些文件

我在轨道4.1.9上使用ruby.

有没有办法定义应该随时重新编译的文件白名单,即使它们没有改变?

例如:我有几个.js.erb文件注入了一些Rails变量.因此,即使原始文件没有更改,也需要重新编译.

ruby-on-rails sprockets asset-pipeline ruby-on-rails-4

5
推荐指数
0
解决办法
45
查看次数

如何播种图像的路径?

OrganizationImage有一个1-to-1 relationship.Image有一个名为的列filename,它存储文件的路径.我有一个包含在资产管道中的文件:app/assets/other/image.jpg.播种时如何包含此文件的路径?

我试过我的种子文件:

@organization = ...
@organization.image.create!(filename: File.open('app/assets/other/image.jpg'))
# I also tried:
# @organization.image.create!(filename: 'app/assets/other/image.jpg')
Run Code Online (Sandbox Code Playgroud)

两者都生成错误:

NoMethodError: undefined method `create!' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

我检查了debugger并且可以确认它不是 @organization零.
如何使这项工作并将文件的路径添加到Image模型中?


更新:我尝试了以下内容:

@image = Image.create!(organization_id: @organization.id,
                       filename: 'app/assets/other/image.jpg')
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

image = @organization.build_image(filename: 'app/assets/other/image.jpg')
image.save
Run Code Online (Sandbox Code Playgroud)

播种后,两次尝试都会产生错误:

CarrierWave::FormNotMultipart: You tried to assign a String or a Pathname to an uploader, for security reasons, this is not allowed.
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails asset-pipeline ruby-on-rails-4

5
推荐指数
1
解决办法
2759
查看次数

Rails javascript资产表现奇怪,具体取决于路由

我正在学习Rails,我想在我的项目中使用angular.

这是一个从头开始的简单应用程序.

1).创建一个新的rails应用程序:

rails new hello_rails
Run Code Online (Sandbox Code Playgroud)

2).将angular gem添加到Gemfile

gem 'angularjs-rails'
Run Code Online (Sandbox Code Playgroud)

3).安装捆绑包

bundle install
Run Code Online (Sandbox Code Playgroud)

4).将角度添加到javascript清单中app/assets/javascripts/application.js

//=require angular
Run Code Online (Sandbox Code Playgroud)

5).生成欢迎索引

rails generate controller welcome index
Run Code Online (Sandbox Code Playgroud)

6).使用角度hello世界填充index.html.erb

 <div style = "background-color: grey">
    this is index.html.erb<br>

  <div ng-app="">
    <p>Name : <input type="text" ng-model="name"></p>
    <h1>Hello {{name}}</h1>
</div>

</div>
Run Code Online (Sandbox Code Playgroud)

7).同时修改application.html.erb

<pre>
<!DOCTYPE html>
<html>
<head>
  <title>HelloRails</title>
  <%= stylesheet_link_tag    'application', media: 'all', 'data-turbolinks-track' => true %>
  <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
  <%= csrf_meta_tags %>
</head>
<body style = "background-color:green">

  This is application.html.erb <br>

   <%= …
Run Code Online (Sandbox Code Playgroud)

javascript ruby-on-rails asset-pipeline angularjs ruby-on-rails-4

5
推荐指数
1
解决办法
112
查看次数

在Rails滚动部署中使用带有CDN的散列资产

我们正在运行Rails 5.1站点,该站点利用Asset Pipeline在部署时生成散列(指纹)资产.为了优化性能,我们的资产是从服务器生成的,然后在首次请求时缓存到AWS Cloudfront.

部署时,我们进行滚动部署.我们使用新代码启动新服务器,并使用旧代码终止服务器,因为新代码已联机.在部署期间的任何给定时间,如果请求进入资产,则任何服务器(新的或旧的)都可以应答请求,因为它们都在同一AWS Application Load Balancer上.

例如,我们有两个资产文件:

  • admin-2d1d6c00a49c.js(从旧提交生成)
  • admin-aac83de85860.js(从新提交部署生成)

如果admin-aac83de85860.js的请求进入并且旧服务器接收请求,则它将找不到资产,返回400然后返回该响应缓存.这意味着即使新服务器拥有该文件,所有将来对admin-aac83de85860.js的请求都将返回400.

我们如何获得在AWS Cloudfront中缓存的两组资产,或者仅将新资产的流量直接添加到添加到池中的新服务器?

ruby-on-rails cdn amazon-web-services asset-pipeline amazon-cloudfront

5
推荐指数
1
解决办法
83
查看次数