我正在尝试使用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
我想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) 我正在尝试学习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
在Rails 4 + thin,quiet_assets gem工作得很好.
一旦我加入独角兽并与领班一起运行,资产再次变得嘈杂.
这有什么解决方案吗?
我正在编写一个使用自定义缓存清单文件的Rails4应用程序,该文件需要包含对所有必需的Javascript和CSS文件的引用.由于应用程序的性质,无法使用Rack Offline gem.
该stylesheet_link_tag和javascript_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) 我有一个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) 我在轨道4.1.9上使用ruby.
有没有办法定义应该随时重新编译的文件白名单,即使它们没有改变?
例如:我有几个.js.erb文件注入了一些Rails变量.因此,即使原始文件没有更改,也需要重新编译.
Organization并Image有一个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) 我正在学习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
我们正在运行Rails 5.1站点,该站点利用Asset Pipeline在部署时生成散列(指纹)资产.为了优化性能,我们的资产是从服务器生成的,然后在首次请求时缓存到AWS Cloudfront.
部署时,我们进行滚动部署.我们使用新代码启动新服务器,并使用旧代码终止服务器,因为新代码已联机.在部署期间的任何给定时间,如果请求进入资产,则任何服务器(新的或旧的)都可以应答请求,因为它们都在同一AWS Application Load Balancer上.
例如,我们有两个资产文件:
如果admin-aac83de85860.js的请求进入并且旧服务器接收请求,则它将找不到资产,返回400然后返回该响应缓存.这意味着即使新服务器拥有该文件,所有将来对admin-aac83de85860.js的请求都将返回400.
我们如何获得在AWS Cloudfront中缓存的两组资产,或者仅将新资产的流量直接添加到添加到池中的新服务器?
ruby-on-rails cdn amazon-web-services asset-pipeline amazon-cloudfront
asset-pipeline ×10
sprockets ×4
ruby ×2
angularjs ×1
cdn ×1
compass-sass ×1
datatables ×1
font-face ×1
foreman ×1
grails-2.4 ×1
javascript ×1
jquery ×1
minitest ×1
rails-i18n ×1
unicorn ×1