如何将Rails 3.1管道的预编译资产部署到s3?
我需要一个任务来自动执行与资产存储桶同步的工作.
编辑:
这个gem正是我需要的:https://github.com/rumblelabs/asset_sync.
Rails 3.1.0.rc5
我在命令路由在启用ERB的Javascript文件中工作时遇到问题:
# app/assets/javascripts/items.js.erb
$('#start').click(function() {
$.ajax({
url : '<%= ajax_items_path %>',
success : function(result) {
$('#result').html(result);
}
});
});
Run Code Online (Sandbox Code Playgroud)
错误消息如下:
Error compiling asset items.js:
NameError: undefined local variable or method `ajax_items_path' for #<#<Class:0x007fbcb49a7630>:0x007fbcb4ee30b8>
(in myproject/app/assets/javascripts/items.js.erb)
Run Code Online (Sandbox Code Playgroud)
ajax_items_path如果我直接在视图中使用它,该路径工作正常.
看起来资产管道中没有命名路由.如果是这种情况,那么解决方法是什么?我真的想避免在我的Javascript中硬编码URL.
是否有可能在Rails3中破解记录器以忽略对资产的请求?
当它充满时,在日志中找到一些东西是疯狂的
Started GET "/assets/tiscali.png" for 127.0.0.1 at 2011-09-09 19:59:45 +0200
Served asset /tiscali.png - 304 Not Modified (0ms)
Run Code Online (Sandbox Code Playgroud)
谢谢!
我有一个使用codebrew/backbone-rails的Rails 3.1应用程序.在.jst.ejs模板中,我想包含一个图像,如下所示:
<img src="<%= image_path("foo.png") %>"/>
Run Code Online (Sandbox Code Playgroud)
但当然,JavaScript中没有资产助手.
链接ERB(.jst.ejs.erb)不起作用,因为EJS语法与ERB冲突.
这就是我所知道的:
<script>JSON)并在JS中读取它来解决这个问题,但这看起来很笨拙.有没有办法以某种方式在EJS文件中使用资产助手?
我正在构建一个静态的public/404.html页面.在Rails 3.1之前,我可以使用public/style.css引用它.但现在有了资产管道,我不知道要链接到什么.我听说样式会被编译成asset/application.css.但在生产时它会带有时间戳.
使用我使用的常规样式来设置静态404.html的最佳方法是什么?
本周开始使用资产管道运行最新的rails 3.2.2.对于资产,我希望在将应用程序推送到heroku时编译资产(而不是必须在repo中手动编译和存储已编译的资产).文档表明这应该自动发生.
我遇到的问题是当我运行git push heroku master它时似乎根本不运行rake assets:precompile任务.资产永远不会被编译.这是我得到的输出:
-----> Heroku receiving push
-----> Ruby/Rails app detected
-----> Installing dependencies using Bundler version 1.1.rc.7
Running: bundle install --without development:test --path vendor/bundle --binstubs bin/ --deployment
Using rake (0.9.2.2)
.......
.......
Your bundle is complete! It was installed into ./vendor/bundle
Cleaning up the bundler cache.
-----> Writing config/database.yml to read from DATABASE_URL
-----> Rails plugin injection
Injecting rails_log_stdout
Injecting rails3_serve_static_assets
-----> Discovering process types
Procfile declares types -> …Run Code Online (Sandbox Code Playgroud) 我正在尝试将我的应用程序部署到Heroku.Heroku没有加载我的js和css文件
我跑了RAILS_ENV=production bundle exec rake assets:precompile
,它仍然无法正常工作.
然后我跑了
heroku rake assets:precompile
我在Heroku日志中收到此错误:
Error compiling asset application.css:
Sprockets::FileNotFound: couldn't find file 'jquery.ui.datepicker'
(in /app/app/assets/stylesheets/application.css.scss:13)
Served asset /application-989f5e5266d9b066eb316183d7db5c77.css - 500 Internal Server Error
Error compiling asset application.js:
Sprockets::FileNotFound: couldn't find file 'jquery.ui.datepicker'
(in /app/app/assets/javascripts/application.js:16)
Served asset /application-d81c946c6f47242e5e97de9bca4938be.js - 500 Internal Server Error
Run Code Online (Sandbox Code Playgroud)
config production.rb:
config.cache_classes = true
config.consider_all_requests_local = false
config.action_controller.perform_caching = true
config.serve_static_assets = true
config.assets.compress = true
config.assets.compile = true
config.assets.initialize_on_precompile = false …Run Code Online (Sandbox Code Playgroud) 我正在Ruby on Rails 3.1项目中编写一个富含Javascript的应用程序,并使用Handlebars作为我的JS模板框架.我正试图找出一种方法来动态地将资产的MD5摘要(在生产中的资产预编译期间生成)附加到我的Handlebars模板内的标签.我希望有一个哈希,资产路径作为密钥,MD5摘要作为值,但我找不到.
一个理想的解决方案是将Ruby中的哈希值传递给Javascript并定义一个Handlebars帮助器,它将自动将MD5摘要附加到资产的"src"属性.
有没有人试图做类似的事情?必须有一种方法可以在Rails中使用Javascript模板,并且还可以获得资产指纹识别的好处.
我正在使用的网站使用rails资产管道和application.scss文件来导入和处理不同的css文件.
但是,某些样式表在特定位置使用,对于那些将它们导入全局清单没有意义.但不是这样导入它们需要将variables.scss和可能的mixins.scss导入到工作表本身(因此它们将正确处理),导致最终的css中出现重复的代码.
有没有办法基本告诉预处理器 - "相信我,你看到的变量/ mixin 将由所有处理的时间定义 "?
否则我看不到要避免将每张纸张导入单个清单,这看起来很臃肿.
谢谢.
我有一个样式表,我想在路径中的HTML电子邮件中使用:
app/vendor/assets/stylesheets/inspinia/email_templates/email-styles.css
我使用Premailer-Rails gem来制作电子邮件样式.
在我的mailer.html.erb布局中,我有以下内容:
<%= stylesheet_link_tag "inspinia/email_templates/email-styles.css", media: 'all' %>
Run Code Online (Sandbox Code Playgroud)
但是,在我的Heroku日志中,我收到以下消息:
app[web.1]: [923202d9-b3f1-4b9a-9f42-7b70dcc01d92] Started GET "/stylesheets/inspinia/email_templates/email-styles.css" for 54.167.56.21 at 2016-12-23 23:25:08 +0000
app[web.1]: [923202d9-b3f1-4b9a-9f42-7b70dcc01d92]
2016-12-23T23:25:08.286725+00:00 app[web.1]: [923202d9-b3f1-4b9a-9f42-7b70dcc01d92] ActionController::RoutingError (No route matches [GET] "/stylesheets/inspinia/email_templates/email-styles.css"):
Run Code Online (Sandbox Code Playgroud)
那么如何在生产中找出/指定此样式表的正确路径?